1

我在作为参数传递时无法解析全局变量的问题。

{exp:channel:entries    
    disable="categories|category_fields|member_data|pagination|trackbacks"
    dynamic="no"
    entry_id="{structure:child_ids_for:21}"
}

(0.012500 / 3.36MB) 标签:{exp:channel:entries disable="categories|category_fields|member_data|pagination|trackbacks" dynamic="no" entry_id="{structure:child_ids_for:21}" }

使用和不使用 parse="inward" 都会产生相同的结果

但是,这可以正常工作并获取我需要的数据

{exp:channel:entries    
    disable="categories|category_fields|member_data|pagination|trackbacks"
    dynamic="no"
    entry_id="{exp:query sql='SELECT exp_structure.entry_id, 
            exp_structure.parent_id, 
            exp_structure.lft
            FROM exp_structure
            WHERE parent_id = 21
            ORDER BY exp_structure.lft ASC'}{entry_id}|{/exp:query}"
    parse="inward"
}

但是,如果我添加一个全局变量 author_id="{logged_in_member_id}" 它将无法工作,如果我将该值硬编码为 1 那么它会起作用。

关于这里可能发生什么的任何想法?

4

2 回答 2

1

您可以通过使用Stash来避免嵌入的开销。它具有非常有用的能力,可以让您明确说明不同代码块的首选解析顺序。在这种情况下,您要做的第一件事是通过 存储这两个变量{exp:stash:set},然后您可以通过在第二个代码块中检索它们{exp:stash:get}。魔术位是解析优先级标签;因为第一项的优先级为 10,它将首先执行,这确保了 var 可用作第二个{exp:stash:parse}标签中的通道条目参数。

{exp:stash:parse priority="10" process="end"}
    {exp:stash:set}
        {stash:structure_ids}{structure:sibling_ids}{/stash:structure_ids}
        {stash:logged_in_member}{logged_in_member_id}{/stash:logged_in_member}
    {/exp:stash:set}
{/exp:stash:parse}

{exp:stash:parse priority="20" process="end"}
    {exp:channel:entries
        disable="categories|category_fields|member_data|pagination|trackbacks"
        dynamic="no"
        entry_id="{exp:stash:get name='structure_ids'}"
        author_id="{exp:stash:get name='logged_in_member'}"
        parse="inward"
    }
    ...
    {/exp:channel:entries}
{/exp:stash:parse}
于 2012-11-14T15:49:02.927 回答
0

我不能说结构的全局变量,但{logged_in_member_id}它是一个后期解析的全局变量,这意味着你不能在模块标签参数中使用它。我只能假设结构变量也是如此。

可以在参数中使用CURRENT_USER常量(文档)。author_id

不幸的是,您的{structure:child_ids_for:21}问题的解决方案是将其作为嵌入变量传递,并将您的 Channel Entries 循环放入嵌入中。(我说不幸的是因为嵌入确实会产生一些开销。)

注意:parse="inward"对模块标签对没有影响——它们总是向内解析。它只影响插件标签对。

于 2012-11-14T01:50:23.923 回答