表达引擎变量传入模板时遇到一些麻烦。
有一些代码:
//查询:
{exp:channel:entries
channel="static"
}
//在循环中重复字段
{content_matrix}
<div>
{text_cell}
</div>
{image}
{/content_matrix}
//
{/exp:channel:entries}
我想将content_matrix字段与大内部HTML(示例较短)sctructure一起移动到单独的嵌入模板中,以便在其他模板中重复使用。
尝试构建这样的嵌入但它不起作用:
{embed="incl/content_matrix" matrix="{content_matrix}"}
小模板的主体:
{embed:matrix}
<div>
{text_cell}
</div>
{image}
{/embed:matrix}
通过这种方式,如果您传递单个元素(如ID),但不能传递mupltiple元素,则它可以正常工作。 也许它需要通过整个条目。
怎么做?
感谢。
答案 0 :(得分:8)
您是否考虑过使用Stash add-on?
我想你可以用某种分隔符隐藏在html的不同部分之间划分的矩阵内容,然后在嵌入式模板中为分隔符包装a search/replace,并在抓取的存储区周围使用正确的html。
但是,编写一个快速的自定义插件可能不那么痛苦。
答案 1 :(得分:3)
Embed variables传递已解析的输出,而不是标记。所以在你的例子中:
{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}