You'd need to start in the view and work backwards. In this case, the code you included is actually the code to list the products, not the navigation. The navigation is in the header file (app/views/includes/public_header.php ), since it's a global item that appears on all pages. Here's the correct code:
<ul class="nav">
<?php $this->get_data('page_nav'); ?>
</ul>
So the next step would be to check the controller, and see where set_data('page_nav') is set. In the index file, look for the "$Template->set_data('page_nav', )" line: it should be on lines 17 and 44 (or very close). Here's the code for one of those sections:
// get category nav
$category_nav = $Categories->create_category_nav($category['name']);
$Template->set_data('page_nav', $category_nav);
So the navigation is created by the $Categories object's "create_category_nav" method, which accepts the argument of the currently active navigation item (in the index.php file, either that's the home page, or the name of the currently active category.)
In order to change this, you'd need to modify the code to call set_data('page_nav') with your own navigation content. If the navigation will stay basically the same, with categories being the main focus, I would find and edit the "create_category_nav" method in the m_categories.php code. If not, perhaps you should create a new method within the main template file (m_template.php) that will return the HTML needed to create the navigation. Once you have it working on the home page, then apply that same change to any other controllers that need the updated navigation.
If you want a dropdown, you'll likely need to modify the HTML, as well as add any CSS/Javascript that you will need. Does that help at all?