2012-12-19 58 views
7

我明白外的開箱,我們可以循環或迭代陣列在DWT模板構建模塊(TBBS)具有以下。什麼可以在DWT(佈局)模板構建塊中循環?

<!-- TemplateBeginRepeat name="array_name" --> 
    <!-- template logic --> 
<!-- TemplateEndRepeat --> 

documentation describes pre-defined package items以及how to use them

綜上所述,我們可以使用:

  • Component引用當前組件遍歷組件或組件演示時
  • ComponentTemplate引用當前組件模板在組件演示迭代時(這將是在頁面電平)
  • Field遍歷字段以及多值字段時,參考電流場。
  • FieldPath獲取迭代項目的完整路徑。當在嵌套循環中使用TemplateRepeatIndex時很有用,如The Tridion Practice Cookbook所示。*
  • TemplateRepeatIndex,基於零的循環計數。

我們可以做Fields嵌套循環在組件陣列循環中給定的組件,以及通過遍歷多值字段時,有條件地檢查特定的字段名。

我看過雙查找嵌套DWT的語法(例如@@Image_${TemplateRepeatIndex}@@as described on Yet Another Tridion Blog)。

問題(S)

可以肯定,這些都是項目或數組/集合一個複合模板的Package,右(或者有默認或通過我們的代碼放置)?

我們可不可以「迭代」在包中的單獨項目?

例如,如果我們在Package中有單獨的組件,我們可以使用類似@@Component${TemplateRepeatIndex}@@的東西來「遍歷」它們嗎?

  • 的Component1
  • COMPONENT2
  • Component3

我看看我能參考我見過一個循環內這樣的項目,但一切都表明,以下是不可能的:

<!-- TemplateBeginRepeat name="@@Component${TemplateRepeatIndex}@@" --> 
    <!-- do something with @@Component${TemplateRepeatIndex}@@ --> 
<!-- TemplateEndRepeat --> 

回答

5

基本上是一個DWT模板可以讓你遍歷一個rrays並在包裝上只有一個類型的數組,我們可以把我們自己,這是組件演示陣列(可包含組件模板TCMURIs,也是唯一組成部分TCMURIs)。

通過這個,你可以推動(我稱之爲)包中的虛擬組件陣列,你可以使用它循環,然後通過雙重查找功能,使其工作像循環一組包變量。

例如,你的包裝中三個虛擬TCMURIs一個組件陣推(其可爲全部中醫認爲:0-0-0,這不要緊,他們有什麼價值)。然後,您創建三個名爲:Var_0,Var_1,Var_2的包變量。現在在您的DWT模板中,您可以使用:

<!-- TemplateBeginRepeat name="MyDummyArray" --> 
    @@Var_${TemplateRepeatIndex}@@ 
<!-- TemplateEndRepeat --> 

這將導致您獲得三個包變量的值。

不幸的是,沒有辦法直接創建一個字符串數組或者是一個字段數組,所以對於你想循環的所有東西,你將不得不使用現有的字段數組,或者創建一個「Dummy Component Array 」。

從中我們的確可以得出結論,書面您的例子是不可能的,但是當你在Package推仿真陣列跟他們也一樣,你也可以遍歷這一點,有你想要的東西。

+0

感謝巴特,我已經看到了這個問題的最近變化,並想知道我們能以某種方式「拯救」伯爵無論從任何創建包變量。好東西。 –

0

我無法創建一個虛擬組件陣列中醫:0-0-0。它說項目不存在。是否有任何其他可能性通過包傳遞一個虛設陣列,以使陣列可在DWT成環。