做站過程中碰到這樣一個問題,找到解決辦法收藏分享:為什么在首頁用自定義列表調用出來的圖片字段不是正確的圖片地址,而是類似于:
引用
{dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img}
這樣的格式!
非常明顯,這樣是不能正確顯示的,這是織夢自定義圖片字段的處理方式造成的。要解決這個問題,我們必須得創建一個自定義函數,其實現方式為:
一、實現方法
1)創建自定義函數
打開 /include/extend.func.php 文件(注:這個文件就是系統預留的自定義函數接口文件,主要用于二次開發用的。如果你是老版本,默認沒有這個文件,自己創建一個PHP文件即可),在最下面的 >上一行加入以下函數代碼:
折疊PHP 代碼復制內容到剪貼板
引用
- function GetOneImgUrl($img,$ftype=1){
- if($img $amp;<amp;$gt; ''){="" ="" <="" li="">
- $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.'" /$amp;>apos;$;
- }
- }
- }
- }
- }
- $dtp->Clear();
- return $img;
- }
- }
保存后關閉即可。
2)函數調用方法
問:我們創建好函數以后,那么這個函數要如何來調用呢?
答:本函數的調用方法為:
[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='2' channeld='1' addfields='自定義字段1,自定義字段2'}
底層模板 insertext
{/dede:arclist}
運用到我們剛才的這個函數,調用方法為:
折疊XML/HTML 代碼復制內容到剪貼板
引用
- {dede:arclist row='5' orderby='id' channelid='1' addfields='imgurl'}
- <li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]</li>
- {/dede:arclist}
好了,我們來看一下前臺的效果圖:
好了,如果大家還有不懂的地方,歡迎留言。