DedeCMS自定義字段圖片調用的問題{dede:img ...}解決方法

2020-12-15


在首頁用自定義列表調用出來的圖片字段不是正確的圖片地址,而是類似于:

{dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img}

這樣的格式!
非常明顯,這樣是不能正確顯示的,這是織夢自定義圖片字段的處理方式造成的。要解決這個問題,我們必須得創建一個自定義函數,其實現方式為:

打開 /include/extend.func.php 文件(注:這個文件就是系統預留的自定義函數接口文件,主要用于二次開發用的。如果你是老版本,默認沒有這個文件,自己創建一個PHP文件即可),在最下面的?>上一行加入以下函數代碼:

function GetOneImgUrl($img,$ftype=1){ 
if($img <> ''){ 
$dtp = new DedeTagParse(); 
$dtp->LoadSource($img); 
if(is_array($dtp->CTags)){ 
foreach($dtp->CTags as $ctag){ 
if($ctag->GetName()=='img'){ 
$width = $ctag->GetAtt('width'); 
$height = $ctag->GetAtt('height'); 
$imgurl = trim($ctag->GetInnerText()); 
$img = ''; 
if($imgurl != ''){ 
if($ftype==1){ 
$img .= $imgurl; 

else{ 
$img .= '<img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" />'; 






$dtp->Clear(); 
return $img;     

}

保存后關閉即可,函數調用方法如下所示:

[field:自定義圖片字段名 function="GetOneImgUrl(@me,顯示類型)"/]

比如:我們的自定義圖片字段名為 imgurl ,那么調用方式有以下兩種:

[field:imgurl function='GetOneImgUrl(@me,0)'/] <!--調用圖片的信息,自動調用寬度和高度(已包含Html代碼的<img />標簽)-->
[field:imgurl function='GetOneImgUrl(@me,1)'/] <!--只調用圖片地址,一般可用于背景圖嵌套-->

二、示例演示
1)模型字段添加

進入網站后臺,點擊[核心]——[內容模型管理],點擊“普通文章”的“更改”按鈕,進入編輯界面,切換到“字段管理”選項,點擊“添加新字段”,如圖:
創建好字段以后,我們在增加或編輯文檔時候,那么就會有這個字段了,如圖:
上傳好你要顯示的圖片以后,保存即可。
2)前臺調用
原本我們前臺調用這個字段的方法,就是通過arclist標簽的 channelid 與 addfields 兩個參數來配合調用(點擊查看arclist的標簽詳解),這里不再重復的一一熬述。但大體的自定義字段的方法是這樣的:

{dede:arclist row='5' orderby='id' channelid='1' addfields='imgurl'}  
<li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]</li> 
{/dede:arclist}  

0
首頁
案例
關于
聯系
凯时平台