dede图片延迟加载如何实现?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

使用成熟的插件(最推荐,最简单)

对于大多数用户来说,使用现成的插件是最高效、最安全的方式,因为它已经处理了各种兼容性和细节问题。

dede图片延迟加载
(图片来源网络,侵删)

推荐插件:dedeimglazyload

这是一个专门为 DedeCMS 开发的图片延迟加载插件,使用非常方便。

操作步骤:

  1. 下载插件

    • 在网上搜索 "DedeCMS 图片延迟加载插件 dedeimglazyload",您可以在 DedeCMS 官方论坛、一些技术博客(如模板王织梦58等)或 GitHub 上找到下载资源。
    • 下载后,您会得到一个压缩包,里面通常包含一个 imglazyload.php 文件。
  2. 上传并安装插件

    dede图片延迟加载
    (图片来源网络,侵删)
    • 登录您的 DedeCMS 后台。
    • 进入“系统” -> “插件管理” -> “上传新插件”。
    • 将下载的 imglazyload.php 文件上传并安装。
    • 安装成功后,在“插件管理”列表中找到该插件,点击“启用”。
  3. 修改模板文件

    • 插件启用后,它会自动提供一个代码片段,您需要将其添加到模板文件中。
    • 登录 DedeCMS 后台,进入“模板” -> “模板管理”。
    • 找到您当前正在使用的模板(default),然后修改以下核心模板文件:
      • index.htm (首页)
      • list_article.htm (列表页)
      • article_article.htm (文章内容页)
      • search.htm (搜索页)
      • 以及任何其他您希望应用延迟加载的页面模板。
    • 在这些模板文件的 <head> 标签内(通常是顶部),添加以下代码
      {dede:global.cfg_replaceurl/}
      <script language="javascript" type="text/javascript" src="{dede:global.cfg_cmspath/}/include/dedeimglazyload.js"></script>
    • 注意:如果您的插件文件名不是 dedeimglazyload.js,请相应修改 src 路径。
  4. 修改文章内容页中的 <img>

    • 这是关键的一步,插件需要通过修改 <img> 标签来添加一个占位图和 data-original 属性。
    • 打开 article_article.htm 文件。
    • 找到调用文章正文的代码,它通常是这样的:
      {dede:field.body/}
    • 将其替换为以下代码:
      {dede:field.body function='replaceurl(@me)'/}
    • 这个 replaceurl 函数就是插件的核心,它会自动解析文章内容中的 <img> 标签,将 src 属性的值移到 data-original 属性,并给 src 赋一个占位图(通常是 1x1 像素的透明 GIF)。
  5. 设置占位图(可选)

    有些插件允许您自定义占位图,您可以在后台的插件设置中找到相关选项,上传一个本地的占位图(例如一个灰色的背景图),这样在图片加载前会显示一个灰色方块,体验比空白好。

    dede图片延迟加载
    (图片来源网络,侵删)
  6. 清除缓存

    • 修改完模板后,务必在后台“系统” -> “一键更新网站” -> “更新HTML” -> “更新所有”(或仅更新您修改过的页面),并勾选“更新文档HTML”和“更新主页”。
    • 在浏览器中按 Ctrl + F5 强制刷新页面,确保加载的是最新的文件。

完成以上步骤后,您的网站图片就实现了延迟加载。


手动修改模板(最灵活,需要一定代码能力)

如果您不想使用插件,或者想自己控制所有细节,可以手动实现。

实现原理:

  1. 在模板中引入 jQuery 库(如果网站未引入)。
  2. 引入一个成熟的延迟加载 JS 库,如 echo.jslazyload.js
  3. 修改模板中的 <img> 标签,为其添加 data-srcdata-original 属性。
  4. 在页面底部写一小段 JS 代码来初始化延迟加载效果。

操作步骤:

  1. 准备 JS 库

    • 下载 echo.jsjquery.lazyload.js,这里以 echo.js 为例,它更轻量且易于使用。
    • 将下载的 JS 文件(echo.min.js)上传到您网站的 /js/ 目录下。
  2. 修改模板文件

    • 同样,需要修改 index.htm, list_article.htm, article_article.htm 等模板。

    • 第一步:在 <head> 中引入 JS 库

      <!-- 如果网站没有jQuery,需要先引入jQuery -->
      <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
      <!-- 引入echo.js -->
      <script src="{dede:global.cfg_cmspath/}/js/echo.min.js"></script>
    • 第二步:修改文章正文标签

      • 打开 article_article.htm
      • {dede:field.body/} 替换为自定义的函数调用,您需要修改 /include/extend.func.php 文件来添加这个函数。
      • /include/extend.func.php 文件的最后 ?> 之前添加以下代码:
        // 文章内容图片延迟加载处理
        function replaceurl($body)
        {
            $body = str_replace('<img src=', '<img class="lazy" data-src=', $body);
            return $body;
        }
      • 然后在 article_article.htm 中使用:
        {dede:field.body function='replaceurl(@me)'/}
      • 注意:这种方法会为所有文章图片都加上 class="lazy"data-src,如果您只想对特定图片生效,需要更复杂的逻辑。
    • 第三步:初始化延迟加载

      • 在模板文件的底部,</body> 标签之前,添加以下 JS 代码:
        <script>
        echo.init({
            offset: 100, // 视图底部偏移量,当图片进入视图 100px 时开始加载
            throttle: 250, // 节流,每 250ms 执行一次检查
            unload: false // 是否卸载已加载的图片
        });
        </script>

        echo.js 会自动查找所有带有 class="lazy"data-src 属性的 <img> 标签,并在它们进入视口时,将 data-src 的值赋给 src 属性,从而触发图片加载。

  3. 清除缓存

    同样,在后台“一键更新网站”,并强制刷新浏览器。


修改编辑器默认插入代码(治本方法)

这个方法与前两种不同,它从源头上解决问题,当编辑器插入图片时,直接插入带有延迟加载属性的代码。

操作步骤:

  1. 找到编辑器配置文件

    • DedeCMS 通常使用 kindeditorckeditor 作为编辑器,配置文件通常位于 /include/ckeditor//include/kindeditor/ 目录下。
    • kindeditor 为例,找到 kindeditor.jskindeditor-min.js
  2. 修改图片上传代码

    • 这个操作比较复杂,需要一定的 JavaScript 知识,您需要找到处理图片插入到编辑器中的函数。
    • 在插入 <img> 标签的地方,修改代码,使其默认生成类似这样的 HTML:
      <img src="占位图路径" data-original="真实图片路径" class="lazy" />
    • 这种方法需要对代码进行深度定制,且在 DedeCMS 升级时可能会被覆盖,因此不推荐普通用户尝试。

总结与建议

方法 优点 缺点 推荐人群
插件 简单、快捷、安全,功能稳定,有详细文档 灵活性稍差,依赖第三方插件 所有用户,特别是新手
手动修改 灵活、可控,不依赖插件,可以自定义 JS 库 需要修改 PHP 和 HTML 文件,有一定技术门槛,升级网站时可能失效 有一定开发基础,希望完全掌控代码的用户
修改编辑器 从源头解决问题,所有新插入的图片都自动生效 修改复杂,容易在升级时丢失,维护成本高 追求极致,且有专门技术维护的开发团队

给您的最终建议:

直接使用方法一(插件),这是最省心、最可靠的方式,能以最小的成本实现图片延迟加载,完全满足绝大多数网站的需求,如果您在插件使用中遇到任何问题,可以随时提问。

-- 展开阅读全文 --
头像
c语言 movepen
« 上一篇 04-22
C语言中mmsystem如何实现音频播放控制?
下一篇 » 04-22

相关文章

取消
微信二维码
支付宝二维码