ExpressionEngine:嵌入和过滤

时间:2015-12-19 11:14:56

标签: expressionengine

我收到了包含内容的“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}

我想实现:

组别: A,D,G,H

类别2: B,E,H

类别3: C,D,F,G

我无法更改数据/ .List

那么我怎样才能实现这个结果或者我应该寻找哪个查询解决方案(尝试过:“ee conditional embed”,“static embed”,“filter embed”)

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

频道类别使用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"}
...

1 个答案:

答案 0 :(得分:0)

假设索引中的{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}

因此绕过您提到的模板无法更改,因为无法避免或更改它而无法提供您想要的内容。

如果这个答案仍然不符合您的要求,我们需要更多关于最终目标和数据结构的信息,因为我认为目前的方法是问题,因为它有太多基本问题...... / p>

为什么不使用关系?

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

你有一个名为类别的频道,但是你很难对模板中的e_cat进行编码 - 这个值肯定应该是类别数据的一部分吗?

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

是否打算将不同的模板组与Element和Core一起使用,或者这是一个错误?