0

我正在使用一个简单的循环插件,因此我的模板如下所示:

{exp:loop_plus start="1" end="4" increment="1"}
<h3>{slide_{index}_title}</h3>
{/exp:loop_plus}

但是,我最终得到以下输出:

<h3>{slide_1_title}</h3>
<h3>{slide_2_title}</h3>
<h3>{slide_3_title}</h3>
<h3>{slide_4_title}</h3>

有什么办法可以让我拥有这样的动态变量名?我不是在寻找构建滑块的替代方法,我只是想知道这样的动态变量名称是否可行。谢谢!

4

2 回答 2

1

我假设 Loop Plus ( http://devot-ee.com/add-ons/loop-plus ) 设置了这个{index}部分,所以问题是什么定义了{slide_1_title}......?

假设您有一个定义了这个的输入字段或变量,那么您所拥有的是正确的,但如果它不起作用,则意味着存在解析顺序问题。

假设您提供的代码被包装在一个{exp:channel:entries}标签对中,EE 会首先尝试解析变量,所以会看到:{slide_{index}_title}which doesn't exist。然后{exp:loop_plus}插件将解析它,将其转换为{slide_1_title}(但迟到,因为 channel:entries 已经尝试解析它),这是最终输出到模板的内容。

因此,您要确保 EE 解析{exp:loop_plus}之前{exp:channel:entries},使用parse="inward"标记执行此操作:

{exp:loop_plus start="1" end="4" increment="1" parse="inward"}
    <h3>{slide_{index}_title}</h3>
{/exp:loop_plus}

这是 EE 用于控制解析顺序的全局 EE 参数 - 您不会在特定的附加组件下找到它的文档。通过添加参数,这意味着这个子标签将在它的父标签之前被解析。

于 2013-05-21T14:30:46.770 回答
0

一种方法是在模板中声明一个 preload_replace 变量并在自定义字段名称中使用它。

所以像:

 {preload_replace:my_var_prefix="whatever"}

然后在你的循环中,你可以使用:

 {slide_{my_var_prefix}_title}
于 2013-05-20T23:30:58.013 回答