2014-01-15 50 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]]摆脱缓存解决了我的问题。

仅供参考,我的代码段正在调用!,因此它的输出也没有被缓存。