DedeCMS織夢arclist調用多圖顯示修改教程[織夢網站模板使用教程]

閱讀 ?·? 發布日期 2019-05-27 08:17 ?·? admin

  DedeCMS織夢arclist調用多圖顯示修改教程[織夢網站模板使用教程]經常逛新聞信息類移動站或APP會發現,首頁或列表采用AJAX無限加載的方法,看到你不想看為止,每條新聞有一張或三張配圖,從用戶的角度,看圖比看文字更有吸引力些,采用DedeCMS做新聞信息類也是非常受歡迎,但默認只能加載一張縮略圖,看看實現三張配圖的做法。

調用圖集模型前三張圖片做法

       打開/include/taglib/arclist.php,找到

$row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
$row['memberurl'] = $GLOBALS['cfg_memberurl'];
$row['templeturl'] = $GLOBALS['cfg_templeturl'];

       后面添加,根據自己的實際數據庫前綴修改橙色字段

$arrs = $dsql->GetOne("SELECT imgurls FROM `dede_addonimages` WHERE aid={$row['id']} ");
if(is_array($arrs)){
 $m="/ddimg=\'(.*)\'/U";
 if(preg_match_all($m,$arrs['imgurls'],$pregArr)){
  $row['one']=preg_replace($m,'\\1',$pregArr[0][0]);
  $row['two']=preg_replace($m,'\\1',$pregArr[0][1]);
  $row['three']=preg_replace($m,'\\1',$pregArr[0][2]);
 }
}

       前臺調用多張縮略圖

{dede:arclist}
 <img src="[field:one/]" width="200" height="100"/> //第1張圖片的地址
 <img src="[field:two/]" width="200" height="100"/> //第2張圖片的地址
 <img src="[field:three/]" width="200" height="100"/> //第3張圖片的地址
{/dede:arclist}

調用文章模型前三張圖片做法

       文章模型能自動獲取文章的第一張圖為縮略圖,也有些資源修改方法,這里介紹用頻道內容模型管理增加自定義字段掉用多張圖的方法,參考DedeCMS如何添加自定義字段與前臺調用。

 

       如果后面需要增加說明性的文字,就需要在該字段的自定義表單HTML填寫具體的HTML源代碼,

自定義表單HTML用~name~表示提示文字,~form~表示表單元素

 

       前臺用{dede:field.pic1/}調用,不是出現圖片地址,而是出現

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

       這是DedeCMS處理方式的問題,參考文章DedeCMS內容頁列表頁調用自定義圖片地址,創建 GetOneImgUrl函數,處理完了之后。

內容頁調用多張縮略圖

{dede:field.pic1 function='GetOneImgUrl(@me,0)'/}<!--調用完整HTML代碼-->
<img src="{dede:field.pic2 function='GetOneImgUrl(@me,1)'/}/><!--只調用圖片地址-->

列表頁調用多張縮略圖

       在該欄目列表下直接使用{dede:list}標簽,在其他列表或首頁用{dede:arclist}標簽,需要配合addfields和channelid使用,如下:

{dede:arclist addfields='pic1,pic2' channelid='1'}
[field:pic1 function='GetOneImgUrl(@me,0)'/] <!--調用完整HTML代碼-->
[field:pic2 function='GetOneImgUrl(@me,1)'/] <!--只調用圖片地址-->
{/dede:arclist}

調用文章、圖集模型第1,2,3張圖片另一實現方法

       打開include/extend.func.php,在最下面添加代碼:橙色部分是該欄目所在的數據表,根據實際情況修改

//取第一張地址
function GetFirstImg($arcid){
global $dsql;
$query= "SELECT anlsm FROM `dede_addon7` where aid='$arcid'";
$row = $dsql->GetOne($query);
$preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i";
preg_match_all($preg, $row['anlsm'], $match);
//print_r($match);
return $match[1][0];
}

//取第二張地址
function GetSecImg($arcid){
global $dsql;
$query= "SELECT anlsm FROM `dede_addon7` where aid='$arcid'";
$row = $dsql->GetOne($query);
$preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i";
preg_match_all($preg, $row['anlsm'], $match);
//print_r($match);
return $match[1][1];
}

//取第三張地址
function GetThirImg($arcid){
global $dsql;
$query= "SELECT anlsm FROM `dede_addon7` where aid='$arcid'";
$row = $dsql->GetOne($query);
$preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i";
preg_match_all($preg, $row['anlsm'], $match);
//print_r($match);
return $match[1][2];
}

        打開include/taglib/arclist.lib.php,找到如下代碼(大概在第514行):

$row['fulltitle'] = $row['title'];

        在下面添加代碼:

$row['firstimgurl'] = GetFirstImg($row['id']);
$row['secondimgurl'] = GetSecImg($row['id']);
$row['thirdimgurl'] = GetThirImg($row['id']);

       調用標簽為:

<img src="[field:firstimgurl/]" />//第一張圖片
<img src="[field:secondimgurl/]"/>//第二張圖片
<img src="[field:thirdimgurl/]"/>//第三張圖片

       如果你自定義的字段中沒圖片,獲取的地址就是空的。