织梦dede调用文章第一张原图地址的方法

2018年12月11日23:55:32 2 1,681 views

今天做dede时候列表页是图片展示,当我调用缩略图    [field:picname/]   的时候,发现图片失真,所以改成调用原图地址。

列表页调用原图

说它是自动识别,其实只是用了字符串切割的方法,如果勾选提取第一个图片缩略图的话,文章的缩略图和第一张图片只多了一个“-lp”的字符串,

用php的“str_replace”函数切割一下就行了。方法如下:

打开 /include/common.func.php在最后面加入如下代码:

/* 调取文章第一张图片地址 */
function firstimg($str_pic)
{
$str_sub=str_replace("-lp","","$str_pic");  //把缩略图中的‘"-lp"’  删掉就是第一张图的地址了。
return $str_sub;
}

标签中调用:

[field:litpic function=firstpic('@me')/]

直接调用:

{dede:field name='litpic' function="firstpic(@me)"/}

 

以下还有两种方法,选择适合自己的。

第一种

方法是网上很早流传的代码类似如下:

打开 /include/common.func.php在最后面加入如下代码:

function firstpic($str_pic) 
{ 
    $str_sub=substr($str_pic,0,-7).".jpg";//删除缩略图字符串最后七位,然后再补上后缀.jpg 
    return $str_sub; 
}

标签中调用:

[field:litpic function=firstpic('@me')/]

直接调用:

{dede:field name='litpic' function="firstpic(@me)"/}

这种方法可以是可以,但是我们用图片不一定全是jpg,可能是png、gif又或是其他格式,那么这种情况这个.jpg就不太合适了。

 

第二种

如果自己上传缩略图的话,貌似头一种就用不了了,这时候就要再用另一种方法:

打开 /include/helpers/archive.helper.php 在最后面加入如下代码

if(!function_exists('GetImgs'))
{
    function GetImgs($aid)
    {
        global $dsql;
        $query = "select body FROM `dede_addonarticle` where aid='$aid'";
        $dsql->Execute('body',$query);
        $row = $dsql->GetArray('body');
        preg_match('//i',$row['plot'],$str);
        $GImgs = $str[2];
        return $GImgs;
    }
}

标签中调用:

[field:id function=GetImgs(@me)/]

历史上的今天:


欢迎来到菜鸟头头的个人博客
本文章百度已收录,若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。

  • A+
所属分类:PHP

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  1   博主  1

    • avatar 陈杰博客 2

      我用的第一套cms系统就是织梦