我试图在所有子类别中显示prestashop类别的子类别菜单。默认情况下,您只能在类别中看到子类别菜单,但是您无法看到子类别的“兄弟”子类别。
我想我只需要让这段代码在子类别中工作,因为这段代码在一个类别中运作良好:
{foreach from=$subcategories item=subcategory}
<li > <a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}"
class="cat_name">{$subcategory.name|escape:'htmlall':'UTF-8'}</a>
</li> {/foreach}
有什么想法吗?
非常感谢
答案 0 :(得分:0)
一如既往,我不会给你一个完整的代码,但我告诉你该怎么做。 在smarty中你需要创建一个以父类别为参数的函数, 在这个函数中你需要使用Category :: getChildren($ id_category);然后在smarty中你只需要通过smarty函数循环。
问候
抱歉我的英语。
答案 1 :(得分:0)
要开始,我会在/ override / controllers /中创建一个覆盖文件,命名为 CategoryController.php
并添加:
<?php
class CategoryController extends CategoryControllerCore
{
public function displayContent()
{
// Get the global smarty object.
global $smarty;
// Get current category's parent.
$parent_category = new Category($this->category->id_parent, self::$cookie->id_lang);
// Get parent category's subcategories (which is current category's siblings, including it self).
$category_siblings = $parent_category->getSubCategories((int)self::$cookie->id_lang)
/* Assign your siblings array to smarty. */
$smarty->assign(
array(
"category_siblings" => $category_siblings
)
);
/* This we run the normal displayContent, but pass the siblings array to
category.tpl */
parent::displayContent();
}
}
?>
在 product-list.tpl 文件中:
<ul>
{foreach from=$category_siblings item=elemento}
<a href="{$link->getCategoryLink($elemento.id_category, $elemento.link_rewrite)|escape:'htmlall':'UTF-8'}" class="cat_name"> <li {if $category->id == $elemento.id_category}class="active"{/if}> {$elemento.name} </li> </a>
{/foreach}
</ul>
通过 Get sibling categories in category.tpl for the current category in prestashop