




下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產(chǎn)代持合同協(xié)議書范本
- 汽車內(nèi)飾配件采購合同
- 離婚后住房分配合同樣本
- 二手施工設(shè)備購銷合同
- 家族遺產(chǎn)分配合同
- 借款擔(dān)保反擔(dān)保合同樣本
- 學(xué)校裝修合同案例
- 門面房屋買賣合同
- 太陽能發(fā)電政策考核試卷
- 新材料在新能源領(lǐng)域的應(yīng)用考核試卷
- 中央2025年中國科協(xié)所屬單位招聘社會在職人員14人筆試歷年參考題庫附帶答案詳解-1
- 殯儀服務(wù)員職業(yè)技能鑒定考試題(附答案)
- 電動葫蘆吊裝方案計(jì)劃
- 2025年山東電工電氣集團(tuán)招聘筆試參考題庫含答案解析
- 造價咨詢服務(wù)方案進(jìn)度計(jì)劃安排及保證措施
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識 CCAA年度確認(rèn) 試題與答案
- 2024年濰坊工程職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- JIS C9335-1-2014 家用和類似用途電器.安全性.第1部分:通用要求
- 甲溝炎治療的護(hù)理與預(yù)防
- 哈工大微電子工藝緒論01單晶硅
- 供養(yǎng)直系親屬有關(guān)文件
評論
0/150
提交評論