CMSMS有一个非常奇怪的问题 - 为什么这就是HALF-working:
<head>
{if $current_step=='2' or $current_step=='4'}
HEAD_ON
{else}
HEAD_FAIL
{/if}
</head>
{if $current_step=='2' or $current_step=='4'}
NEITHER_ONE_OK
{else}
NEITHER_ONE_FAIL
{/if}
<body>
{if $current_step=='2' or $current_step=='4'}
BODY_OK
{else}
BODY_FAIL
{/if}
</body>
返回:
HEAD_OK
NEITHER_ONE_FAIL
BODY_FAIL
我使用最新的CMSMS版本 - 1.9.3。 CMSMS基于smarty,允许在CMSMS UDT部分执行此操作:
$gCms->smarty->assign('current_step',"".htmlspecialchars($_GET['step_id'])."");
如果CMSMS使用一些方法首先解释主体部分,然后编译UDT,然后编译整个网站,我认为这个问题是可能的。
任何解决方案?谢谢。
答案 0 :(得分:1)
CMSMS以几乎相反的顺序处理模板。
从1.4的发行说明:http://www.cmsmadesimple.org/cgblog/818/Announcing-CMS-Made-Simple-1-4-Jamaica/
* We split the template into three pieces
a) Any text ontop of
b) The section
c) the rest of the template (the body)
答案 1 :(得分:1)
是的,有一个解决方案。
您应该使用smarty捕获内容部分和其他调用,以便随处可用变量。
在模板的顶部使用:
{capture assign='cc'}{content}{/capture}
并替换{$ cc}
的{content}标记这样,在处理头部之后,任何变量定义在页面内容上的UDT调用中都可用于模板的其余部分。
查看这个旧指南,从头到尾获取一些变量,你就会明白它是如何工作的:
http://forum.cmsmadesimple.org/viewtopic.php?f=4&t=30475&sid=ed7e25c50612eb9f052ec4bee16d782c
答案 2 :(得分:0)
来自CMSMS开发团队的回答:“CMSMS(默认情况下)首先处理上面的内容,然后处理部分,然后处理头部,并在输出之前将结果粘合在一起。”