1

在模板中传递表达式引擎变量时遇到一些问题。

有一段代码:

// 询问:

{exp:channel:entries
  channel="static"
}

// 在循环中重复字段

{content_matrix}
   <div>
      {text_cell}
   </div>    
   {image}
{/content_matrix}

//

{/exp:channel:entries}

我想将具有大内部 HTML(示例较短)结构的 content_matrix 字段移动到单独的嵌入模板中,以便在其他模板中重用。

试图构建这样的嵌入,但它不起作用:

{embed="incl/content_matrix" matrix="{content_matrix}"}

和较小模板的主体:

 {embed:matrix}
   <div>
      {text_cell}
   </div>    
   {image}
 {/embed:matrix}

这样,如果您传递单个元素(如 ID),它就可以工作,但不能传递多个元素。也许它需要通过整个条目。

怎么做?

谢谢。

4

2 回答 2

8

您是否考虑过使用Stash 插件

我想您可以使用某种分隔符将矩阵内容分隔在 html 的不同部分之间,然后在嵌入的模板中使用正确的 html 在抓取的存储周围包装分隔符的搜索/替换

不过,编写一个快速的自定义插件可能不会那么痛苦。

于 2012-10-01T18:19:13.517 回答
3

嵌入变量传递解析的输出,而不是标签。所以在你的例子中:

{embed="incl/content_matrix" matrix="{content_matrix}"}

您实际传递的matrix参数是该特定条目中数据的完整 HTML 表格输出(因为 Matrix 字段在用作单个标记时输出表格)。

我认为您真正想要用来防止重复自己的是Snippet。所以只需制作一个包含以下内容的片段:

{content_matrix}
   <div>
      {text_cell}
   </div>    
   {image}
{/content_matrix}

并将其另存为matrix_loop。然后将其包含在您的 Channel Entries 循环中,如下所示:

{matrix_loop}
于 2012-09-24T19:52:50.917 回答