dedecms 擴(kuò)展標(biāo)簽和dede自定義標(biāo)簽實(shí)現(xiàn)方法
來源:易賢網(wǎng) 閱讀:1060 次 日期:2016-06-28 11:08:41
溫馨提示:易賢網(wǎng)小編為您整理了“dedecms 擴(kuò)展標(biāo)簽和dede自定義標(biāo)簽實(shí)現(xiàn)方法”,方便廣大網(wǎng)友查閱!

我們需要知道下擴(kuò)展標(biāo)簽的存放目錄及文件名構(gòu)成,首先,擴(kuò)展的標(biāo)簽都是存放在/include/taglib這個目錄,名稱都是以“標(biāo)簽名.lib.php”格式,例如{dede:channel/}標(biāo)簽對應(yīng)的是channel.lib.php文件。

我們可以看一個示例標(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之類語法,把最終返回值傳給$revalue

//------------------------------------------------------

$revalue = 'hello word!';

//------------------------------------------------------

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 = 'hello word!';

$revalue .=

row:.$row.;titlelen:.$titlelen;

這樣我們可以看到,這個屬性已經(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ù),注意需要修改為

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這個是用來獲取標(biāo)簽的底層模板的,$ctp創(chuàng)建用于處理底層模板中的變量,并處理進(jìn)行替換。我們根據(jù)獲取的屬性編寫我們的sql語句,這里我們使用limit 0, $row,這樣就可以根據(jù)$row來確定查詢的內(nèi)容數(shù)目。

更多信息請查看CMS教程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀CMS教程

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)