亚洲欧美成人综合一区_国产精品一区二区无码_亚洲风情偷拍区_成?人免费无码视频在线看

在線客服與您一對(duì)一交流
當(dāng)前位置: 主頁(yè) > 行業(yè)新聞 > IT技術(shù) >

DEDE的擴(kuò)展標(biāo)簽

DedeCMSV5.3開始就支持自己擴(kuò)展標(biāo)簽,不過許多新人很少用那個(gè)東西,簡(jiǎn)單的介紹下如何編寫自己的調(diào)用標(biāo)簽。
  我們需要知道下擴(kuò)展標(biāo)簽的存放目錄及文件名構(gòu)成,首先,擴(kuò)展的標(biāo)簽都是存放在/include/taglib這個(gè)目錄,名稱都是以標(biāo)簽名.lib.php”格式,例如{dede:channel/}標(biāo)簽對(duì)應(yīng)的是channel.lib.php文件。
  我們可以看一個(gè)示例標(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之類語(yǔ)法,把最終返回值傳給$revalue
  //------------------------------------------------------
  $revalue = 'Hello Word!';
  //------------------------------------------------------
  return $revalue;
  }
  ?>
  我們登錄系統(tǒng)后臺(tái)的[模板]-[全局標(biāo)簽測(cè)試]中運(yùn)行{dede:demotag/},顯示如下的結(jié)果:
 ,我們會(huì)發(fā)現(xiàn)標(biāo)簽起作用了,輸出了我們的內(nèi)容。
 
  至此我們完成了標(biāo)簽的編寫,這里面主要涉及到PHP、MySQL的很多知識(shí),需要有一定相關(guān)方面的基礎(chǔ)才能夠編寫標(biāo)簽了,當(dāng)然這里只是一個(gè)簡(jiǎn)單的標(biāo)簽開發(fā)例子,還有許多的東西可以去開發(fā)。

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

  這樣我們可以看到,這個(gè)屬性已經(jīng)被創(chuàng)建變量并且賦值了。
  接下來我們可以再進(jìn)一步去修改這個(gè)標(biāo)簽。
  比如說我們需要寫一個(gè)標(biāo)簽專門來查詢文章內(nèi)容頁(yè)的那個(gè)相關(guān)文章,功能類似于上面sql標(biāo)簽中的那個(gè)sql,只是這里我們將其分裝為一個(gè)標(biāo)簽。
  我們可以新建一個(gè)標(biāo)簽,例如叫writerarc,那我們就需要?jiǎng)?chuàng)建一個(gè)writerarc.lib.php,然后模仿demotag編寫函數(shù),注意需要修改為
  function lib_writerarc(&$ctag,&$refObj)
  接下來我們就可以編寫查詢語(yǔ)句及對(duì)底層模板處理的相關(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這個(gè)是用來獲取標(biāo)簽的底層模板的,$ctp創(chuàng)建用于處理底層模板中的變量,并處理進(jìn)行替換。我們根據(jù)獲取的屬性編寫我們的sql語(yǔ)句,這里我們使用limit 0, $row,這樣就可以根據(jù)$row來確定查詢的內(nèi)容數(shù)目。
  當(dāng)然我們可以獲取更多的屬性以便我們這個(gè)標(biāo)簽更強(qiáng)大,例如我們可以增加類似于arclist中的相關(guān)屬性,并在函數(shù)中進(jìn)行處理,不過這個(gè)需要有一定的PHP基礎(chǔ)。
  接下來我們通過執(zhí)行查詢對(duì)sql及輸出變量進(jìn)行處理:
  $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)變量進(jìn)行替換,然后生成輸出字符串,將所有的字符串信息存儲(chǔ)到$revalue中。
  最后返回這個(gè)值return $revalue;
  整個(gè)文件內(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;
  }
  ?>
  接下來我們來測(cè)試我們這個(gè)標(biāo)簽,我們修改article_article.htm模板,在里面加入以下的標(biāo)簽代碼:
  {dede:writerarc row='10' titlelen='6'}
  [field:title/] 

  {/dede:writerarc}

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

西安劍鋒網(wǎng)站制作,你的網(wǎng)站一站式服務(wù)專家!

相關(guān)文章:

  • 從事網(wǎng)站優(yōu)化的工作人員都知道,網(wǎng)站排名在百度優(yōu)化中的變化比較大,也不穩(wěn)定。那么,為什么會(huì)出現(xiàn)這種現(xiàn)象呢?其實(shí),搜索引擎的不同,算法也不同,重點(diǎn)也不一樣,比如百度更加重視...

  • 將代碼放到模板中。 {php print_r(get_defined_vars());} 要查看這個(gè)地址的模版。http://www.wuzhicms.com/item-34-2-1.html 首先,我們的這個(gè)地址需要是動(dòng)態(tài)的。而不是生成的靜態(tài)地址。 打開文件: /www/configs...

  • 作為一名站長(zhǎng)如果不知道友情鏈接對(duì)于網(wǎng)站的重要性,那有點(diǎn)說不過去。因?yàn)橛亚殒溄?,只要運(yùn)用好,能夠提高網(wǎng)站在搜索引擎上的排名、能夠提升網(wǎng)站的收錄還是就是友情鏈接是網(wǎng)站...

  • 網(wǎng)絡(luò)技術(shù)日益發(fā)達(dá),互聯(lián)網(wǎng)+活動(dòng)進(jìn)行得如火如荼。如果網(wǎng)站依舊沒有革新,那么在信息時(shí)代就難以生存下去。網(wǎng)站優(yōu)化是大勢(shì)所趨。結(jié)合現(xiàn)代的網(wǎng)絡(luò)發(fā)展特征,網(wǎng)站可以從以下幾個(gè)方面...

  • 一、避免友鏈牽連賞罰。 友情鏈接作為較高質(zhì)量外鏈的一種,在傳遞權(quán)重上的能力決然是要高于其他鏈接的。因?yàn)槟暌共块T友鏈交流城市選用鏈接錨文本的形式,所以對(duì)方針關(guān)頭詞排名...

  • 網(wǎng)站建設(shè)對(duì)于一個(gè)企業(yè)網(wǎng)站成功來說尤其重要,有許多地方都是值得我們要用心把握的,那么企業(yè)網(wǎng)站建設(shè)到底有哪些地方需要我們注意的呢?小編就為大家來介紹以下幾點(diǎn)。 西安做網(wǎng)...

  • 1、長(zhǎng)尾關(guān)鍵為非網(wǎng)站的目標(biāo)關(guān)鍵詞,但是卻能為網(wǎng)站帶來搜索量。長(zhǎng)尾關(guān)鍵詞比之目標(biāo)關(guān)鍵詞具有明顯的特征,關(guān)鍵詞比較長(zhǎng),往往由兩個(gè)詞語(yǔ)或者三個(gè)詞語(yǔ)組成,甚至是一句短語(yǔ)。這...

  • 長(zhǎng)尾關(guān)鍵詞對(duì)優(yōu)化網(wǎng)站排名的作用? 所謂長(zhǎng)尾關(guān)鍵詞是指那些搜索量少且不穩(wěn)定但卻能給網(wǎng)站帶來流量的詞。從某種水平上講,只需一個(gè)詞有可能會(huì)被搜,那就能夠稱之為長(zhǎng)尾詞。長(zhǎng)尾...

  • 網(wǎng)絡(luò)的飛速發(fā)展,也讓大家都開始意識(shí)到網(wǎng)站建設(shè)他們的重要性了,現(xiàn)在在互聯(lián)網(wǎng)市場(chǎng)里面的網(wǎng)站建設(shè)公司有非常多,所以企業(yè)以及公司在選擇這些網(wǎng)站建設(shè)公司的時(shí)候同樣也有了非常...

  • 對(duì)于網(wǎng)站建設(shè)來說,網(wǎng)站上線前誰都不能保證網(wǎng)站的穩(wěn)定性和問題的存在,所以網(wǎng)站上線前的籌備工作非常之重要。只要準(zhǔn)備好,保證幫你省去很多不必要的麻煩。下面看一下都有哪些...

  • 上一篇:沒有了
  • 下一篇:沒有了
  • 公司:西安蟠龍網(wǎng)絡(luò)科技有限公司
  • 聯(lián)系人:張經(jīng)理
  • 手機(jī)/微信:
  • Q Q: 點(diǎn)擊這里給我發(fā)消息
  • 地址:西安市雁塔區(qū)唐延南路11號(hào)逸翠園i都會(huì)