返回舊版| 微信建站| 我要建站 | 建站學習 | 加入收藏
DEDECMS當前位置:首頁 > cms教程 > 綜合cms > DEDECMS > 正文

dede織夢_高級功能function擴展-dede @me使用

發布時間:2019-10-30 11:37:26   來源:   點擊:
為了使用模板標記不破壞文檔的可讀性,dedecms不像別的模板,有時會使用直接往模板插入PHP或類似PHP的代碼,以達到真正的模板與程序分離的特點。
但為了讓程序有更大的擴展性,dedecms允許對標記使用function 進行擴展,function所使用的函數可以是系統函數,也可以是自定義的函數,只是用在兩個方面:

1、模板標記:

如:{dede:field name='pubdate' function=GetDateTimeMk('@me')/}

這個標記實際返回的結果是執行了GetDateTimeMk函數后的結果

一般情況下,模板標記的自定義擴展函數放在:
include/inc_functions.php

include/inc_functions.php
include/inc_channel_unit_functions.php

2、采集配置字段:

如:
  1. {dede:note field='title' value='[var:內容]' function=test('@me')} 
  2. {dede:match}<title>[var:內容]</title>{/dede:match} 
  3. {/dede:note} 
這個采集節點返回的結果是執行了函數test后返回的結果

一般情況下,采集擴展的自定義擴展函數放在:include/pub_collection_functions.php

在上面例子中 @me 表示這個標記本身的原始值,如果為int或浮點型,可以不加引號,字符串則必須加引號

靈活使用擴展函數,可以做出很多隨意的功能,但又不用改動系統的源碼,對于采集擴展,更加是可以更靈活處理采集到的原始內容。

織夢標記允許有限的編程擴展。
當前系統時間
  1. {dede:tagname runphp='yes'}@me = date("Y");{/dede:tagname} 
格式為:
  1. {dede:tagname runphp='yes'
  2. $aaa = @me; 
  3. @me = "123456"
  4. {/dede:tagname} 
@me 表示這個標記本身的值,因此標記內編程是不能使用echo之類的語句的,只能把所有返回值傳遞給@me。
此外由于程序代碼占用了底層模板InnerText的內容,因此需編程的標記只能使用默認的InnerText。

過濾掉HTML代碼
  1. {dede:arclist sort='hot' titlelen=40 row=8} 
  2. <LI><A title="[field:title function='html2text(@me)'/]" href="[field:arcurl/]">[field:title/]</A></LI> 
  3. {/dede:arclist} 
  1. {dede:field name='description' function='html2text(@me)'/} 
  2. {dede:list imgwidth='*' imgheight='*'
  3. <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)'/]

function='str_replace("主頁","",Html2Text("@me"))'

在產品列表中,有個值經過函數處理,通常一個變量的情況下是這樣的:

[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>

function='cn_substr("@me",2). 取的是這個字段左邊的截取.

想從右邊開始截取,用什么函數呢..

我在用DEDE調用supersite blog 里面的博客之星圖片.

它的圖片地址是UID號對應的目錄.

比如UID是176 可能對就的會員圖片是/76/photo_176.gif

可如果我用function='cn_substr("@me",2). 截取的UID變成了17...

如何才能截右邊呢.變成76 ,function=substr("@me",-2)

利用DEDE的runphp功能為評論加入驗證碼(可選開關)

首先在include/config_base.php中加入以下代碼:

Copy code
//評論是否啟用驗證碼(0否1是)如果更改了這里,必須重新生成文章HTML
$feedback_validate = 1;

然后在/templets/default/article_article.htm,/templets/plus/feedback_templet.htm等有評論表單的地方的相應位置加入以下代碼:
  1. {dede:php runphp='yes'
  2. if($feedback_validate) { 
  3. @me = "<tr> 
  4. <td>驗證碼:</td> 
  5. <td><input name=\"validate\" type=\"text\" id=\"validate\"> <img src=\"/include/validateimg.php\" alt=\"看不清楚可點擊這里更換!\" border=\"0\" align=\"absmiddle\" onclick=\"this.src=this.src;\"></td> 
  6. </tr>"; 
  7. {/dede:php} 
在/plus/feedback.php中找到如下代碼:
  1. else if($action=="send"
  2. 在下面加入: 
  3. session_start(); 
  4. if( empty($_SESSION["s_validate"]) ) $svali = ""
  5. else $svali = $_SESSION["s_validate"]; 
  6. if($feedback_validate && strtolower($vdcode)!=$svali && $svali!=""){ 
  7. ShowMsg("驗證碼錯誤!","-1"); 
  8. exit(); 

這樣就可以實現評論驗證碼的功能了,并且可選開關。另外,評論還可以加入時間限制,IP限制等
  1. {dede:field name='keywords' runphp='yes' } 
  2. if(!empty(@me)){ 
  3. $kws = explode(' ',@me); 
  4. @me = ""
  5. foreach($kws as $k){ 
  6. @me .= "<a class='tags' HREF='javascript:void(null)' onclick='var ajax=new AJAXRequest;document.getElementById(\"relatedlinks\").innerHTML=\"< img src=http://www.joohe.com/images/indicator.gif>數據加載中,請稍候...\"; ajax.get(\"/plus/searchtag.php?keyword=".urlencode($k)."\",\"relatedlinks\");'>$k</a> "
  7. //@me= str_replace('+', ' ',trim(@me)); 
  8. {/dede:field} 

【轉載自:https://www.cnblogs.com/onlylove2015/p/4387436.html】
相關欄目
熱門文章
最新圖文
評論排行
版權所有:鄭州騰石網絡科技有限公司 備案信息:豫ICP備18019117號
站長QQ:2863868475 業務合作咨詢:15137100750(同微信)
本站所有投放的廣告是有其他網站提供,不代表本站立場,同時網站首頁廣告位對外出租詳情咨詢本站站長!同時歡迎廣大站長加入個人建站團隊
  • 建站客服
  • CMS仿站
  • CMS學習
  • 技術交流群:336572814
辽宁十一选五一定牛图表