欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

dedecms

當前位置:主頁 > CMS教程 > dedecms >

DEDECMS 擴展標簽和dede自定義標簽實現(xiàn)方法

來源:本站原創(chuàng)|時間:2021-08-05|欄目:dedecms|點擊: 次

我們需要知道下擴展標簽的存放目錄及文件名構(gòu)成,首先,擴展的標簽都是存放在/include/taglib這個目錄,名稱都是以“標簽名.lib.php”格式,例如{dede:channel/}標簽對應(yīng)的是channel.lib.php文件。
我們可以看一個示例標簽: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)后臺的[模板]-[全局標簽測試]中運行{dede:demotag/},顯示如下的結(jié)果:
,我們會發(fā)現(xiàn)標簽起作用了,輸出了我們的內(nèi)容。
 
  至此我們完成了標簽的編寫,這里面主要涉及到PHP、MySQL的很多知識,需要有一定相關(guān)方面的基礎(chǔ)才能夠編寫標簽了,當然這里只是一個簡單的標簽開發(fā)例子,還有許多的東西可以去開發(fā)。
 
 
 
  這里我們知道,其實標簽生成的內(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)建變量并且賦值了。
  接下來我們可以再進一步去修改這個標簽。
  比如說我們需要寫一個標簽專門來查詢文章內(nèi)容頁的那個相關(guān)文章,功能類似于上面sql標簽中的那個sql,只是這里我們將其分裝為一個標簽。
  我們可以新建一個標簽,例如叫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這個是用來獲取標簽的底層模板的,$ctp創(chuàng)建用于處理底層模板中的變量,并處理進行替換。我們根據(jù)獲取的屬性編寫我們的sql語句,這里我們使用limit 0, $row,這樣就可以根據(jù)$row來確定查詢的內(nèi)容數(shù)目。
  當然我們可以獲取更多的屬性以便我們這個標簽更強大,例如我們可以增加類似于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;
  }
  ?>
 
接下來我們來測試我們這個標簽,我們修改article_article.htm模板,在里面加入以下的標簽代碼:
 
{dede:writerarc row='10' titlelen='6'}
  [field:title/]
  {/dede:writerarc}
 

上一篇:織夢dedecms欄目列表、文章、TAG列表、自由列表、搜索列表等分頁樣式修改

欄    目:dedecms

下一篇:dedecms去掉當前位置欄目鏈接的方法

本文標題:DEDECMS 擴展標簽和dede自定義標簽實現(xiàn)方法

本文地址:http://mengdiqiu.com.cn/a1/dedecms/14418.html

更多dedecms

您可能感興趣的文章

閱讀排行

本欄相關(guān)

隨機閱讀

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有