1

我想找出一種方法來呈現基於模板變量(tv)值的特定tpl的資源。這裏是我的用例:ModX revo 2.2x:如何使用TV值設置tpl?

我已經設置了一個基本網站的主頁和博客(我使用的文章加載項)的modx安裝。我想在主頁上的文章容器外顯示博文。根據我的經驗,最簡單的方法是使用getResource。但是,對於這個特定的項目,我想根據每個結果的電視值更改getResources結果的tpl。

模板變量可以看作是「後期類型」。如果你選擇「文本」,它會有tplA,如果你選擇「多媒體」,它會有tplB等...

現在基於我的研究,你將使用屬性'tplCondition'和'conditionalTpls'來實現這個您getResources調用,這樣的事情:

[[getResources? 
    &tplCondition=`tv.blogPostType` 
    &conditionalTpls=`{"1":"tplA","2":"tplB","3":"tplC"}` 
    &tpl=`defaultTpl` 
]] 

的問題是,這似乎並沒有與模板變量工作:(它甚至說,它僅使用資源領域的文檔.....這是一個真正的無賴,因爲我不知道如果不這樣做,否則基於我有限的知識,你也許可以創建一個片段或這樣做,但我不知道。有沒有人有這個問題的優雅解決方案?

來總結一下我嘗試做的,再次:

-assign「後鍵入」通過模板變量博客我的文章容器的帖子。

- 使用模板變量值根據該值設置特定的tpl。

任何幫助,高度讚賞。謝謝

編輯:好的我得到了在論壇上的答覆,並遇到了「解決方案」。

你可以用css來完成這個任務。在TPL,你這樣做:

<article class="[[+tv.post-type]]">....</article> 

這將輸出在電視與實際使用元素類選擇的職位類型,然後就可以用CSS來給基於電視輸出不同的外觀。它其實很簡單,我有點尷尬,我以前沒有看到它。在我的情況下,它100%解決了我的問題,但是如果你需要改變html即時通訊猜測JavaScript將需要參與或另一種方法與PHP。只要有人需要它就留在這裏!

回答

0

如果您需要對html進行重大更改,您仍然可以用css解決它,如果您有一個很好的標記。但是,如果這還不夠,我會解決它通過使用一個tpl的getresources調用,並讓該tpl處理切換。如果你可以有你的電視輸出的價值象徵着tpl的名稱應該在每種情況下使用,你的tpl只需要這個: [[$[[+tv.yourtv]]]] 你的電視將被評估第一,然後它將被處理爲一個塊。這樣你就不需要討厭的開關或if子句。

這是你最終想要不同的tpls,而不僅僅是需要改變標準tpl的一小部分,在這種情況下,你仍然可以使用這個tecnique!

+0

是的,這也是一種有效的技術。謝謝你的添加。我將不得不記住你的未來,因爲正如你所說,它適用於所有場景。 – user2251230

0

有條件的模板似乎與pdoResources(pdoTools的一部分)正常工作。 (我必須在tplCondition的電視機前放上「電視」,但不能在其他電視機上播放)

0

James是正確的。

[[pdoResources? 
    &includeTVs=`blogPostType` 
    &tplCondition=`tv.blogPostType` 
    &conditionalTpls=`{"1":"tplA","2":"tplB","3":"tplC"}` 
    &tpl=`defaultTpl` 
]]