為了使用模板標(biāo)記不破壞文檔的可讀性,dedecms不像別的模板,有時(shí)會(huì)使用直接往模板插入PHP或類(lèi)似PHP的代碼,以達(dá)到真正的模板與程序分離的特點(diǎn)。
但為了讓程序有更大的擴(kuò)展性,dedecms允許對(duì)標(biāo)記使用 function 進(jìn)行擴(kuò)展,function所使用的函數(shù)可以是系統(tǒng)函數(shù),也可以是自定義的函數(shù),只是用在兩個(gè)方面:1、模板標(biāo)記:
如:{dede:field name='pubdate' function=GetDateTimeMk('@me')/}
這個(gè)標(biāo)記實(shí)際返回的結(jié)果是執(zhí)行了GetDateTimeMk函數(shù)后的結(jié)果
一般情況下,模板標(biāo)記的自定義擴(kuò)展函數(shù)放在:
include/inc_functions.php
或
include/inc_functions.php
include/inc_channel_unit_functions.php
2、采集配置字段:
如:{dede:note field='title' value='[var:內(nèi)容]' function=test('@me')}
{dede:match}<title>[var:內(nèi)容]</title>{/dede:match}
{/dede:note}
這個(gè)采集節(jié)點(diǎn)返回的結(jié)果是執(zhí)行了函數(shù)test后返回的結(jié)果
一般情況下,采集擴(kuò)展的自定義擴(kuò)展函數(shù)放在:
include/pub_collection_functions.php
在上面例子中 @me 表示這個(gè)標(biāo)記本身的原始值,如果為int或浮點(diǎn)型,可以不加引號(hào),字符串則必須加引號(hào)
格式為:
{dede:tagname runphp='yes'}
$aaa = @me;
@me = "123456";
{/dede:tagname}
@me 表示這個(gè)標(biāo)記本身的值,因此標(biāo)記內(nèi)編程是不能使用echo之類(lèi)的語(yǔ)句的,只能把所有返回值傳遞給@me。
此外由于程序代碼占用了底層模板InnerText的內(nèi)容,因此需編程的標(biāo)記只能使用默認(rèn)的InnerText。
過(guò)濾掉HTML代碼
{dede:field name='description' function='html2text(@me)'/}
{dede:list imgwidth='*' imgheight='*'}
<img src='{dede:field name='litpic' /}' width="*" height="*">修改 includeinc_channel_unit_functions.php
里面的 <img src='".$imgsrc."' width=80 align=left>
可以改變縮略圖尺寸
5.1以前縮略圖地址是
120U10ML014147_lit.gif
5.1變成了lit_120U10ML014147.gif
把[field:picname function='str_replace("_lit","",@me)'/]
換成[field:picname function='str_replace("lit_","",@me)'/]'str_replace("主頁(yè)","",Html2Text("@me"))' 在產(chǎn)品列表中,有個(gè)值經(jīng)過(guò)函數(shù)處理,通常一個(gè)變量的情況下是這樣的:
[field:typeid function='get_linkshangpin(@me,3)'/]
[field:pubdate function='strftime("%m-%d",@me)'/]
[field:litpic function="CkLitImageView(@me,80)"/]
修改 includeinc_channel_unit_functions.php
里面的 <img src='".$imgsrc."' width=80 align=left>'cn_substr("@me",2). 取的是這個(gè)字段左邊的截取.
想從右邊開(kāi)始截取,用什么函數(shù)呢..
我在用DEDE調(diào)用supersite blog 里面的博客之星圖片.
它的圖片地址是UID號(hào)對(duì)應(yīng)的目錄.
比如UID是176 可能對(duì)就的會(huì)員圖片是/cn_substr("@me",2). 截取的UID變成了17...如何才能截右邊呢.變成76 ,
function=substr("@me",-2)利用DEDE的runphp功能為評(píng)論加入驗(yàn)證碼(可選開(kāi)關(guān))
首先在include/config_base.php中加入以下代碼:
Copy code
//評(píng)論是否啟用驗(yàn)證碼(0否1是)如果更改了這里,必須重新生成文章HTML
$feedback_validate = 1;
然后
在/templets/default/article_article.htm,/templets/plus/feedback_templet.htm等有評(píng)論表單的地方的相應(yīng)位置加入以下代碼:
{dede:php runphp='yes'}
if($feedback_validate) {
@me = "<tr>
<td>驗(yàn)證碼:</td>
<td><input name="validate" type="text" id="validate"> <img src="/include/validateimg.php" alt="看不清楚可點(diǎn)擊這里更換!" border="0" align="absmiddle" onclick="this.src=this.src;"></td>
</tr>";
}
{/dede:php}在/plus/feedback.php中找到如下代碼:else if($action=="send")
{
在下面加入:
session_start();
if( empty($_SESSION["s_validate"]) ) $svali = "";
else $svali = $_SESSION["s_validate"];
if($feedback_validate && strtolower($vdcode)!=$svali && $svali!=""){
ShowMsg("驗(yàn)證碼錯(cuò)誤!","-1");
exit();這樣就可以實(shí)現(xiàn)評(píng)論驗(yàn)證碼的功能了,并且可選開(kāi)關(guān)。
另外,評(píng)論還可以加入時(shí)間限制,IP限制等{dede:field name='keywords' runphp='yes' }
if(!empty(@me)){
$kws = explode(' ',@me);
@me = "";
foreach($kws as $k){
@me .= "<a class='tags' HREF='javascript:void(null)'>$k</a> ";
}
//@me= str_replace('+', ' ',trim(@me));
}
{/dede:field}
網(wǎng):http://www.veryhuo.com/
網(wǎng):http://www.veryhuo.com/
靈活使用擴(kuò)展函數(shù),可以做出很多隨意的功能,但又不用改動(dòng)系統(tǒng)的源碼,對(duì)于采集擴(kuò)展,更加是可以更靈活處理采集到的原始內(nèi)容。
織夢(mèng)標(biāo)記允許有限的編程擴(kuò)展。
function=
function=
76/photo_176.gif
可如果我用function='