【问题标题】:Expression Engine - For entrys listing, only show last category in tree?表达式引擎 - 对于条目列表,只显示树中的最后一个类别?
【发布时间】:2011-11-22 09:49:44
【问题描述】:

我有一个这样的类别结构:

cat1
cat2
-catA
-catB
cat3

对于一个条目列表,我用这个显示每个条目的类别名称: {categories show_group=“1”}{category_name}{/categories}

当有多个类别名称时,如何将类别名称限制为仅显示树中的最后一个?例如,如果一个条目是“cat2”和“catA”的一部分,我只想显示“catA”。

谢谢

更新 - 我尝试了以下方法,但 total_results 返回条目数,而不是每个条目的类别数。

{exp:channel:entries channel="news|blog" category="<?php echo $cat_id ?>" orderby="date" sort="desc" disable="member_data|pagination" dynamic="no"}
    {categories show_group="1"}{if count == total_results}{category_name}{/if}{/categories}     
{/exp:channel:entries}

【问题讨论】:

    标签: categories expressionengine


    【解决方案1】:

    有效的方法是编写一个 SQL 查询来准确获取您想要的值。低效但简单的方法是隐藏除最后一个以外的所有结果。

    {!-- requires PHP parsed on output --}
    <?php $lastCat = ""; ?>
    {categories}
        <?php $lastCat = "{category_name}"; ?>
    {/categories}
    <?php echo $lastCat; ?>
    

    原来 {count} 和 {total_results} 在 {categories} 标记对中不受支持。你可以用PHP来代替。

    低效是否足够好取决于您拥有多少类别以及缓存页面的效率。

    【讨论】:

    • 在这种情况下,效率低下是可以的。我尝试了您的代码,所有类别都消失了。购买打印{total_results}我可以看到数字是条目数,而不是每个条目的类别数。我已经用我的代码更新了问题。谢谢
    • 我尝试将 {category_name} 移动到嵌入式模板,但它不起作用。
    • 要在嵌入中执行此操作,您将使用 {exp:channel:categories},但这会产生很多开销。我上面的代码示例有效;它位于 {exp:channel:entries} 标记内。只要确保在输出时打开 PHP 解析即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多