Nat*_*onn 4 expressionengine categories expressionengine-stash
我希望有一种方法可以将Stash Context与Categories结合使用,例如:
{exp:channel:entries channel="channel-name" dynamic="no" disable="member_data|pagination"}
{exp:stash:append_list name='list' parse_tags="yes" save="yes" scope="site" context='{categories}{category_name}{/categories}'}
{stash:this_title}{title}{/stash:this_title}
{categories}
{stash:this_category_name}
{category_name}
{/stash:this_category_name}
{/categories}
{/exp:stash:append_list}
{/exp:channel:entries}
{exp:stash:get_list name="list" parse_tags="yes" parse_conditionals="yes" context="{this_category_name}"}
<div>
all my stash variables and html etc.
</div>
{/exp:stash:get_list}
Run Code Online (Sandbox Code Playgroud)
我知道我可以执行以下操作,这意味着每次添加类别时都需要编辑模板.
{exp:stash:get_list name="list" parse_tags="yes" parse_conditionals="yes" context="category1"}
<div>
all my stash variables and html etc.
</div>
{/exp:stash:get_list}
{exp:stash:get_list name="list" parse_tags="yes" parse_conditionals="yes" context="category2"}
<div>
all my stash variables and html etc.
</div>
{/exp:stash:get_list}
Run Code Online (Sandbox Code Playgroud)
话虽如此,我的问题是:无论如何动态使用Stash上下文和ExpressionEngine类别?
您遇到的问题归结为exp:channel:entries循环运行多次迭代,然后使用Stash设置值的关联数组.一旦channel:entries竞争,你有一个{this_category_name}变量数组,所以它实际上从未像常规变量那样设置.
所以你真的有几个选择:
这是我的代码,我已经测试过,并且可以确认我的工作100%.1警告,如果您的条目有多个类别,这将打破.我相信这将使用迭代中的第一个类别集.
注意,请务必使用process ="end"参数来操作解析顺序,否则最终会出现空白屏幕.
{exp:channel:entries channel="your-channel" dynamic="no" disable="member_data|pagination"}
{exp:stash:append_list name='list' parse_tags="yes" save="yes" scope="site" context='{categories}{category_name}{/categories}'}
{stash:this_title}{title}{/stash:this_title}
{categories}
{stash:this_category_name}
{category_name}
{/stash:this_category_name}
{exp:stash:set name="test_var" type="snippet"}{category_name}{/exp:stash:set}
{/categories}
{/exp:stash:append_list}
{/exp:channel:entries}
{exp:stash:parse process="end"}
{exp:stash:get_list name="list" parse_tags="yes" parse_conditionals="yes" context="{test_var}" process="end"}
<div>
all my stash variables and html etc.
</div>
{/exp:stash:get_list}
{/exp:stash:parse}
Run Code Online (Sandbox Code Playgroud)
我想补充一点,可能有更好的方法来解决你的问题.你想要做的事情的逻辑并没有真正加起来.我只是试图回答你关于Stash的问题,如果它可以做到这一点而不是最好的方式.