表达式引擎:将条目拆分为组

时间:2011-04-08 11:59:12

标签: content-management-system expressionengine

快速提问:如何将给定频道的所有条目输出为4个组,如下所示:

<div class="entry_group">
    <div class="entry" id="1"><span>{title}</span></div>
    <div class="entry" id="2"><span>{title}</span></div>
    <div class="entry" id="3"><span>{title}</span></div>
    <div class="entry" id="4"><span>{title}</span></div>
</div>
<div class="entry_group">
    <div class="entry" id="5"><span>{title}</span></div>
    <div class="entry" id="6"><span>{title}</span></div>
    <div class="entry" id="7"><span>{title}</span></div>
    <div class="entry" id="8"><span>{title}</span></div>
</div>

提前致谢!

3 个答案:

答案 0 :(得分:3)

您可以尝试使用Modulo Operator plugin以任意数量的条目实现此目的。像这样:

{if count == "1"}
    <div class="entry_group">
{/if}
{if '{exp:modulo dividend="{count}" divisor="4"}' == 0}
    </div>
    <div class="entry_group">
{/if}
        <div class="entry" id="{count}"><span>{title}</span></div>
{if count == total_results}
    </div>
{/if}

该插件仅适用于EE1,但将插件从EE1转换为EE2是轻而易举的。

答案 1 :(得分:1)

我在ExpressionEngine论坛上找到了另一个更简单的解决方案;虽然相当基础但我认为它应该很容易实现预期的目标:http://expressionengine.com/forums/viewthread/197240/#927740

它的主旨涉及使用{switch}变量来选择在每n组条目后插入关闭和打开标记对,具体取决于您在交换机中留下的空白点数。在您的情况下,示例将是这样的:

<div class="entry_group">
{exp:channel:entries}
    <div class="entry" id="{switch='1|2|3|4'}"><span>{title}</span></div>
    {switch='|||</div><div class="entry_group">'}
{exp:channel:entries}
</div>

divclass=entry_group之间的空格不应该导致任何问题,但如果确实如此,您可能希望使用CSS来控制容器的属性,而无需在其上放置类(例如.entry_list>div{....entry_list>div .entry{...

答案 2 :(得分:0)

我确实找到了semi-solution on the Expression Engine forums,但它要求对条目总数进行限制。