表达式引擎-面包屑问题


Expression Engine - Breadcrumbs problem!

好的,我已经设置了我的面包屑试验使用IF段和IF category_id语句。原因是我有不同的产品链接到2-3个类别等等。

我已经完成了整个试验,所有工作都很好(虽然有很多编码!)

然而,一个类别我有一个大问题,我已经尝试了几个小时来纠正它,但不能,基本上这个类别是在2个父母和2个孩子类别,在一个类别组下…所有其他的只有一个父节点和一个子节点,所以我的代码工作得很好。

我已经尝试了所有方法,但是它还是出现

玩具>>本10>>儿童>>本10

它重复了类别和父类,因为条目在一个组中都在这两个类别中…所以我试着在主if语句之外创建两个独立的if语句,像这样:

我的代码是:
{if segment_2 == "view"}
    {exp:channel:entries channel="toys"}
    {categories}
    {if parent_id == "25"}
    {if category_id == "31"}
    <li>
    <a href="(URL TO CATEGORY)">Toys</a>
    </li>
    <li>
    <a href="{path='toys/list'}">{category_name}</a>
    </li>
    {/if}
    {/if}
    {/categories}
    {/exp:channel:entries}
{/if}
{if segment_2 == "view"}
    {exp:channel:entries channel="toys"}
    {categories}
    {if parent_id == "26"}
    {if category_id == "40"}
    <li>
    <a href="(URL TO CATEGORY)">Children</a>
    </li>
    <li>
    <a href="{path='toys/list'}">{category_name}</a>
    </li>
    {/if}
    {/if}
    {/categories}
    {/exp:channel:entries}
{/if}

我假设定义了特定的父元素和cat id,这将只显示一个…

解决方案吗?

为了调试的目的,理解和"可视化"您正在处理的数据的结构通常是有帮助的。

要了解您试图为面包屑跟踪整理的类别,请使用以下代码输出每个类别的parent_idcategory_id:

{exp:channel:entries channel="toys"}
    {categories}
        <strong>{category_name}</strong> [{parent_id}, {category_id}]<br />
    {/categories}
{/exp:channel:entries}

输出如下:

Toys [0, 1]       // Parent Category
Children [1, 2]   // Child Category
有了这些信息,你就可以修改你的条件面包屑来处理属于两个或多个类别的产品:
{exp:channel:entries channel="toys"}
    {categories limit="2"}    
        {if parent_id == "0"}
            <!-- Show the Parent Category -->
            <li><a href="{path=toys/list}">{category_name}</a></li>
        {/if}
        {if parent_id != "0"}
            <!-- Show the Child Category -->
            <li><a href="{path=toys/list}">{category_name}</a></li>
        {/if}
    {/categories}
{/exp:channel:entries}

可以在条件中使用AND语句吗?类似的{if parent_id == "26" && category_id == "40"}

只是猜测。这意味着你只做一次检查,而且两个条件都必须为真。