PrestaShop的菜单可以直接写在themes/your_theme/下的header.tpl中,或者使用模块(modules)来添加,最简单的模块可以只包含一些固定写入的菜单代码,举个例子,有个模块名为tmheaderlinks,顾名思义就是在header区域加一个定制化的导航栏。

该模块放在modules/tmheaderlinks目录下,主要包括如下文件:

config.xml  –  配置文件
tmheaderlinks.php  –  主程序
tmheaderlinks.html模板文件
语言文件

在模板文件中,我们直接写入要显示的项目的代码,并且为激活的菜单项目添加一个名为active的class,分三种情况考虑。

1.  要链接的文件是根目录下的php文件,例如order.php(购物车)

<a href="{$link->getPageLink('order.php')}"{if $page_name == 'order'} class="active"{/if}>{l s='CART' mod='tmheaderlinks'}</a>

getPageLink( '文件名称' )这个函数来插入链接,这里我们不要硬编码url,以方便以后移植程序。$page_name记录的脚本名称,当脚本名称等于order时,说明选中了order.php,高亮显示这个项目,通过名为active的class实现。

2.  连接到产品目录页面

<a href="{$link->getCategoryLink(5,'collection')}"{if $smarty.get.id_category == 5} class="active"{/if}>{l s='COLLECTION' mod='tmheaderlinks'}</a>

使用getCategoryLink( '目录id',‘目录别名’ )函数来实现,目录的别名是必填的,否则链接可以到达正确的位置,但使用friendly url时会出现两个地址指向一个页面的情况。

$smarty.get.id_category给出当前目录的id,用这个来判断菜单是否激活。

3. 链接到由CMS创建的页面

在Prestaship 1.4中的Tools下有个CMS工具,可以创建静态页面,默认的用法是将blockcms模块来显示某个目录下所有的静态页面,本来这是一个很有用的工具,但我们有时并不想把所有静态页面显示在一个导航栏里,那么单独引用某个页面就是最佳方式,可我们不能硬编码一个url进去,会给以后移植带来麻烦,那么下面这个函数就比较有用。

<a href="{$link->getCMSLink(4,'about-us')}"{if $smarty.get.id_cms == 4} class="active"{/if}>{l s='ABOUT US' mod='tmheaderlinks'}</a>

使用getCMSLink('cms页面id',‘cms页面别名’)来插入cms页面链接,并且用$smarty.get.id_cms是否等于菜单的id来判断菜单项是否被激活。

通过上述三个函数,就可以再prestashop下做一个混合菜单,菜单的灵活性就可以满足我们的需求了。比如About Us、FAQ,都可以轻松加到导航中。

Prestashop的文档比较少,只找到这个,还算是能参考下

http://doc.prestashop.com/dashboard.action