【问题标题】:Expression Engine Template Re-use表达式引擎模板重用
【发布时间】:2012-05-17 09:31:34
【问题描述】:

我正在使用 EE 构建一个网站,并且想知道人们对我的情况有何看法。

基本上,我有 3 个不同的频道,它们的数据相似,查看时需要在同一个模板上显示。所以我有一个新闻、艺术家和产品频道。当我点击任何一个渠道中的项目时,无论如何我都需要在同一模板中显示该数据。

我可以想到两种方法来做到这一点,但想知道是否有人有更优雅的解决方案。

  1. 检查 URL 并使用适当的频道打开我的条目标签,然后在模板中只使用该频道的正确自定义字段。 (但这意味着我需要为每个频道复制代码)。
  2. 使用提供的所有渠道打开我的条目标签,然后将所有 3 个自定义字段放在模板中我需要它们的位置。

谢谢

【问题讨论】:

  • 您能否详细说明“相同模板”和“相似数据”的确切含义?这些通道是否共享一个字段组,或者它们实际上包含不同的字段?是显示相似的单个条目,还是只是页面的周围布局?产品、新闻和事件对我来说听起来就像它们有非常不同类型的内容,因此也有不同的领域。您当前代码的一些示例会有所帮助。

标签: expressionengine


【解决方案1】:

您可以使用 embed variables 将变量传递到您的嵌入中。

还有一点需要注意,在确定要加载的内容时,请使用 Mark Croxton 的 Switchee 和/或 IfElse。高级条件对性能很不利。

【讨论】:

  • 很好,我不知道 Switchee。它看起来也可以很好地解决其他 EE 问题。
【解决方案2】:

通常您会使用embed templates 或使用snippets 来克服这个问题。

对于我的解决方案,我有一个名为 global_embeds 的模板组,它用作我想重用的模板视图的容器。这可能是我的一般页面布局的页眉部分和页脚部分。

然后是一些更琐碎的东西(比如项目显示)的 sn-p。

【讨论】:

  • 感谢 Repox,这也是我要走的路
【解决方案3】:
{exp:channel:entries channel="news|artists|products"}

   ...shared content...

   {if channel_short_name == "news"}
       {my_custom_field_for_news}
   {if:elseif channel_short_name == "artists"}
       {my_custom_field_for_artists}
   {if:elseif channel_short_name == "products"}
       {my_custom_field_for_products}
   {/if}

   ...shared content...

{/exp:channel:entries}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多