我使用的是一个简单的循环插件,因此我的模板看起来像这样:
{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>
我有没有办法拥有这样的动态变量名?我不是在寻找构建滑块的替代方法,我只是想知道这样的动态变量名是否可行。谢谢!
答案 0 :(得分:1)
我假设Loop Plus(http://devot-ee.com/add-ons/loop-plus)设置了{index}
部分,所以问题是定义{slide_1_title}
的内容......?
假设您有一个带有此定义的输入字段或变量,您所拥有的是正确的,但如果它不起作用,则表示存在解析顺序问题。
假设您提供的代码包含在{exp:channel:entries}
标记对中,EE会尝试首先解析变量,因此会看到:{slide_{index}_title}
不存在。然后{exp:loop_plus}
加载项将解析它,将其转换为{slide_1_title}
(但是为了通道:条目已经尝试解析它),这最终输出到模板。
所以你想要确保的是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参数 - 您不会在特定的附加组件下找到它。通过添加参数,这意味着该子标记将在其父标记之前被解析。
答案 1 :(得分:0)
您可以这样做的一种方法是在模板中声明preload_replace变量,并在自定义字段名称中使用它。
类似于:
{preload_replace:my_var_prefix="whatever"}
然后在你的循环中,你可以使用:
{slide_{my_var_prefix}_title}