看到織夢官方網(wǎng)站上很多朋友在問:為什么在首頁用自定義列表調(diào)用出來的圖片字段不是正確的圖片地址?要解決這個問題,我們必須得創(chuàng)建一個自定義函數(shù),下面我們就來進行詳細的說明
一、實現(xiàn)方法1)創(chuàng)建自定義函數(shù)
打開 /include/extend.func.php 文件(注:這個文件就是系統(tǒng)預(yù)留的自定義函數(shù)接口文件,主要用于二次開發(fā)用的。如果你是老版本,默認沒有這個文件,自己創(chuàng)建一個PHP文件即可),在最下面的?>上一行加入以下函數(shù)代碼:
代碼如下:
/****************
function GetOneImgUrl
@@ 功能:讀取自定義字段圖片地址
*****************/
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;
}
}
保存后關(guān)閉即可。
2)函數(shù)調(diào)用方法問:我們創(chuàng)建好函數(shù)以后,那么這個函數(shù)要如何來調(diào)用呢?
答:本函數(shù)的調(diào)用方法為:
[field:自定義圖片字段名 function='GetOneImgUrl(@me,顯示類型)'/]
比如:我們的自定義圖片字段名為 imgurl ,那么調(diào)用方式有以下兩種:
[field:imgurl function='GetOneImgUrl(@me,0)'/] <!–調(diào)用圖片的信息,自動調(diào)用寬度和高度(已包含Html代碼的<img />標簽)–>
[field:imgurl function='GetOneImgUrl(@me,1)'/] <!–只調(diào)用圖片地址,一般可用于背景圖嵌套–>
二、示例演示
1)模型字段添加進入網(wǎng)站后臺,點擊[核心]——[內(nèi)容模型管理],點擊“普通文章''的“更改''按鈕,進入編輯界面,切換到“字段管理''選項,點擊“添加新字段''。
創(chuàng)建好字段以后,我們在增加或編輯文檔時候,那么就會有這個字段了。
上傳好你要顯示的圖片以后,保存即可。
2)前臺調(diào)用原本我們前臺調(diào)用這個字段的方法,就是通過arclist標簽的 channelid 與 addfields 兩個參數(shù)來配合調(diào)用,這里不再重復(fù)的一一熬述。但大體的自定義字段的方法是這樣的:
{dede:arclist row='2′ channeld='1′ addfields='自定義字段1,自定義字段2′}
底層模板 insertext
{/dede:arclist}
運用到我們剛才的這個函數(shù),調(diào)用方法為:
{dede:arclist row='5′ orderby='id' channelid='1′ addfields='imgurl'}
<li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]</li>
{/dede:arclist}