【问题标题】:Blank Output using Stash使用 Stash 的空白输出
【发布时间】:2012-11-11 16:17:31
【问题描述】:

我终于给 Stash(EE 2.5.3 上的 2.3.5 版本)一个项目,看看它是否像大家说的一样好。

我已尽可能多地关注文档,并在页面标题处设置了如下存储:

{exp:channel:entries channel="homepage" limit="1" dynamic="no"}
{exp:stash:set_list name="homepage"}
    {stash:cf_homepage_main_intro}{cf_homepage_main_intro}{/stash:cf_homepage_main_intro}
    {stash:cf_homepage_strapline}{cf_homepage_strapline}{/stash:cf_homepage_strapline}

    {cf_homepage_contact_info}
        {stash:mx_pinterest}{mx_pinterest}{/stash:mx_pinterest}
        {stash:mx_facebook}{mx_facebook}{/stash:mx_facebook}
        {stash:mx_twitter}{mx_twitter}{/stash:mx_twitter}
        {stash:mx_tel}{mx_tel}{/stash:mx_tel}
        {stash:mx_email}{mx_email}{/stash:mx_email}
        {stash:mx_address}{mx_address}{/stash:mx_address}
    {/cf_homepage_contact_info}
{/exp:stash:set_list}
{/exp:channel:entries}

然后在模板的其余部分中,我尝试按如下方式调用这些值:

{exp:stash:homepage:mx_tel}

但是,我什么也没得到。

如果我直接输出字段名称,它们工作正常,我也打开了调试,我可以看到 stash 设置值的点,一切看起来都很好,但是调试器报告以下内容:

*Stash: 已检索主页:mx_email with value*

我有点不知道从这里去哪里......有人有任何指示吗?

谢谢,

卡尔

【问题讨论】:

  • 好的 - 我现在对其进行了调整以使用 {exp:stash:set} 和 {exp:stash:get},但仍然没有运气。 {exp:stash:set name="cf_homepage_main_intro"}{cf_homepage_main_intro}{/exp:stash:set} 然后是 {exp:stash:cf_homepage_main_intro}

标签: expressionengine


【解决方案1】:

啊!我在您的问题中看到您正在尝试从同一模板中调用变量。因此,您遇到了解析顺序问题。您需要将process="end" 参数添加到您的exp:stash:get_listexp:stash:get 标记中。并阅读我的article about template partials

【讨论】:

    【解决方案2】:

    嗯,我想你的语法可能有误。试试:

    {exp:stash:get_list name="homepage"}
      Telephone: {mx_tel}
    {/exp:stash:get_list}
    

    另外,如果您只检索一项,我会跳过使用 set_list 并只使用 set 作为单独的变量。这两件事都有效,但我认为它更直观..?

    【讨论】:

    • 我按照github.com/croxton/Stash/tree/dev 上的说明操作,如上所示。
    • 就语法而言,上述答案是正确的,即使在开发中也是如此。快捷语法不适用于列表。不过,继续使用 set_list 并不是一个坏主意;它可以让你保持干燥。
    【解决方案3】:

    使用 set_list、append_list 和 prepend_list 时需要使用 Stash 的 get_list 标签对。

    您使用的是一个 Stash 快捷方式,它与 stash:get 相同,但根据文档与 stash:get_list 不同。

    使用 get_list:

    https://github.com/croxton/Stash/tree/dev#expstashget_list-tag-pair

    没有得到快捷方式:

    https://github.com/croxton/Stash/tree/dev#shortcut-tags(用于设置/获取)

    另外,您使用的快捷方式实际上是在使用context

    {exp:stash:your_context:your_var_name}
    

    注意上面标签中的“your_context”

    【讨论】:

    • 所以,我现在将标题中的逻辑更改为以下格式: {exp:stash:set name="cf_homepage_main_intro"}{cf_homepage_main_intro}{/exp:stash:set} 然后使用{exp:stash:cf_homepage_main_intro} 仍然无法正常工作。
    • 我认为您仍然应该使用 set_list 并将您的 get 更改为 get_list ;正如下面提到的 aelvan。
    【解决方案4】:

    问题是我试图在同一个模板中调用 {get},因此需要在标记之后添加 process='end'。

    另外,仅供参考 - 这是我正在使用的:

    {exp:stash:set name="cf_homepage_main_intro"}{cf_homepage_main_intro}{/exp:stash:set}
    

    然后将其取出(使用快捷方式标签):

    {exp:stash:cf_homepage_main_intro process='end'}
    

    任务完成!

    【讨论】:

      【解决方案5】:

      {exp:stash:set_list name="homepage"} {exp:channel:entries channel="homepage" limit="1" dynamic="no"}

      stash 在循环中是否重要,就像在解析顺序的东西中一样,stash 不是先出现的吗?

      【讨论】:

      • 无论哪种方式都没有任何区别:(
      • 这应该是对问题的评论,而不是单独的“答案”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多