小冬SEO

织梦调用文章第一张图片,非缩略图,不限图片格式

2020-02-22 23:35:49 152 织梦二开

有时候我们在织梦建站时,需要在首页或者列表页调用较为清晰的图片,但是织梦默认的调用标签是:[field:litpic/],这个调用标签只能调用文章的缩略图,但是为了达到想要的美观效果,我们需要首页或列表页调用文章第一张图片作为封面图。

所以这个时候就需要我们进行二次开发

织梦调用文章第一张图片教程如下:

方法一:调用文章第一张图片限jpg格式

dede列表调用文章、软件或图集的第一张图片大图原图地址(非缩略图)

网上有说改common.func.php这个文件的,我试过但是不行

步骤:

1、找到include/extend.func.php

在结尾处添加如下代码:

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

方法二:调用文章第一张图片不限图片img格式

同样是修改上面include/extend.func.php文件,在结束部分添加如下代码:

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

2、调用标签

调用标签有两种方式,第一种是直接调用文章第一张原图:{dede:field name='litpic' function="firstimg(@me)"/}

第二种是循环标签中调用:[field:litpic function=firstimg('@me')/]

方法三:调用文章单图或者多图,不通过缩略图

织梦文章内容提取第一张图片

打开 /include/extend.func.php 在最下面加入个方法

/**
*  文章内容提取第一张图片
*
* @access    public
* @param     string  $id文档id
* @param     string  $addField字段名
* @return    string
*/
if(!function_exists('getBodyonepic'))
{
function getBodyonepic($id, $addField='body')
{
global $dsql;
$row = $dsql->GetOne("SELECT a.litpic,c.addtable FROM dede_archives AS a LEFT JOIN dede_channeltype AS c ON a.channel=c.id where a.id='$id'");
$addtable = trim($row['addtable']);
if($row['litpic'] == '-' || $row['litpic'] == '')
{
$litpic = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
}
$row = $dsql->GetOne("SELECT $addField FROM `$addtable` WHERE aid=$id");
$body = $row["$addField"];
preg_match_all("/<img([^>]*)s*src=('|")([^'"]+)('|")/",$body,$matches);
$imgsrc_arr = array_unique($matches[3]);
$result = $imgsrc_arr[0] ? $imgsrc_arr[0] : $litpic;
return $result;
}
}

首页/列表页标签调用

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

内容页标签调用

{dede:field.id function=getBodyonepic(@me)/}

织梦文章内容提取图片(多张)自定义输出

打开 /include/extend.func.php 在最下面加入个方法

/**
*  文章内容提取图片(多张)自定义输出
*
* @access    public
* @param     string  $string  文档内容
* @param     string  $num  输出几张
* @return    string
*/
if(!function_exists('getBodypics'))
{
function getBodypics($string, $num)
{
preg_match_all("/<img([^>]*)s*src=('|")([^'"]+)('|")/",$string,$matches);
$imgsrc_arr = array_unique($matches[3]);
$count = count($imgsrc_arr);
$i = 0;
foreach($imgsrc_arr as $imgsrc)
{
if($i == $num) break;
$result .= "<img src="$imgsrc"/>";
$i++;
}
return $result;
}
}

首页/列表页标签调用

{dede:arclist typeid='' row='' channelid='填模型id' addfields='body'}

[field:body function=getBodypics(@me,5)/]

{/dede:arclist}

内容页标签调用

{dede:field.body function=getBodypics(@me,5)/}

注意,如果你没有修改include/extend.func.php这个文件的话,直接用这个调用标签,那么你的栏目和内容页面是没法生成的,就出出现,点击生成栏目页和文章页,程序无响应,也没有任何提示,以上便是小冬SEO教程网为大家提供的织梦调用文章第一张图片,而不是缩略图的调用标签教程。

版权保护: 本文由小冬SEO编辑发布,转载请保留链接: https://www.cdseoyh.cn/cms/34.html

小冬SEO 草根seoer,从事搜索引擎关键词优化,喜欢学习专研各类SEO优化技巧—小冬SEO博客
  • 137文章总数
  • 153本页访问
  • 运营时间
  • 标签

    友情链接

      {dede:sql sql="select url,webname from dede_flink where typeid = (select id from dede_flinktype where typename=~typename~)"}
    • [field:webname/]
    • {/dede:sql}