Prestashop 1.6 blocktopmenu如何为每个li添加类

时间:2014-10-27 08:34:41

标签: prestashop-1.6

我正在更改当前默认的Prestashop模板,我需要在模块blocktopmenu中为li定制类。

有人知道如何实现此功能吗?

blocktopmenu.tpl看起来像这样:

{if $MENU != ''}
<!-- Menu -->
<div id="block_top_menu">
    <ul class="menu_top">
        {$MENU}
    </ul>
</div>
<!--/ Menu -->{/if}

在前端,代码如下所示:

<div id="block_top_menu">
<ul class="menu_top">
<li>
<a title="Company" href="link-example">Company</a>
</li>
<li>
<a title="Realizations" href="link-example">Realizations</a>
</li>
<li>
<a title="Questions" href="link-example">Questions</a>
</li>
<li>
<a title="Lets work together" href="link-example">Lets work together</a>
</li>
<li>
<a title="contact" href="link-example">Contact</a>
</li>
</ul>
</div>

这个模块中还有一些其他相关的文件,但它们太长了,无法在此处粘贴代码,所以我认为这是一个知道PrestaShop的smb的问题。

谢谢你的回答。

3 个答案:

答案 0 :(得分:1)

菜单的标记在文件中生成:/modules/blocktopmenu/blocktopmenu.php

makeMenu()函数包含一个开关块,显示用于为菜单中每种类型的链接构建标记的函数。

如果要修改类别的标记,则需要修改generateCategoriesMenu()功能。对于添加到菜单中的CMS页面,看起来getCMSMenuItems()功能就是您需要进行更改的地方。

例如,我修改了generateCategoriesMenu()以向菜单链接添加ID,如下所示:

$html .= '<li id="cat-'. (int)$category['id_category'] .'" >'

答案 1 :(得分:0)

我找到了一个CSS解决方案:

.menu_top li:nth-child(1) { ... }
.menu_top li:nth-child(2) { ... }
.menu_top li:nth-child(3) { ... }

我们ll it不是动态的,但这会在很短的时间内完成。

答案 2 :(得分:0)

这是我解决这个问题的方法

protected function generateCategoriesMenu($categories, $is_children = 0)
{
    $html = '';

    foreach ($categories as $key => $category) {

    if ($category['level_depth'] > 1) {
            $cat = new Category($category['id_category']);
            $link = Tools::HtmlEntitiesUTF8($cat->getLink());
            $class_li_id = $category['id_category'];

        } else {
            $link = $this->context->link->getPageLink('index');
        }

        /* Whenever a category is not active we shouldnt display it to customer */
        if ((bool)$category['active'] === false) {
            continue;
        }

        $rUrl = $_SERVER['REQUEST_URI'];

        if(stristr($rUrl,$category['id_category']) && !stristr($rUrl,'.html')) {

        }

        if($category['level_depth'] == 3) { 
            $html .= '<li'.(($this->page_name == 'category'
                && (int)Tools::getValue('id_category') == (int)$category['id_category']) ? '' : '').' class="addPoint addPoint_'.$category['position'].'" data-point="'.$category['position'].'">';
         } else {

            $html .= "<li class=\"menu_top$class_li_id\">";

         }   
        $html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>';

        if (isset($category['children']) && !empty($category['children'])) {



            $html .= '<ul>';
                $html .= $this->generateCategoriesMenu($category['children'], 1);
            $html .= '</ul>';
        }

        $html .= '</li>';

    }

    return $html;
}

//我添加了这个 - $ class_li_id = $ category [&#39; id_category&#39;];

现在我的顶级菜单中有一个类别为

的类

示例 <li class="menu_top13">