dede首页如何不调用内容页图片?

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

解决这个问题主要有两种方法,强烈推荐使用第一种方法,因为它更灵活、更规范。

dede首页不调用内容页图
(图片来源网络,侵删)

修改模板文件(推荐,最规范、最灵活)

这是最推荐的方法,因为它不会修改程序核心文件,升级网站时不会被覆盖,并且可以精确控制每篇文章的缩略图。

核心思路:

DedeCMS的文章模型中,有一个专门的字段 litpic 用于存储文章的缩略图,我们只需要在首页模板的循环标签中,调用这个 litpic 字段即可,而不是调用文章内容里的图片。

操作步骤:

  1. 登录后台,进入“模板” -> “默认模板管理”。

  2. 找到你当前使用的模板,点击“主页模板”后面的“修改”。

    dede首页不调用内容页图
    (图片来源网络,侵删)
  3. 在模板代码中,找到文章列表的循环标签,通常是 {dede:arclist}

  4. 关键一步:在 {dede:arclist} 标签内,必须加上 litpic='yes' 这个属性,这个属性会强制DedeCMS为列表中的每篇文章生成或获取缩略图。

    修改前的代码可能类似这样:

    {dede:arclist typeid='1' row='8'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
    {/dede:arclist}

    修改后,应该加上 litpic='yes'

    {dede:arclist typeid='1' row='8' litpic='yes'}
    ...
    {/dede:arclist}

    注意:即使你没有在后台为文章上传缩略图,设置了 litpic='yes',DedeCMS也会尝试从文章内容里提取第一张图片作为 litpic,但这正是我们想要避免的!所以接下来的步骤至关重要。

  5. 在循环内部,调用 [field:litpic/] 来显示缩略图

    完整的、规范的调用代码示例:

    <ul class="news-list">
        {dede:arclist typeid='1' row='6' titlelen='30' litpic='yes'}
        <li>
            <!-- 调用自定义的缩略图,而不是内容图 -->
            <a href="[field:arcurl/]" class="img-box">
                <img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]">
            </a>
            <div class="text-box">
                <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
                <p class="intro">[field:description function='cn_substr(@me, 100)'/]...</p>
            </div>
        </li>
        {/dede:arclist}
    </ul>
    • [field:litpic/]:这就是调用文章自定义缩略图的字段。
    • [field:title function='html2text(@me)'/]:给 img 标签的 alt 属性赋值,使用标题并过滤HTML标签,有利于SEO。
    • [field:description/]:调用文章摘要。
  6. 更新并生成首页,在后台点击“生成” -> “主页HTML生成”,更新你的首页文件。

总结一下方法一: 模板标签 {dede:arclist} 加上 litpic='yes',在内部用 [field:litpic/] 调用图片。

这样,只要你在后台发布文章时上传了缩略图,首页就会调用你上传的图;如果你没上传,它就不会显示任何图片(或者你可以通过CSS设置默认占位图),而绝对不会去调用内容页里的图。


修改程序文件(不推荐,有风险)

这种方法通过修改DedeCMS的核心文件,来改变其默认行为。缺点是:当你升级DedeCMS版本时,这些修改会被覆盖,需要重新修改,非常麻烦。

核心思路:

找到并修改负责处理 {dede:arclist} 标签的PHP文件,让它在获取缩略图时,优先使用 litpic 字段,而不是从内容 body 中提取。

操作步骤:

  1. 找到核心文件: 用FTP或服务器文件管理工具,进入你的DedeCMS安装目录,找到文件: /include/taglib/arclist.lib.php

  2. 编辑并修改文件: 用代码编辑器(如VS Code, Sublime Text, Notepad++)打开 arclist.lib.php 文件。

  3. 定位关键代码: 在文件中搜索关键词 GetImage,你会找到类似下面这样的代码块(版本不同,行号可能略有差异):

    // ... 前面代码 ...
    if($row['litpic'] == '-' || $row['litpic'] == ''){
        $row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
    }
    // ... 中间代码 ...
    // 下面这行是关键,它负责从内容里提取图片
    $row['pic'] = GetImage($row['body'], $litpic_width, $litpic_height);
    // ... 后面代码 ...
  4. 修改逻辑: 我们需要修改这个逻辑,让它只在没有 litpic 的时候才去 body 里找,修改如下:

    // ... 前面代码 ...
    // 如果文章没有设置缩略图,则使用默认图
    if($row['litpic'] == '' || $row['litpic'] == '-'){
        $row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
        // 只有在没有litpic的情况下,才尝试从内容里提取
        $row['pic'] = GetImage($row['body'], $litpic_width, $litpic_height);
    } else {
        // 如果有litpic,就直接用litpic,不再去body里找
        $row['pic'] = $row['litpic'];
    }
    // ... 后面代码 ...
  5. 保存文件,并确保文件权限正确(通常是644)。

总结一下方法二: 修改 /include/taglib/arclist.lib.php 文件,调整 GetImage 函数的调用逻辑,使其优先使用 litpic 字段。


最佳实践与建议

  1. 首选方法一:它更安全、更灵活,符合模板与逻辑分离的原则。
  2. 缩略图上传:在后台发布文章时,务必记得上传“缩略图”,这是确保首页显示正确图片的根本。
  3. 默认图片:在后台“系统” -> “系统基本参数” -> “附件设置”中,可以设置“默认缩略图”,当文章没有上传缩略图时,会自动显示这个默认图,避免页面空白。
  4. 清理缓存:修改模板或程序后,记得在后台清理一下缓存,然后重新生成首页,才能看到效果。

希望这个详细的解答能帮助你解决问题!

-- 展开阅读全文 --
头像
新概念51单片机C语言PDF哪里能下载?
« 上一篇 昨天
dede织梦反应慢优化
下一篇 » 昨天

相关文章

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

目录[+]