2014-01-15 90 views
1

我有這樣的代碼模板輸出修正不工作

[[+isShowMore:is=`1`:then=`show more`:else=`no`]] 

在打印no。但它應該顯示show more作爲佔位符isShowMore設置爲1通過片段中的這行代碼。

$modx->setPlaceHolder('isShowMore', 1); 

由此代碼

[[+isShowMore]] 
[[+isShowMore:is=`1`:then=`show more`:else=`no`]] 

[[+isShowMore]]正在打印1還檢查但輸出改性劑的線表示no

任何線索這裏有什麼問題?我正在使用modx革命2.2.8傳統。

類似的問題也發佈在modx論壇。 http://forums.modx.com/thread/85150/output-filter-on-placeholder-problem#dis-post-469615

回答

-1

給EQ調節劑一試:

[[+isShowMore:eq=`1`:then=`show more`:else=`no`]] 
+0

'is'和'eq'按照文檔處理方式類似於相同的輸出修改器,所以不是這樣。 – OptimusCrime

+0

試過。相同的結果。 – chanchal118

0

要那樣做條件內的另一個條件不知何故?嵌套條件通常會導致這種奇怪的問題。你有沒有嘗試調用你的片段和佔位符輸出未緩存?

我也經歷過這幾次,似乎沒有一個明顯的原因,modx輸出條件邏輯中的一些未知的魔術。經驗教會了我儘量避免儘可能地使用它們。

這是醜陋的,但也許你可以解決你的問題,將任何你想輸出的東西放在實際的佔位符中,然後按照原樣打印佔位符。

+0

無條件。在片段中設置一個佔位符,並嘗試根據設置值輸出。我也檢查了新鮮的modx安裝。沒有運氣。 – chanchal118

0

不知道爲什麼這不起作用,所以我建議你做一個片段。

[[EvalIsShowMore? &val=`[[+isShowMore]]`]] 

在EvalIsShowMore代碼片段放像

<?php 

if($val){ 
    echo 'something'; 
}else{ 
    echo 'nothing'; 
} 
0

嗯,可能是你的佔位符位於上面的代碼片段! 在Modx輸出發生在最後一刻,但邏輯一致(級聯)。

這裏有一個如何做一個例子:

[[+isShowMore]] 
[[!yourSnippet]] 
[[+isShowMore:is=`1`:then=`show more`:else=`no`:toPlaceholder=`isShowMore`]] 

另一個例子:

[[+snippet_placeholder1]] 
[[!snippet]] 
[[+snippet_placeholder1:add=`[[+snippet_placeholder2]]`:toPlaceholder=`snippet_placeholder1`]] 
0

我有這個問題;我的網頁使用的模板有[[*content]]。改爲[[!*content]]擺脫緩存解決了我的問題。

僅供參考,我的代碼段正在調用!,因此它的輸出也沒有被緩存。