步驟 1
\include\extend.func.php 在最下面添加
/**
?*??自定義圖片字段調(diào)用圖片地址
?*
?*?@access????public
?*?@param?????string??$fieldname?? 字段名
?*?@param?????string??$ftype ?? 輸出樣式
?*?@return????string
?*/
if(!function_exists('GetImgUrl'))
{
function?GetImgUrl($fieldname,?$ftype?=?1)
{
if($fieldname?!=?'')
{
$dtp?=?new?DedeTagParse();
$dtp->LoadSource($fieldname);
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?.=?'';
}
}
}
}
}
$dtp->Clear();
return?$img;
}
}
}
步驟 2
打開\templets\system\channel_article_image.htm 清空所有東西,只留下
[field:imgsrc/]
步驟3
前臺調(diào)用方法
[field:自定義字段名 /]??
以上方法有問題,親測下面的方法有效。
做站過程中碰到這樣一個問題,找到解決辦法收藏分享:為什么在首頁用自定義列表調(diào)用出來的圖片字段不是正確的圖片地址,而是類似于:
{dede:img?text=''?width='270'?height='129'}?/uploads/101017/1-10101H21F54P.gif?{/dede:img} 這樣的格式!
非常明顯,這樣是不能正確顯示的,這是織夢自定義圖片字段的處理方式造成的。要解決這個問題,我們必須得創(chuàng)建一個自定義函數(shù),其實現(xiàn)方式為:
一、實現(xiàn)方法
1)創(chuàng)建自定義函數(shù)
打開?/include/extend.func.php?文件(注:這個文件就是系統(tǒng)預留的自定義函數(shù)接口文件,主要用于二次開發(fā)用的。如果你是老版本,默認沒有這個文件,自己創(chuàng)建一個PHP文件即可),在最下面的?>上一行加入以下函數(shù)代碼:
[html]?view plain?copy
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.=?'';?????
????????????????????????}?????
????????????????????}?????
????????????????}?????
????????????}?????
????????}?????
$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)'/]?標簽)-->
[field:imgurl?function='GetOneImgUrl(@me,1)'/]?
二、示例演示
1)模型字段添加
進入網(wǎng)站后臺,點擊[核心]——[內(nèi)容模型管理],點擊“普通文章”的“更改”按鈕,進入編輯界面,切換到“字段管理”選項,點擊“添加新字段”,如圖:
創(chuàng)建好字段以后,我們在增加或編輯文檔時候,那么就會有這個字段了,如圖:
上傳好你要顯示的圖片以后,保存即可。
2)前臺調(diào)用
原本我們前臺調(diào)用這個字段的方法,就是通過arclist標簽的?channelid?與?addfields?兩個參數(shù)來配合調(diào)用(點擊查看arclist的標簽詳解),這里不再重復的一一熬述。但大體的自定義字段的方法是這樣的:
{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'}? ? ??
[field:title/][field:imgurl?function='GetOneImgUrl(@me,0)'/]
{/dede:arclist}? ?
或者使用sql語句查詢:
{dede:arclist??typeid='~id~'?flag?=?'p'}??
[field:idrunphp="yes"]???
$row?=?$GLOBALS['dsql']->GetOne("Select?img?From?`dede_addonimages`?where?aid=@me");???
@me?=?$row['img'];??
@me=GetOneImgUrl(@me,1);??
????[/field:id]??
{/dede:arclist}???
重要:
