CMSware新版模板语法变更

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

思维(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的模版语法变更

  • 改进的自动缩略图函数AutoMini
AutoMini(源图地址, 缩略图尺寸, 内容信息数组, 缩略图品质, 是否自动裁图, URL前缀)
URL前缀:默认为空,用于源图地址为相对地址时定位图片.
使用举例:
[@AutoMini($a,"100*200",$var,'','','http://www.sohu.com/photo/')]
[@AutoMini($a,"100*200",$var,0,0,'http://www.sohu.com/photo/')]
  • CMS_CONTENT调用新增参数LoopMode="1",在只有一条返回值时也生成二维数组。
  • 新增附加发布调用“ExtraPublish”,
  • 支持子模版

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

  • 改进的自动缩略图函数AutoMini
 AutoMini(源图地址, 缩略图尺寸, 内容信息数组, 缩略图品质, 是否自动裁图)
 缩略图品质:默认为75,可设范围0~100.
 是否自动裁图:默认为1,1为是,0为否
 例如:[@AutoMini($Photo, '120*100', $Publish, 90, 1)]

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

  • 新增CMS计算统计类调用标签"COUNT",用于求COUNT、SUM、AVG这些值,返回一个字符串变量,主要使用function属性定义统计操作,其他属性同CMS_LIST
<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_LIST支持ignore="1,2"忽略结点ID
  • 新增returnKey标签 ,可以定义内容列表记录返回那些字段,一般列表只需要获得Title即可,而无需返回Content等字段,使用此属性,可以一定程度上提高更新效能。
<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的模版语法变更

  • 新增Cache标签Cache="1" ,可以用于所有调用,模版中的CMS调用通过使用Cache,可以大幅提升批量更新的效率.
Cache使用技巧需要特别注意,只有模版公共调用的部分使用Cache才有效果,比如内容页 头部的导航NODELIST调用,或者top10之类的调用,结点首页的Page-10分页调用最好不要用Cache, 因为不会提升任何效率.
<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语句新增start属性,可以设置key的起始值
<loop name="List" var="var" key="key" start="1" >
<li>[$key] <a href="[$var.URL]">[$var.Title]</a>
</loop>
  • 新增“结点唯一标识符(NodeGUID)”,LIST调用里面使用NodeGUID进行调用。注意:NodeGUID不能和NodeID同时使用,结点唯一标识符建议使用”域名.结点名“的形式以保证唯一性。(对于对外发布共享的结点更需要注意这点)
<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

  • parent : 调用所有父级结点列表(新)
  • brother : 调用所有同级(兄)结点列表(新)
  • son : 调用所有子结点列表,等同于“sub”(新)
  • 新增header标签,实现发送文件头的功能, 比如动态发布中加XML头属性(name:header名)
<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> 

[新旧模版语法比较]

  • 为了符合XML规范,新版本<CMS...>中的所有属性必须使用""进行闭合,同时将老版的闭合标签<CMS...>..</CMS>改为非闭合标签<CMS.../>。
  • 所有非闭合标签必须使用 />作为结束符,比如<op exp="$var=$var+1" />
 闭合标签:     比如 <loop ......>....</loop>、<if...>......</if>.
 非闭合标签: 比如 <cms action="xxx" return="xxx"..../>、<op exp="xxx" />、<var name="xxx" value="xxx" />
  • 新版模版语法改为将where调用直接放在<cms...>标签中,请大家注意

新版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> 




参考来源[ ]