2.5新模板語法說明

從 Version 2.5 RC3 開始，CMSware開始採用新的XML類似的模板語法


- New 新版模板語法，參見下面的說明。
- New 新版模板語法新增OP語句，用於表達式的運算
- New   系統管理設置 -> 發佈管理單頁顯示記錄、索結果單頁顯示記錄、採集管理單頁顯示記錄

- Fixed 標題採集不到的文章不進行採集導入
- Fixed 後台搜索出來的稿件可以「創建虛鏈接」「創建索引鏈接」
- Notice 關於圖片發佈的問題，流程如下：用戶上傳圖片，上傳圖片保存於資源目錄resource/hxxx/hxx下，所以文章中圖片鏈接為管理後台的鏈接，文章發佈之時，文章中的圖片才進行真正的發佈（一篇文章的發佈，包括靜態頁面的生成和文章圖片的發佈這2個基本過程），圖片發佈到節點資源發佈PSN上面，文章中的圖片地址也會自動替換為發佈後的地址，所以，你要理解，圖片會有2個以上的拷貝，發佈後台resource裡面有個（文章刪除時候會自動刪除，前提是圖片引用關聯為0），資源發佈PSN上也有一個（文章取消發佈時會自動刪除）。




[SQL]
INSERT INTO `cmsware_sys` (`varName`, `varValue`) VALUES ('CollectionPageNum', '15');
INSERT INTO `cmsware_sys` (`varName`, `varValue`) VALUES ('ContentPageNum', '15');
INSERT INTO `cmsware_sys` (`varName`, `varValue`) VALUES ('SearchPageNum', '15');

[新模板語法]
2.5RC3模板引擎新增新的模板調用語法（該模板語法為cmsware3.0的計劃，現在提前加入進行過渡測試），同時完全兼容1.x/2.x模板語法

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!'" />




[新舊模板語法比較]

   註：為了符合XML規範，新版本<CMS...>中的所有屬性必須使用""進行閉合，同時將老版的<CMS...>..</CMS>閉合改為<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>

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



