一区二区三区欧美日韩-一区二区三区欧美-一区二区三区免费在线视频-一区二区三区免费在线观看-久久精品店-久久精品第一页

歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
電話圖標(biāo) 余先生:13699882642

dede擴展標(biāo)簽及自定義標(biāo)簽

發(fā)表日期:2017-11 文章編輯:小燈 瀏覽次數(shù):1536

DedeCMSV5.3開始就支持自己擴展標(biāo)簽,不過許多新人很少用那個東西,簡單的介紹下如何編寫自己的調(diào)用標(biāo)簽。
  我們需要知道下擴展標(biāo)簽的存放目錄及文件名構(gòu)成,首先,擴展的標(biāo)簽都是存放在/include/taglib這個目錄,名稱都是以標(biāo)簽名.lib.php”格式,例如{dede:channel/}標(biāo)簽對應(yīng)的是channel.lib.php文件。
  我們可以看一個示例標(biāo)簽:demotag.lib.php
  
  if(!defined('DEDEINC'))
  {
  exit("Request Error!");
  }
  function lib_demotag(&$ctag,&$refObj)
  {
  global $dsql,$envs;
  //屬性處理
  $attlist="row|12,titlelen|24";
  FillAttsDefault($ctag->CAttribute->Items,$attlist);
  extract($ctag->CAttribute->Items, EXTR_SKIP);
  $revalue = '';
  //你需編寫的代碼,不能用echo之類語法,把最終返回值傳給$revalue
  //------------------------------------------------------
  $revalue = 'Hello Word!';
  //------------------------------------------------------
  return $revalue;
  }
  ?>
  我們登錄系統(tǒng)后臺的[模板]-[全局標(biāo)簽測試]中運行{dede:demotag/},顯示如下的結(jié)果:
,我們會發(fā)現(xiàn)標(biāo)簽起作用了,輸出了我們的內(nèi)容。

  至此我們完成了標(biāo)簽的編寫,這里面主要涉及到PHPMySQL的很多知識,需要有一定相關(guān)方面的基礎(chǔ)才能夠編寫標(biāo)簽了,當(dāng)然這里只是一個簡單的標(biāo)簽開發(fā)例子,還有許多的東西可以去開發(fā)。

  這里我們知道,其實標(biāo)簽生成的內(nèi)容其實是這個函數(shù)的一個返回值,這里返回的內(nèi)容都是字符串,也就是函數(shù)return $revalue;中的$revalue需要是經(jīng)過處理后生成的字符串。
  $attlist="row|12,titlelen|24";這個是屬性列表,這個經(jīng)過函數(shù)處理后會直接生成變量并復(fù)制,我們可以測試下,做如下的修改:
  $revalue = 'Hello Word!';
  $revalue .="
Row:".$row.";TitleLen:".$titlelen;

  這樣我們可以看到,這個屬性已經(jīng)被創(chuàng)建變量并且賦值了。
  接下來我們可以再進一步去修改這個標(biāo)簽。
  比如說我們需要寫一個標(biāo)簽專門來查詢文章內(nèi)容頁的那個相關(guān)文章,功能類似于上面sql標(biāo)簽中的那個sql,只是這里我們將其分裝為一個標(biāo)簽。
  我們可以新建一個標(biāo)簽,例如叫writerarc,那我們就需要創(chuàng)建一個writerarc.lib.php,然后模仿demotag編寫函數(shù),注意需要修改為
  function lib_writerarc(&$ctag,&$refObj)
  接下來我們就可以編寫查詢語句及對底層模板處理的相關(guān)函數(shù)了
  $revalue = '';
  $innertext = $ctag->GetInnerText();
  $ctp = new DedeTagParse();
  $ctp->SetNameSpace('field', '[', ']');
  $sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";
  $innertext這個是用來獲取標(biāo)簽的底層模板的,$ctp創(chuàng)建用于處理底層模板中的變量,并處理進行替換。我們根據(jù)獲取的屬性編寫我們的sql語句,這里我們使用limit 0, $row,這樣就可以根據(jù)$row來確定查詢的內(nèi)容數(shù)目。
  當(dāng)然我們可以獲取更多的屬性以便我們這個標(biāo)簽更強大,例如我們可以增加類似于arclist中的相關(guān)屬性,并在函數(shù)中進行處理,不過這個需要有一定的PHP基礎(chǔ)。
  接下來我們通過執(zhí)行查詢對sql及輸出變量進行處理:
  $dsql->Execute('me',$sql);
  while($rs = $dsql->GetArray('me'))
  {
  //根據(jù)屬性處理查詢變量
  $rs['title'] = cn_substr($rs['title'], $titlelen);
  //獲取底層模板
  $ctp->LoadSource($innertext);
  foreach($ctp->CTags as $tagid=>$ctag) {
  if(!empty($rs[strtolower($ctag->GetName())])) {
  $ctp->Assign($tagid,$rs[$ctag->GetName()]);
  }
  }
  //根據(jù)底層模板及查詢變量得到處理結(jié)果
  $revalue .= $ctp->GetResult();
  }
  這樣我們就將查詢出來的結(jié)果同底層模板中出現(xiàn)的相關(guān)變量進行替換,然后生成輸出字符串,將所有的字符串信息存儲到$revalue中。
  最后返回這個值return $revalue;
  整個文件內(nèi)容如下:
  
  if(!defined('DEDEINC'))
  {
  exit("Request Error!");
  }
  function lib_writerarc(&$ctag,&$refObj)
  {
  global $dsql,$envs;
  //屬性處理
  $attlist="row|12,titlelen|24";
  FillAttsDefault($ctag->CAttribute->Items,$attlist);
  extract($ctag->CAttribute->Items, EXTR_SKIP);
  $revalue = '';
  $innertext = $ctag->GetInnerText();
  $ctp = new DedeTagParse();
  $ctp->SetNameSpace('field', '[', ']');
  $sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";
  $dsql->Execute('me',$sql);
  while($rs = $dsql->GetArray('me'))
  {
  //根據(jù)屬性處理查詢變量
  $rs['title'] = cn_substr($rs['title'], $titlelen);
  //獲取底層模板
  $ctp->LoadSource($innertext);
  foreach($ctp->CTags as $tagid=>$ctag) {
  if(!empty($rs[strtolower($ctag->GetName())])) {
  $ctp->Assign($tagid,$rs[$ctag->GetName()]);
  }
  }
  //根據(jù)底層模板及查詢變量得到處理結(jié)果
  $revalue .= $ctp->GetResult();
  }
  return $revalue;
  }
  ?>
  接下來我們來測試我們這個標(biāo)簽,我們修改article_article.htm模板,在里面加入以下的標(biāo)簽代碼:
  {dede:writerarc row='10' titlelen='6'}
  [field:title/]

  {/dede:writerarc}
本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請及時與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會在5工作日內(nèi)聯(lián)系您,一經(jīng)查實,本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.junxiaosheng.cn/11706.html
相關(guān)cms文章
 八年  行業(yè)經(jīng)驗

多一份參考,總有益處

聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費獲得網(wǎng)站建設(shè)方案及報價

咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

業(yè)務(wù)熱線:余經(jīng)理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

主站蜘蛛池模板: 国产精品96久久久久久AV不卡| 一区三区在线专区在线| X8X8拨牐拨牐X8免费视频8午夜| 亚洲伊人国产| 欧美伦理片第7页| 果冻传媒2021一二三在线观看| 国产a级黄色毛片| 春药按摩人妻中文字幕| 樱桃视频影院在线播放| 亚洲欧美综合乱码精品成人网 | z00兽200俄罗斯| 99久久做夜夜爱天天做精品| 88福利视频| 99re久久免费热在线视频手机| 97SE亚洲国产综合在线| 91chinesevideo| www免费看.男人的天堂| 超碰在线视频| 97公开超碰在线视频| 最近中文字幕免费高清MV视频6| 18禁无遮遮挡羞漫画免费阅读 | 日本亚洲精品无码区国产电影| 日本漫画母亲口工子全彩| 日本wwwxx| 吻嘴胸全身好爽床大全| 亚洲 日韩 在线 国产 视频| 亚洲精品久久午夜麻豆| 越南女 黑人 痛苦 大叫| 97国内精品久久久久久久影视| G国产精品无马| 俄罗斯老妇女BBXX| md2.pud 麻豆传媒官网| 国产 欧美 亚洲 日韩视频| 国产精品午夜小视频观看| 黄页网站18以下勿看免费| 久久人妻少妇嫩草AV蜜桃99| 免费国产福利| 色婷婷国产精品视频一区二区三区| 欧美日韩国产高清综合二区| 色橹橹欧美在线观看视频高清| 亚洲 欧美 国产在线视频|