2

我试图在所有子类别中显示 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}

有任何想法吗?

非常感谢

4

2 回答 2

0

和往常一样,我不会给你一个完整的代码,但我会告诉你怎么做。在 smarty 中,您需要创建一个以父类别的参数编号为参数的函数,在此函数中,您需要使用 Category::getChildren( $id_category );然后在 smarty 中,您只需通过 smarty 函数进行循环。

问候

对不起我的英语。

于 2014-04-05T06:56:58.477 回答
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>

通过在 category.tpl 中为 prestashop 中的当前类别获取同级类别

于 2014-05-07T05:18:37.097 回答