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

下載本文檔

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

文檔簡(jiǎn)介

DedeCMS從V5.3開始就支持自己擴(kuò)展標(biāo)簽,不過許多新人很少用那個(gè)東西,簡(jiǎn)單的介紹下如何編寫自己的調(diào)用標(biāo)簽。我們需要知道下擴(kuò)展標(biāo)簽的存放目錄及文件名構(gòu)成,首先,擴(kuò)展的標(biāo)簽都是存放在/inelude/taglib這個(gè)目錄,名稱都是以"標(biāo)簽名.lib.php"格式,例如{dede:channel/}標(biāo)簽對(duì)應(yīng)的是channel.lib.php文件。我們可以看一個(gè)示例標(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)后臺(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='HelloWord!';$revalue.="Row:".$row.";TitleLen:".$titlelen;模板代碼:{ded^:demotag 107titlelen='9991/}結(jié)果:HelloWordlRow:10;TitleLen:999這樣我們可以看到,這個(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ù),注意需要修改為functionlib_writerarc(&$ctag,&$refObj)接下來我們就可以編寫查詢語句及對(duì)底層模板處理的相關(guān)函數(shù)了$revalue=”;

$innertext=$ctag->GetlnnerText();$ctp=newDedeTagParse();$ctp->SetNameSpace('field',']');$sql="SELECT*FROMdede_archivesWHEREwriter='{$refObj->Fields['writer']}'limit0,$row";$innertext這個(gè)是用來獲取標(biāo)簽的底層模板的,$ctp創(chuàng)建用于處理底層模板中的變量,并處理進(jìn)行替換。我們根據(jù)獲取的屬性編寫我們的sql語句,這里我們使用limit0,$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->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)行替換,然后生成輸出字符串,將所有的字符串信息存儲(chǔ)到$revalue中。最后返回這個(gè)值return$revalue;整個(gè)文件內(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;}?>接下來我們來測(cè)試我們這個(gè)標(biāo)簽,我們修改article_article.htm模板,在里面加入以下的標(biāo)簽代碼:{dede:writerarcrow='10'titlelen='6'}[field:title/]

{/dede:writerarc}通過動(dòng)態(tài)瀏覽頁(yè)面進(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時(shí)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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論