如何在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织梦内容管理系统中,获取文章里的第一张图片可以通过修改系统源代码实现,以下是具体步骤和代码示例:

如何在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'] 字段,然后添加以下代码:

如何在DedeCMS中获取文章的第一张图片?

   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:如何确保在没有图片的情况下使用默认缩略图?

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

如何在DedeCMS中获取文章的第一张图片?

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结构进行调整。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1202298.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-10-11 10:19
下一篇 2024-10-11 10:24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入