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>