ExpressionEngine显示循环外的通道内容

时间:2011-02-21 02:31:23

标签: expressionengine

我知道这听起来很疯狂,但我需要在表达式引擎通道模块的循环外部显示一些帖子信息。这可能吗?

4 个答案:

答案 0 :(得分:1)

您可以使用EE的SQL查询模板标记(如果您知道,或者可以访问数据库表名并知道在数据库中查找的内容):

http://expressionengine.com/user_guide/modules/query/index.html

基本上,您只输出您需要的内容 - 它不必属于某个频道或任何特定内容。一个问题是,您必须了解SQL语法的基础知识,但如果您对它有一个小的工作知识,那么您可以使用它做很多其他事情。

答案 1 :(得分:0)

如果您不热衷于SQL,则只需在您正在处理的模板中嵌入模板即可。这是一个简单的示例,假设您正在编辑名为index的模板组中的meta'news'模板:

index模板内容:

{exp:channel:entries channel="news"}
  <div class="entry">
    <h1>{title}</h1>
    <div class="content">{body}</div>
    {embed="news/meta" this_entry_id="{entry_id}"}
  </div>
{/exp:channel:entries}

meta模板内容:

{exp:channel:entries channel="news" dynamic="no" limit="1" entry_id="{embed:this_entry_id}"}
  <div class="meta">
    <p>{entry_date}</p>
    <p>{author}</p>
  </div>
{/exp:channel:entries}

如您所见,index模板正在嵌入meta模板。请注意,我们将参数传递给meta模板,以便它知道要打印信息的条目ID。如果您不熟悉EE的模板嵌入功能,可以在EE docs中阅读更多相关信息。在其他模板中嵌入模板是多次访问{exp:channel:entries}循环的好方法。

答案 2 :(得分:0)

有一个名为MX Jumper的附加组件,允许您从条目循环内“设置”变量,然后在模板的其他位置“获取”它(在HTML循环之前或之后无关紧要因为它解析更高版本)。

或者,现在风靡的方法是使用附加Stash来存储您需要使用的任何和所有元素作为您设置然后获取的存储变量 - 与上面类似,除了你曾经设置它们,让它们必须在稍后的解析阶段发生。这种方法的优点是stash将存储“set”变量以便在用户或站点级别重用,并且您可以确定到期时间 - 这样可以获得更好的性能。当您使用“模板部分”思维模式广泛应用此功能时,您可以使用存储区存储所有内容,然后将它们调用为少量的包装模板。这使得可以使用存储来设置例如你的条目标题,然后在包装器模板中三次单独获取而不需要任何额外的负载 - 模板中不需要单独的循环 - 一个循环来设置变量,然后您可以根据需要在模板中调用该变量 - 这有点像在运行中创建全局变量。

答案 3 :(得分:0)

我还建议查看Stash