dede如何提取文章第一张图为缩略图?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文
  1. 推荐方式:使用自动摘要功能(最稳定、官方)
  2. 手动修改模板(最灵活、需要一定代码基础)

下面我将详细介绍这两种方法。

dede 提取第一个图片为缩略图
(图片来源网络,侵删)

使用 DedeCMS 自带的自动摘要功能(推荐)

这是最官方、最稳定的方法,利用了 DedeCMS 的自动摘要和自动提取缩略图的功能。

前提条件:

  1. 文章模型中必须开启“自动摘要”

    • 进入后台 核心 -> 内容模型管理
    • 点击你正在使用的文章模型(如“文章”)进行修改。
    • 在模型字段设置中,找到 description(字段,确保 isnull(允许为空)是“否”,并勾选 autoadmin(后台自动生成)选项。
  2. 必须使用编辑器插入图片

    • 在后台发布文章时,必须使用 DedeCMS 自带的编辑器(如百度编辑器、FCKeditor 等)的“插入图片”按钮来添加图片,而不是直接粘贴外部图片链接或手动写 <img> 标签,这样才能保证 <img> 标签的格式规范。

操作步骤:

  1. 开启自动提取缩略图

    dede 提取第一个图片为缩略图
    (图片来源网络,侵删)
    • 进入后台 系统 -> 系统基本参数 -> 核心设置
    • 找到 自动提取缩略图 选项,将其设置为“是”。
    • 找到 自动提取缩略图远程图片是否下载本地,根据需要设置(通常建议开启,避免外部图片失效)。
    • 保存设置。
  2. 发布文章时设置缩略图

    • 在后台发布或编辑文章时,你会看到“缩略图”这一栏。
    • 关键一步:在文章内容编辑框中,将光标定位在第一张图片的位置。
    • 然后点击右侧的 自动提取 按钮。
  3. 完成

    • 点击“自动提取”后,系统会自动从你光标位置(即第一张图片)提取图片路径,并填充到“缩略图”输入框中。
    • 如果图片是远程的,并且你开启了远程图片下载,系统还会自动将图片下载到你的网站服务器上。
    • 发布文章后,这张图片就会成为文章的缩略图。

优点

  • 操作简单,无需修改代码。
  • 官方功能,稳定可靠,兼容性好。

缺点

  • 每次发布/编辑文章时都需要手动点击“自动提取”,如果文章数量多会比较繁琐。
  • 依赖编辑器的规范操作。

修改模板文件(手动调用,更灵活)

如果你希望在首页、列表页等地方直接调用文章内容中的第一张图片作为缩略图,而不需要手动在后台设置,那么就需要修改模板文件,这通常通过自定义函数或修改 arclist 标签实现。

这里我们以最常用的方法——修改 include/extend.func.php 文件,添加一个自定义函数为例。

操作步骤:

  1. 创建或修改 extend.func.php 文件

    • 在你的网站根目录下的 include 文件夹中,找到 extend.func.php 文件。
    • 如果这个文件不存在,请手动创建一个。
    • 在这个文件的末尾(?> 之前),添加以下 PHP 函数代码:
    /**
     * 获取文章内容中的第一张图片路径
     * @param string $body 文章内容
     * @return string 第一张图片的路径,如果没有则返回默认图
     */
    function GetFirstImg($body)
    {
        // 如果内容为空,返回空
        if (empty($body)) {
            return '';
        }
        // 匹配 <img> 标签的正则表达式
        $pattern = "/<img\s[^>]*?src=['\"]([^'\"]*?)['\"][^>]*?>/i";
        // 执行匹配
        preg_match_all($pattern, $body, $matches);
        // 如果找到了图片
        if (isset($matches[1]) && !empty($matches[1])) {
            // 返回第一张图片的 src
            return $matches[1][0];
        }
        // 如果没有找到图片,可以返回一个默认的缩略图路径
        // return '/images/default_thumb.jpg'; // 取消注释这行可以设置默认图
        return '';
    }
  2. 在模板文件中使用这个函数

    • 打开你需要调用缩略图的模板文件,例如首页模板 index.htm 或列表页 list_article.htm
    • 找到调用文章缩略图的地方(通常是 [field:picname/])。
    • 将其替换为调用我们刚刚创建的函数,通常在 arclistlist 标签内使用。

    示例:在首页 {dede:arclist} 中调用

    {dede:arclist row='8' titlelen='30'}
    <li>
        <!-- 原来的调用方式 -->
        <!-- <a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]"></a> -->
        <!-- 新的调用方式 -->
        <a href="[field:arcurl/]">
            <!-- 调用GetFirstImg函数,如果获取到图片则显示,否则不显示img标签 -->
            [field:body function='(trim(@me) ? "<img src=\"".GetFirstImg(@me)."\" alt=\"[field:title/]\">" : "")]
        </a>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
    {/dede:arclist}

    代码解释

    • [field:body function='...']:这是对文章内容 body 字段进行处理。
    • @me:在函数中代表当前字段的值,也就是文章内容。
    • GetFirstImg(@me):调用我们第一步创建的函数,传入文章内容,并获取返回的第一张图片路径。
    • trim(@me) ? ... : "":这是一个三元运算符,判断 @me(即函数返回的图片路径)是否为空,如果不为空,则输出 <img> 标签;如果为空,则输出空字符串。
    • alt="[field:title/]":为图片添加 alt 属性,有利于 SEO,这里使用文章标题。

优点

  • 完全自动化,无需后台干预。
  • 非常灵活,可以在任何模板中调用。

缺点

  • 需要修改代码,对新手有一定门槛。
  • 如果网站升级,extend.func.php 文件可能会被覆盖,需要重新添加。
  • 正则表达式可能无法处理所有格式的 <img> 标签(例如包含换行符的)。

总结与建议

特性 方法一(自动摘要) 方法二(修改模板)
操作难度
自动化程度 手动操作 完全自动
稳定性 非常高 依赖代码和模板
适用场景 日常发布少量文章,追求稳定 首页、列表页等需要自动化展示缩略图的场景

我的建议是

  • 对于普通网站管理员:优先使用 方法一,它最简单、最不容易出错,符合 DedeCMS 的设计逻辑。
  • 对于需要高度自定义和自动化展示的开发者:使用 方法二,它能让你在前端模板中更自由地控制缩略图的显示逻辑,实现更复杂的页面效果。

你可以根据自己网站的实际需求和技能水平选择最适合你的方案。

-- 展开阅读全文 --
头像
结构体C语言1006是什么内容?
« 上一篇 2025-12-20
精美的织梦后台模板utf8,如何下载安装?
下一篇 » 2025-12-20
取消
微信二维码
支付宝二维码

目录[+]