2012-11-13 81 views
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:信道:條目禁用= 「類別| category_fields | member_data |分頁|引用通告」 動態= 「否」 entry_id = 「{結構:child_ids_for:21}」 }

時,會產生相同的結果與不解析=「向內」

但是這工作得很好,並抓住我需要

{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" 
} 

的數據,但是,那麼如果我加入一個全球性的variabl e author_id =「{logged_in_member_id}」它無法工作,如果我將該值硬編碼爲1,那麼它就起作用。

對這裏會發生什麼有什麼想法?

回答

0

我不會說Structure的全局變量,但{logged_in_member_id}是一個後分析的全局變量,這意味着您不能在模塊標記參數中使用它。我只能假設結構變量也是如此。

可以author_id參數雖然(docs)使用CURRENT_USER不變。

不幸的是,您的{structure:child_ids_for:21}問題的解決方案是將其作爲embed variable傳遞給您,並將您的Channel Entries循環嵌入到其中。 (我說,不幸的是,因爲嵌入視頻做招致一些開銷。)

一個注意:parse="inward"對模塊標記對沒有影響 - 他們總是解析向內。它隻影響插件標籤對。

+0

謝謝德里克,試圖避免嵌入,但似乎是這裏的解決方案。感謝您的意見,非常感謝。 – greendesigned

1

您可以通過使用Stash來避免嵌入的開銷。它具有非常有用的功能,可以讓您明確聲明不同代碼塊的首選解析順序。在這種情況下,您要做的第一件事是通過{exp:stash:set}來存儲這兩個變量,然後您可以通過{exp:stash:get}在第二塊代碼中檢索它們。魔術比特是解析優先級標籤;因爲第一個項目的優先級爲10,它將首先執行,這確保了變量可用作第二個{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}