返回頂部
關閉軟件導航
位置:首頁 > 資訊 > 帝國新聞>帝國、PHPCMS及織夢對比(五):標簽解析方式分析

  作為CMS,最需要做到地是把程序和數據展示分離出來,讓用戶不需要了解太多程序的程序即可很方便的使用來搭建合種個性化站點,而標簽的靈活性,很大程度上決定了CMS的好用與不好用,而標簽的好用不好用,除了處決于標簽本身在細節上做的細致程度(如詳細的幫助文檔、簡單的標簽生成方式等)決定外,整個標簽體系的設計思路更起到決定作用。

  本文中落葉對PHPCMS、DEDECMS及帝國CMS的標簽的設計思路與解析方式作一些簡要的對比分析。

  現在主流的PHP程序實現數據處理與數據展示的分離,都會使用第三方的或者自己開發的模板引擎,一般的模板引擎中除了支持特定格式的數據變量標簽展示外,還支持數組循環、邏輯判斷、函數處理、文件包含、PHP原生語法等。

  一般的模板引擎的處理思路時各種以HTML文本的方式存儲(有的是.html的擴展名,有的是.tpl的擴展名),然后模板引擎會對模板中的標簽或代碼進行編譯預處理成PHP文件緩存到特定目錄,處理成的PHP文件里面不再是標簽格式,而是標簽被處理后可直接執行的對應的PHP語句塊。然后在PHP 控制文件中處理好數據后帝國cms軟件采集 ,使用模板調用函數調用編譯好的PHP文件形式的緩存模板(當然,過程中會有判斷,如果緩存不存在,則直接從原模板文件編譯一次生成緩存后調用),直接整合到PHP控制文件中一起執行。

  如果是生成靜態,則是先處理好數據后,引用編譯好的模板文件,執行,輸入后緩存區,后面再寫入生成HTML文件。

  早期的ASP類風格的CMS設計沒有系統化的模板引擎,而是采用單一替換的模式,即先讀入模板文件,然后替換模板文件中標簽,每一個標簽都是單獨處理替換帝國cms批量助手。

  PHPCMS和DEDECMS中模板的處理方式為通用的模板引擎處理方式,而帝國CMS的模板處理方式為早期的ASP類風格CMS的處理方式。

  1. PHPCMS標簽的解析方式:

  PHPCMS標簽形式主要有TAG標簽和GET標簽,靜態HTML模板在編譯過程中會經過模板引擎統一進行正則替換并轉化為對應的PHP函數塊。

  如:{tag_標簽內容列表},經模板引擎編譯處理后:

  <?php echo tag('phpcms', 'tag_content', "SELECT a.contentid,a.catid,a.typeid,a.areaid,a.title,a.style,a.thumb,a.keywords,a.description,a.userid,a.updatetime,a.inputtime,a.url FROM `phpcms_content` a, `phpcms_content_position` p WHERE a.contentid=p.contentid AND p.posid=1 AND a.status=99 ORDER BY a.contentid DESC", 0, 5, array ( 'class' => 'url', 'target' => '_blank', 'titlelen' => '35'帝國cms采集軟件,));?>

  在控制PHP文件中使用模板引用函數引用模板時,該標簽即自動調用global.func.php文件中的tag函數執行得到文章列表結果后輸出。

  又如GET標簽:調用最新10條文章標題的GET標簽

  {get sql=" SELECT `title` FROM `phpcms_content` ORDER BY contentid DESC " rows="10"}

  <li>{str_cut($r[title],20,’’)}</li>

  {/get}

  經PHPCMS模板引擎編譯解析后的PHP代碼塊:

帝國cms批量更新

  <?php $DATA = get("SELECT `title` FROM `phpcms_content` ORDER BY contentid DESC", 10, 0, "", "");foreach($DATA AS $n => $r) { $n++;?>

  <li>

  <?php echo str_cut($r['title'],20,'');?>

  </li>

  <?php } unset($DATA); ?>

  2. DEDECMS標簽的解析方式:

  DEDECMS標簽的解析方式和PHPCMS類,經過DEDE模板引擎類的dedetag.class.php的編譯處理,標簽被處理成PHP代碼塊后緩存到data目錄的tplcache目錄。

  如:分頁頁碼列表標簽{dede:pagelist listsize=‘5’ listitem=‘’/}經DEDE模板引擎編譯解析后和模板HTML一起緩存到緩存目錄的對應的PHP代碼塊為:

帝國cms批量添加產品

  <?php

  $atts = array();

  $atts['tagname'] = 'pagelist';

  $atts['listsize'] = '6';

  echo $this->refObj->GetPageList($atts,$this->refObj,$fields);

  ?>

  因為DEDE CMS模板引擎也是目前通用的模板引擎編譯解析方式,所以整個流程和PHPCMS類似。

  3. 帝國CMS標簽處理方式:

  據落葉的觀察,帝國CMS是沒有模板引擎這個概念的,每一個標簽的處理都是單獨用函數來替換。前一段時間,一位朋友希望在內容頁有多分頁的文章前面加上分頁小標題導航。當時,為了實現這個小小的功能,落葉仔細研究了下落葉的模板標簽解析功能,實際發現,帝國CMS在生成靜態時,是先將需要展示的數據處理好,甚至整合HTML文件然后單個替換模板中的標簽,每個標簽都單獨寫一個或幾個函數來處理,然后替換后生成靜態?;旧系蹏鳦MS中的標簽替換基本是白名單替換。結果是,即使自己想在內容頁增加一個簡單的自定義標簽,實現一些小的功能,都需要修改帝國的functions.php和 t_functions.php中的核心函數文件。

如果您覺得 帝國、PHPCMS及織夢對比(五):標簽解析方式分析 這篇文章對您有用,請分享給您的好友,謝謝
文章地址:http://m.meyanliao.com/article/diguo/dgPHPCMSjzmdbwbqjxfsfx.html
解放雙手無盡可能,有問題添加天線貓微信
主站蜘蛛池模板: 国产自无码视频在线观看| 无码av无码天堂资源网| 中文无码字慕在线观看| 国产成人无码一区二区在线播放 | 日韩精品无码免费专区网站 | 久久亚洲AV永久无码精品| 亚洲A∨无码无在线观看| 国产精品爆乳奶水无码视频| 亚洲AV无码第一区二区三区| 曰韩无码无遮挡A级毛片| 一本大道东京热无码一区| 中日韩亚洲人成无码网站| 亚洲无码高清在线观看| 中文字幕久久久人妻无码| 亚洲av无码一区二区乱子伦as | 久久人妻少妇嫩草AV无码专区| 日韩AV无码一区二区三区不卡| 亚洲av日韩av无码黑人| 国产成人无码精品久久久性色| 亚洲AV无码专区在线观看成人| 无码精品黑人一区二区三区| 黄桃AV无码免费一区二区三区| 亚洲av无码av制服另类专区| 九九久久精品无码专区| 无码一区二区三区亚洲人妻| 亚洲中文无码mv| 亚洲精品GV天堂无码男同| AV无码精品一区二区三区| 无码乱人伦一区二区亚洲| 亚洲AV无码专区电影在线观看| 国产在线无码视频一区二区三区 | 无码人妻精品一区二| 韩国无码AV片在线观看网站| 人妻精品久久无码区洗澡| 亚洲AV无码一区二区大桥未久| 无遮掩无码h成人av动漫| 亚洲精品无码中文久久字幕| 无码人妻aⅴ一区二区三区| 亚洲乱亚洲乱妇无码麻豆| 中文字幕乱妇无码AV在线| 无码人妻AV免费一区二区三区|