我正在更改当前默认的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的问题。
谢谢你的回答。
答案 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">