思维内容管理系统手册
 

新版语法变更

思维(CMSware)的设计终旨就是将网站管理人员从繁重的手工管理中解脱出来,而更多的关注于网站的内容管理和网站的样式设计,通过动态内容静态化,最大幅度的降低了系统的负荷,同时也保留了动态网页的灵活性,通过使用优秀的自有模版引擎和语法,再加上灵活的思维(CMSware)功能调用插件的二次开发,你可以自由的发挥出你设计的天赋,展现你网站与众不同的形像,最大限度的利用思维(CMSware)给你带来的效率提升。

思维(CMSware)2.85相对于思维(CMSware)2.7的模版语法变更

+ NodeGUID ,增加 all- 参数的支持。就像all-{NodeID} 一样使用方法。

+ CMS::NODELIST结点列表加上 orderby 参数,默认为“NodeSort DESC”

+ 新增用户名调用函数CreationUser,根据后台用户id去查出。 [@CreationUser($CreationUserID)]

思维(CMSware)2.62相对于思维(CMSware)2.61的模版语法变更

思维(CMSware)2.61相对于思维(CMSware)2.6的模版语法变更

思维(CMSware)2.6相对于思维(CMSware)2.51的模版语法变更

 

<cms action="COUNT" return="countValue" Function="count(*)" NodeID="2" />
<cms action="COUNT" return="sumValue" Function="SUM(c.price)" NodeID="2" />
<cms action="COUNT" return="avgValue" Function="AVG(c.price)" NodeID="2" />
总记录数:[$countValue]
price字段和: [$sumValue]
price字段平均值: [$avgValue]

<CMS action="LIST" return="List" NodeID="{$NodeInfo.NodeID}" orderby="Hits_Total" num="10" returnKey="Title,Keywords" />
<LOOP name="List" var="var" key="key">
<ul>
<li>
<a href="[$var.URL]" target="_blank" title="[$var.Title]" >[@CsubStr($var.Title, 0, 18)] </a><span class="process">(<font color="#ff6600"> [$var.Hits_Total] </font>)</span>
</li>
</ul>
</LOOP>

思维(CMSware)2.51相对于思维(CMSware)2.5的模版语法变更

<CMS action="LIST" return="List" NodeID="{$NodeInfo.NodeID}" orderby="Hits_Total" num="10" Cache="1" />
<LOOP name="List" var="var" key="key">
<ul>
<li>
<a href="[$var.URL]" target="_blank" title="[$var.Title]" >[@CsubStr($var.Title, 0, 18)] </a><span class="process">(<font color="#ff6600">[$var.Hits_Total]</font>)</span>
</li>
</ul>
</LOOP>

思维(CMSware)2.5相对于思维(CMSware)2.1的模版语法变更

<loop name="List" var="var" key="key" start="1" >
<li>[$key] <a href="[$var.URL]">[$var.Title]</a>
</loop>

<CMS action="LIST" return="List" NodeGUID="com.cmsware.news.global" Num="20" />
<ul>
<loop name="List" var="var" key="key">
<li>[$var.ContentID] <a href="[$var.URL]">[$var.Title]</a>
</loop>
</ul>

NODELIST调用新增新参数 <CMS action="NODELIST" return="List" type="brother">
type

<header name="Content-Type: text/html; charset=gbk" />
<header name="Content-Type: text/xml; charset=gbk" />

 
从2.5RC3起,模版引擎增加新的模版调用语法,同时完全兼容1.x/2.x模版语法,新语法支持更多更强的功能。
- 标签语法遵守XML方式,所有调用标签参数的值必须用引号""括起来,比如:
<CMS::LIST:List NodeID="1" TableID="2" Limit="">
所有标签的参数名不再区分大小写,但调用标签名要区分大小写,如:
<CMS::NODELIST:List NodeID='1'> 中的NODELIST必须大写,但NodeID和nodeid一样

CMS调用

<CMS action="LIST" return="ListOne" where="(c.Title=='{$var.Title}' and c.Photo!='') or c.Hit>=10" NodeID="1" />
<CMS action="CONTENT" return="contentInfo" IndexID="{$var.IndexID}" />
<CMS action="SQL" return="ListTwo" query="select * from cmsware_site where Disabled=0" />
IF语句
<if test="$a > $b && ($b>$e)">
<elseif test="$c > $b || $a == 0" >
<else>
</if>
LOOP语句
<loop name="List" var="var" key="key" >
</loop>

 

Op操作语句
该语句为新增语句,用于表达式的运算
格式:<op exp="要运算的表达式" />

例子:
<op exp="$var=$var+1" />
<op exp="$var++" />
<op exp="$var=($var - 5)/10" />
<op exp="$var=date()" />
<op exp="$var=date('Y-m-d', $info.Time)" />

Op语句的功能非常强大,可以用来替换var语句进行复杂变量定义

<var name="hello" value="world" /> 等同于

 

<op exp="$hello='world'" />

使用Op语句进行复杂变量定义:
<op exp="$hello=Cstrsub($var.Content,1,10,'...').'New!'" />

Debug语句
该语句为新增语句,用于变量调试
格式:<debug name="变量名" />

例子:
<CMS action="SEARCH" return="List" NodeID="{$NodeID}" Field="Keywords" Keywords="{$Keywords}" Num="10" Separator="," IgnoreContentID="{$ContentID}" /><!--使用SEARCH调用获取相关文章列表-->
<debug name="List" />
<LOOP name="List" key="key" var="var">
<li><a href="[$var.URL]">[$var.Title]</a></li>
</LOOP>

[新旧模版语法比较]

新版CMS调用:
<CMS action="LIST" return="ListOne" where="(c.Title=='{$var.Title}' and c.Photo!='') or c.Hit>=10" NodeID="1"/> <!--新版本的where调用支持变量引用判断,及复杂表达式-->
<CMS action="SQL" return="ListTwo" query="select * from cmsware_site where Disabled=0" />
老版CMS调用:
<CMS::LIST:ListOne NodeID="1">
<where: (c.Title=='{$var.Title}' and c.Photo!='') or c.Hit>=10 > <!--老版本的where调用不支持变量引用判断,及复杂表达式-->
...
</CMS>



新版LOOP调用:
<loop name="List" var="var" key="key">
</loop>

老版LOOP调用:
<loop $List var=var key=key>
</loop>



新版IF调用:
<if test="$a > $b && ($b>$e)">
<elseif test="$c > $b || $a == 0" >
<else>
</if>
老版IF调用:
<if $a > $b && ($b>$e)>
<elseif $c > $b || $a == 0 >
<else>
</if>