织梦cms栏目缩略图怎么添加?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文
  1. 栏目缩略图是什么?
  2. 如何为栏目添加缩略图?
  3. 如何在模板中调用栏目缩略图?
  4. 常见问题与解决方案。

栏目缩略图是什么?

栏目缩略图是为你的每个栏目设置的一张小图片,通常用在以下场景:

织梦cms 栏目缩略图
(图片来源网络,侵删)
  • 首页栏目调用: 在网站首页以图文并茂的形式展示各个主要栏目。
  • 列表页模板: 在栏目列表页,每个条目旁边显示其所属栏目的缩略图。
  • 频道封面页: 为频道(顶级栏目)设置一张封面图,提升视觉效果。

它能让网站摆脱纯文字的枯燥,信息传达更高效,用户体验也更好。


如何为栏目添加缩略图?

这个过程分为两步:在后台设置图片确保数据库字段存在

在后台上传缩略图

  1. 登录织梦后台:使用你的管理员账号登录。

  2. 进入“栏目管理”:在左侧菜单栏找到 核心 -> 栏目管理,并点击进入。

    织梦cms 栏目缩略图
    (图片来源网络,侵删)
  3. 选择并编辑栏目:在栏目列表中,找到你需要添加缩略图的栏目,点击其右侧的 [更改] 按钮。

  4. 上传或选择图片:在弹出的栏目编辑页面中,向下滚动,找到 “栏目图片” 这一栏。

    • 你可以直接点击 上传 按钮,从本地上传一张图片。
    • 也可以点击 选择 按钮,从织梦的媒体库中选择已经上传好的图片。
    • 建议尺寸:为了保持网站风格统一,建议提前规划好缩略图的尺寸(200x150像素)。
  5. 保存设置:选择好图片后,点击页面底部的 确定 按钮保存。

至此,你已经成功为栏目添加了缩略图,这张图片会被保存在 /uploads/allimg/ 目录下,并在数据库中记录其路径。

织梦cms 栏目缩略图
(图片来源网络,侵删)

检查数据库字段(重要!)

你会发现后台明明设置了图片,但在前台模板中却调用不出来,这很可能是因为你的数据库中缺少 typedirchanneltype 等相关字段,或者 litpic 字段不存在或有问题。

litpic 是存储栏目缩略图路径的核心字段。

如何检查和添加 litpic 字段?

  1. 登录phpMyAdmin:通过你的主机控制面板进入phpMyAdmin,选择你的织梦网站数据库。
  2. 找到 dede_arctype:栏目信息都存储在这个表中。
  3. 检查字段:在 dede_arctype 表的结构中,查找是否存在名为 litpic 的字段,如果不存在,你需要手动添加。
    • 点击 添加 字段。
    • 字段名填写:litpic
    • 类型选择:VARCHAR
    • 长度/值设置为:255
    • 保存。

如果你的网站是旧版本或者模板被修改过,也可能缺少 typedir 字段,它的作用是存储栏目的完整路径,检查方法同上,添加一个 VARCHAR(255) 类型的 typedir 字段。


如何在模板中调用栏目缩略图?

织梦提供了非常灵活的标签来调用栏目信息,调用缩略图主要使用 {dede:field}

在首页调用顶级栏目缩略图

这是最常见的用法,通常使用 {dede:channelartlist} 标签来循环列出顶级栏目,然后在内部使用 {dede:field} 获取当前栏目的缩略图。

示例代码(放在首页模板 index.htm 中):

{dede:channelartlist typeid='top' row='8'}
    <dl>
        <dt>
            <a href="{dede:field name='typeurl'/}">
                <!-- 调用栏目缩略图,如果为空则显示默认图片 -->
                <img src="{dede:field.litpic/}" alt="{dede:field.seotitle/}" onerror="this.src='/images/default.jpg';this.onerror=null;" />
            </a>
        </dt>
        <dd>
            <a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>
        </dd>
    </dl>
{/dede:channelartlist}

代码解析:

  • {dede:channelartlist typeid='top' row='8'}:
    • typeid='top': 指定调用顶级栏目。
    • row='8': 限制只调用8个栏目。
  • {dede:field name='typeurl'/}: 调用当前栏目的链接地址。
  • {dede:field name='typename'/}: 调用当前栏目的名称。
  • 核心:{dede:field.litpic/}: 这就是调用栏目缩略图的关键标签,它会直接输出你在后台设置的图片路径,/uploads/allimg/230101/c-230101123456.jpg
  • onerror="this.src='/images/default.jpg';this.onerror=null;": 这是一个非常实用的技巧,如果某个栏目没有设置缩略图(litpic为空),图片加载失败时会自动显示 /images/ 目录下的 default.jpg 这张默认图片,避免显示一个丑陋的 broken icon,你需要提前准备好一张默认图片并放到这个路径。

在栏目列表页调用本栏目的缩略图

如果你想在列表页的文章列表中,每篇文章旁边都显示其所属栏目的缩略图,可以使用 {dede:field.typeid} 先获取当前栏目ID,再通过 {dede:gettopid} 等方式关联,但更简单的方法是在文章循环标签 {dede:list} 外部先获取栏目信息。

示例代码(放在栏目列表页 list_article.htm 中):

<!-- 先获取当前栏目的信息 -->
{dede:field name='array' runphp='yes'}
    $typeid = @me['typeid'];
    $dsql = new Dedesql(false);
    $row = $dsql->GetOne("SELECT litpic FROM `dede_arctype` WHERE id = $typeid");
    @me = $row['litpic'];
{/dede:field}
<!-- 在文章列表中使用 -->
{dede:list pagesize='10'}
    <li>
        <!-- 显示文章标题和链接 -->
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 在文章旁边显示栏目缩略图 -->
        <img src="{dede:field name='litpic'/}" alt="[field:typename/]" width="100" height="75" />
    </li>
{/dede:list}

更简洁的调用方式(推荐):

如果你的列表页模板是基于织梦默认的,可以直接这样调用:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 直接调用文章所属栏目的缩略图 -->
        <img src="[field:typelitpic/]" alt="[field:typename/]" />
    </li>
{/dede:list}

注意[field:typelitpic/] 这个标签在某些版本的织梦或特定模型下可能默认不支持,如果它不起作用,说明你需要修改 include/arc.listview.class.php 文件,在 GetArcList 方法中为 $row 数组添加 typelitpic 字段,其值从 dede_arctype 表中查询,这属于进阶操作,如果不确定,建议使用上面第一种PHP代码块的方式。


常见问题与解决方案

问题1:后台设置了图片,前台 {dede:field.litpic/} 调用不出来,显示为空。

  • 原因1:数据库 dede_arctype 表中缺少 litpic 字段。
  • 解决方案:按照本文 步骤二 的说明,在phpMyAdmin中手动添加 litpic 字段。
  • 原因2:模板标签错误,检查是否拼写错误,比如写成了 {dede:field.litpic} (少了结尾的)。
  • 原因3:栏目类型问题,某些特殊类型的栏目(如外部链接)可能不支持缩略图功能。

问题2:图片路径不正确,无法显示。

  • 原因:通常是因为网站域名更换或迁移,导致图片路径还是旧的。
  • 解决方案:检查 dede_arctype 表中 litpic 字段的值,如果是以 开头的绝对路径,在更换域名后通常没问题,如果是以域名开头的完整路径(如 http://www.old-domain.com/...),则需要批量替换,可以使用phpMyAdmin的搜索替换功能,将旧域名替换为新域名。

问题3:图片显示过大或过小,样式错乱。

  • 原因:你没有在HTML中为 <img> 标签设置 widthheight 属性,或者设置的尺寸与图片原始尺寸不符。
  • 解决方案:在模板调用时,直接指定图片的显示尺寸。
    <img src="{dede:field.litpic/}" alt="..." width="200" height="150" />

    或者使用CSS来控制,更灵活。

    <img src="{dede:field.litpic/}" alt="..." class="category-thumbnail" />

    然后在CSS文件中定义:

    .category-thumbnail {
        width: 200px;
        height: 150px;
        object-fit: cover; /* 保持图片比例,并填充整个区域 */
    }

希望这份详细的指南能帮助你顺利地在织梦CMS中使用栏目缩略图功能!

-- 展开阅读全文 --
头像
Feistel C语言程序如何实现核心逻辑?
« 上一篇 昨天
织梦模板为何不支持HTML?
下一篇 » 昨天

相关文章

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