我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

当前位置: 首页 > 问答 > 如何在DedeCMS中获取文章的靠前张图片?

你可以使用dede标签的内置函数runphp来获取文章里的第一张图片。示例代码如下:,,“php,{dede:field name='body' function='GetFirstImage(@me)'/},` ,,GetFirstImage是一个自定义函数,用于从文章内容中提取第一张图片。具体实现可以参考以下代码:,,`php,function GetFirstImage($str){, preg_match('//i',$str,$match);, return $match[1];,},“ ,,将以上代码添加到include/common.func.php文件中即可。

在DedeCMS织梦内容管理系统中,获取文章里的第一张图片可以通过修改系统源代码实现,以下是具体步骤和代码示例:

第一步:修改include/extend.func.php 文件

1、打开文件:找到并打开include/extend.func.php 文件。

2、添加函数:在文件的最下面插入以下函数代码:

   function GetFirstImg($arcid){       global $dsql;       $query = "select body FROMdede_addonarticle where aid='$arcid'";       $row = $dsql>GetOne($query);       $preg = "/<img.*?src=['"](.+?)['"]/i";       preg_match_all($preg, $row['body'], $match);       return $match[1][0];   }

第二步:修改include/taglib/arclist.lib.php 文件

1、打开文件:找到并打开include/taglib/arclist.lib.php 文件。

2、查找函数:找到function lib_arclistDone() 函数,大概在475行左右。

3、添加判断语句:在这个函数中找到$row['litpic'] 字段,然后添加以下代码:

   if (GetFirstImg($row['id']) != "") {       $row['litpic'] = GetFirstImg($row['id']);   }

通过上述两步修改,可以在DedeCMS织梦系统中调用文章内的第一张图片而非缩略图,如果文章中没有图片,则仍会显示缩略图,这种方法适用于DedeCMS v57 sp1版本,其他版本可能需要稍作调整。

相关问答FAQs

问题1:如何在DedeCMS中调用文章内容中的多张图片作为缩略图?

答:可以通过修改include/extend.func.php 文件中的函数来实现,可以使用以下代码来提取文章中的第n张图片作为缩略图:

if(!function_exists('getBodyonepic')){    function getBodyonepic($id, $addField='body'){        global $dsql;        $row = $dsql>GetOne("select a.litpic,c.addtable FROM #@__archives AS a LEFT JOIN #@__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;    }}

然后在模板标签中使用{dede:field.id function=getBodyonepic(@me)/} 来调用。

问题2:如何确保在没有图片的情况下使用默认缩略图?

答:在上述代码的基础上,可以添加一个判断条件,如果没有匹配到图片,则使用默认缩略图,具体实现如下:

if (count($match[1]) > 0) {    $row['litpic'] = $match[1][0];} else {    $row['litpic'] = '/images/defaultpic.gif'; // 默认缩略图路径}

这样,在没有图片的情况下,系统会自动使用默认的缩略图。

问题 解答
如何使用Dede织梦获取文章中的第一张图片 可以通过以下步骤实现:
1. 获取文章内容 使用Dede织梦的标签功能,获取文章的内容,可以使用标签{dede:field.body/} 来获取文章的正文内容。
2. 正则表达式匹配图片链接 使用正则表达式在获取到的文章内容中匹配第一张图片的链接,以下是一个示例正则表达式:
3. 提取图片链接 通过正则表达式提取匹配到的图片链接。
4. 使用提取到的图片链接 将提取到的图片链接用于后续的操作,如显示图片或保存图片等。

示例代码(PHP)

<?php// 获取文章内容$content = '{dede:field.body/}';// 正则表达式匹配图片链接$pattern = '/<img.*?src="(.*?)".*?>/';// 提取图片链接$matches = [];preg_match_all($pattern, $content, $matches);// 获取第一张图片链接$image_url = $matches[1][0] ?? '';// 使用提取到的图片链接// ...?>

注意

以上代码仅为示例,实际应用中可能需要根据具体情况进行调整。

正则表达式可能需要根据实际HTML结构进行调整。

免责声明:本站内容(文字信息+图片素材)来源于互联网公开数据整理或转载,仅用于学习参考,如有侵权问题,请及时联系本站删除,我们将在5个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

132-7207-3477

上班时间

周一到周五 09:00-18:00

二维码
线