織夢自定義擴(kuò)展標(biāo)簽_第1頁
織夢自定義擴(kuò)展標(biāo)簽_第2頁
織夢自定義擴(kuò)展標(biāo)簽_第3頁
織夢自定義擴(kuò)展標(biāo)簽_第4頁
織夢自定義擴(kuò)展標(biāo)簽_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

DedeCMS從V5.3開始就支持自己擴(kuò)展標(biāo)簽,不過許多新人很少用那個東西,簡單的介紹下如何編寫自己的調(diào)用標(biāo)簽。我們需要知道下擴(kuò)展標(biāo)簽的存放目錄及文件名構(gòu)成,首先,擴(kuò)展的標(biāo)簽都是存放在/inelude/taglib這個目錄,名稱都是以"標(biāo)簽名.lib.php"格式,例如{dede:channel/}標(biāo)簽對應(yīng)的是channel.lib.php文件。我們可以看一個示例標(biāo)簽:demotag.lib.phpif(!defined('DEDEINC')){exit("RequestError!");}functionlib_demotag(&$ctag,&$refObj){global$dsql,$envs;〃屬性處理$attlist="row|12,titlelen|24";FillAttsDefault($ctag->CAttribute->ltems,$attlist);extract($ctag->CAttribute->ltems,EXTR_SKIP);$revalue=”;〃你需編寫的代碼,不能用echo之類語法,把最終返回值傳給$revalue// $revalue='HelloWord!';// return$revalue;}?>我們登錄系統(tǒng)后臺的[模板]-[全局標(biāo)簽測試沖運(yùn)行{dede:demotag/},顯示如下的結(jié)果:,我們會發(fā)現(xiàn)標(biāo)簽起作用了,輸出了我們的內(nèi)容。至此我們完成了標(biāo)簽的編寫,這里面主要涉及到PHP、MySQL的很多知識,需要有一定相關(guān)方面的基礎(chǔ)才能夠編寫標(biāo)簽了,當(dāng)然這里只是一個簡單的標(biāo)簽開發(fā)例子,還有許多的東西可以去開發(fā)。

這里我們知道,其實(shí)標(biāo)簽生成的內(nèi)容其實(shí)是這個函數(shù)的一個返回值,這里返回的內(nèi)容都是字符串,也就是函數(shù)return$revalue;中的$revalue需要是經(jīng)過處理后生成的字符串。$attlist="row|12,titlelen|24";這個是屬性列表,這個經(jīng)過函數(shù)處理后會直接生成變量并復(fù)制,我們可以測試下,做如下的修改:$revalue='HelloWord!';$revalue.="Row:".$row.";TitleLen:".$titlelen;模板代碼:{ded^:demotag 107titlelen='9991/}結(jié)果:HelloWordlRow:10;TitleLen:999這樣我們可以看到,這個屬性已經(jīng)被創(chuàng)建變量并且賦值了。接下來我們可以再進(jìn)一步去修改這個標(biāo)簽。比如說我們需要寫一個標(biāo)簽專門來查詢文章內(nèi)容頁的那個相關(guān)文章,功能類似于上面sql標(biāo)簽中的那個sql,只是這里我們將其分裝為一個標(biāo)簽。我們可以新建一個標(biāo)簽,例如叫writerarc,那我們就需要創(chuàng)建一個writerarc.lib.php,然后模仿demotag編寫函數(shù),注意需要修改為functionlib_writerarc(&$ctag,&$refObj)接下來我們就可以編寫查詢語句及對底層模板處理的相關(guān)函數(shù)了$revalue=”;

$innertext=$ctag->GetlnnerText();$ctp=newDedeTagParse();$ctp->SetNameSpace('field',']');$sql="SELECT*FROMdede_archivesWHEREwriter='{$refObj->Fields['writer']}'limit0,$row";$innertext這個是用來獲取標(biāo)簽的底層模板的,$ctp創(chuàng)建用于處理底層模板中的變量,并處理進(jìn)行替換。我們根據(jù)獲取的屬性編寫我們的sql語句,這里我們使用limit0,$row,這樣就可以根據(jù)$row來確定查詢的內(nèi)容數(shù)目。當(dāng)然我們可以獲取更多的屬性以便我們這個標(biāo)簽更強(qiáng)大,例如我們可以增加類似于arclist中的相關(guān)屬性,并在函數(shù)中進(jìn)行處理,不過這個需要有一定的PHP基礎(chǔ)。接下來我們通過執(zhí)行查詢對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->CTagsas$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)行替換,然后生成輸出字符串,將所有的字符串信息存儲到$revalue中。最后返回這個值return$revalue;整個文件內(nèi)容如下:if(!defined('DEDEINC')){exit("RequestError!");}functionlib_writerarc(&$ctag,&$refObj)

{global$dsql,$envs;〃屬性處理$attlist="row|12,titlelen|24";FillAttsDefault($ctag->CAttribute->ltems,$attlist);extract($ctag->CAttribute->ltems,EXTR_SKIP);$revalue=”;$innertext=$ctag->GetlnnerText();$ctp=newDedeTagParse();$ctp->SetNameSpace('field',']');$sql="SELECT*FROMdede_archivesWHEREwriter='{$refObj->Fields['writer']}'limit0,$row";$dsql->Execute('me',$sql);while($rs=$dsql->GetArray('me')){〃根據(jù)屬性處理查詢變量$rs['title']=cn_substr($rs['title'],$titlelen);//獲取底層模板$ctp->LoadSource($innertext);foreach($ctp->CTagsas$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:writerarcrow='10'titlelen='6'}[field:title/]

{/dede:writerarc}通過動態(tài)瀏覽頁面進(jìn)行查看調(diào)試/plus/view.php2aid-3:fi?ld? riptiiBn,aif4fa4<>h8 三F<div{/dedesfitld.descriptImiI<4ivelajs^"ffonteyitr:fi?ld? riptiiBn,aif4fa4<>h8 三F<div{/dedesfitld.descriptImiI<4ivelajs^"ffonteyitri^>bl?tidr^IGM8?111111時1田.2G*09-W:3F<sml1卜親荷:</5.na11>擊:</Sn^l1Xscrifptire■'7pty-pe-Btext/jrlptJJan/in^o7iirtuer[fifldMiTl#/!4nK

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論