【问题标题】:ExpressionEngine: Embed and filterExpressionEngine:嵌入和过滤
【发布时间】:2016-03-26 00:20:42
【问题描述】:

我得到了包含内容的“Data/.List”文件:

<!-- SubList 1 -->
{embed="Element/.ListThumb" e_id="1" e_cat="cat1" e_name="A"}
{embed="Element/.ListThumb" e_id="2" e_cat="cat2" e_name="B"}
{embed="Element/.ListThumb" e_id="3" e_cat="cat3" e_name="C"}
{embed="Element/.ListThumb" e_id="4" e_cat="cat1|cat3" e_name="D"}
<!-- SubList 2 -->
{embed="Element/.ListThumb" e_id="11" e_cat="cat2" e_name="E"}
{embed="Element/.ListThumb" e_id="12" e_cat="cat3" e_name="F"}
{embed="Element/.ListThumb" e_id="13" e_cat="cat1|cat3" e_name="G"}
{embed="Element/.ListThumb" e_id="14" e_cat="cat1|cat2" e_name="H"}

在索引中我想嵌入和呈现过滤后的元素:

{exp:channel:entries channel="categories"}
<section>
    {name}
    {embed="Data/.List" e_cat="{id}"}
</section>
{/exp:channel:entries}

而我想实现:

类别 1: A、D、G、H

类别 2: B、E、H

类别 3: C、D、F、G

我无法更改 Data/.List

那么我怎样才能达到这个结果,或者我应该使用哪个查询来寻找解决方案(尝试过:“ee 条件嵌入”、“静态嵌入”、“过滤器嵌入”)


我正在使用频道轻松添加带有“订单”字段的新类别

频道类别正在使用 id 字段(例如“cat1”)

Data/.List 对我来说就像“行文件”,

所以我会写一个简单的脚本来把它解析成这样的文件

{if embed:cat == "cat1"}
{embed="Element/.ListThumb" e_id="1" e_cat="cat1" e_name="A"}
{embed="Element/.ListThumb" e_id="4" e_cat="cat1|cat3" e_name="D"}
{embed="Element/.ListThumb" e_id="13" e_cat="cat1|cat3" e_name="G"}
...
{/if}

{if embed:cat == "cat2"}
{embed="Element/.ListThumb" e_id="2" e_cat="cat2" e_name="B"}
...

【问题讨论】:

    标签: expressionengine


    【解决方案1】:

    假设索引中的 {id} 是 Data/.List 中指定的 e_id...

    {exp:channel:entries channel="categories"}
      <section>
        {name}
          {if id == 1}
            {embed="Element/.ListThumb" e_id="{id}" e_cat="cat{id}" e_name="A"}
          {if:elseif id == 2}
            {embed="Element/.ListThumb" e_id="{id}" e_cat="cat{id}" e_name="B"}
          {if:elseif id == 3}
            {embed="Element/.ListThumb" e_id="{id}" e_cat="cat{id}" e_name="C"}
          {if:elseif id == 4}
            {embed="Element/.ListThumb" e_id="{id}" e_cat="cat1|cat3" e_name="D"}
          {if:elseif id == 11}
            {embed="Element/.ListThumb" e_id="{id}" e_cat="cat2" e_name="E"}
          {if:elseif id == 12}
            {embed="Core/.ListThumb" e_id="{id}" e_cat="cat3" e_name="F"}
          {if:elseif id == 13}
            {embed="Core/.ListThumb" e_id="{id}" e_cat="cat1|cat3" e_name="G"}
          {if:elseif id == 14}
            {embed="Core/.ListThumb" e_id="{id}" e_cat="cat1|cat2" e_name="H"}
          {/if}
      </section>
    {/exp:channel:entries}
    

    因此绕过您提到的模板无法更改,因为如果不避免或更改它,就不可能交付您想要的东西。

    如果这个答案仍然超出您的要求,我们需要更多关于最终目标和数据结构的信息,因为我认为当前的方法是问题所在,因为它存在太多基本问题......

    为什么不使用关系?

    为什么你有一个名为“类别”的频道而不是使用原生类别?

    您有一个名为 categories 的通道,但是您在模板中对 e_cat 进行了硬编码 - 这个值肯定应该是类别数据的一部分吗?

    为什么不能更改Data/.List?这是导致所有问题的模板!

    是打算在 Element 和 Core 中使用不同的模板组,还是一个错误?

    【讨论】:

    • 我正在使用频道轻松添加带有“订单”字段的新类别频道类别正在使用 id 字段(例如“cat1”)Data/.List 对我来说就像“行文件”,所以我将编写简单的脚本来将其解析为这样的文件 {if embed:cat == "cat1"} {embed="Element/.ListThumb" e_id="1" e_cat="cat1" e_name="A"} {embed ="Element/.ListThumb" e_id="4" e_cat="cat1|cat3" e_name="D"} {embed="Element/.ListThumb" e_id="13" e_cat="cat1|cat3" e_name="G "} ... {/if} {if embed:cat == "cat2"} {embed="Element/.ListThumb" e_id="2" e_cat="cat2" e_name="B"} ...跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多