dede栏目封面图片怎么设置?

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

“栏目封面图片”通常指的是在栏目列表页(如 /plus/list.php?tid=1)或自定义模板中,为每个栏目设置的一张代表性的图片,用于美化页面或作为栏目入口的视觉引导。

dede栏目封面图片
(图片来源网络,侵删)

在 DedeCMS 中,这个功能主要通过两个核心部分实现:

  1. 后台设置:在栏目管理中为每个栏目上传或选择封面图片。
  2. 前台调用:在模板文件中使用特定的织梦标签来调用这张图片。

后台设置栏目封面图片

这是第一步,也是最基础的一步,你需要为每一个需要显示封面图片的栏目进行设置。

  1. 登录 DedeCMS 后台

  2. 进入 【栏目管理】 -> 【栏目管理】

    dede栏目封面图片
    (图片来源网络,侵删)
  3. 找到你想要设置封面图片的栏目,点击该栏目名称或后面的 [修改] 按钮。

  4. 在栏目修改页面,向下滚动,找到 设置” 或类似的选项组。

  5. 你会看到 “栏目封面图片” 的上传框。

  6. 点击“上传”或“选择图片”按钮,从你的电脑中选择一张图片上传,上传成功后,图片地址会自动填入输入框。

    dede栏目封面图片
    (图片来源网络,侵删)
    • 注意:请确保你已经正确配置了 DedeCMS 的上传目录,并且目录有写入权限。
  7. 保存,这样,该栏目的封面图片就设置完成了。

重要提示:这个“栏目封面图片”字段在数据库中对应的字段名通常是 typedir(用于目录)或 image(用于图片),在织梦标签中,我们通常通过 image 来调用它。


前台模板中调用栏目封面图片

设置好后台数据后,接下来就是在模板文件中使用织梦标签来显示它,最常用的场景是在栏目列表页自定义页面模板中。

场景1:在栏目列表页 (list_artlist.htm) 中调用

这是最常见的用法,即在显示所有子栏目列表的页面上,为每个栏目配上封面图。

  1. 找到你的模板目录下的 list_artlist.htm 文件,这个文件通常用于生成一级栏目的列表页。

  2. 在你需要显示图片的位置,使用以下织梦标签:

    <a href='{typedir}' target='_blank'>
        <img src='{image}' alt='{typename}' width='200' height='150' />
    </a>
    <a href='{typedir}' target='_blank'>{typename}</a>

    标签解释

    • {image}:这是调用当前栏目“栏目封面图片”的核心标签,它会直接输出你在后台设置的图片路径。
    • {typedir}:调用当前栏目的链接地址。
    • {typename}:调用当前栏目的名称,用作 img 标签的 alt 属性和链接的显示文字,这有利于 SEO。

    完整示例代码

    <div class="channel-list">
        {dede:channel type='son' noself='yes'}
        <li>
            <a href="[field:typedir/]" target="_blank">
                <img src="[field:image/]" alt="[field:typename/]" />
            </a>
            <h3><a href="[field:typedir/]" target="_blank">[field:typename/]</a></h3>
            <p>栏目简介:[field:info/]</p>
        </li>
        {/dede:channel}
    </div>

    {dede:channel} 标签说明

    • type='son':表示只调用当前栏目的子栏目,如果你想在一级栏目列表页调用所有一级栏目,可以去掉 type 属性或设置为 top
    • noself='yes':表示不调用栏目本身。
    • {dede:channel} 循环体内,使用 [field:xxx/] 的形式来调用栏目的各个字段,[field:image/][field:typename/]

场景2:在自定义页面模板中调用

如果你想在一个自定义的页面(比如一个“关于我们”的介绍页)中,调用某个特定栏目的封面图片,可以使用 {dede:field}

你想在 about.htm 页面调用 ID 为 1 的栏目的封面图。

<img src="{dede:field name='image' rowid='1'/}" alt="公司Logo" />

标签解释

  • {dede:field name='image'}:调用 image 字段。
  • rowid='1':指定要查询的栏目 ID,这里的 1 就是你想要调用的栏目在数据库中的 ID。

常见问题与解决方案

问题:图片不显示,或者显示的是默认图片。

  • 原因1:后台没有上传图片。
    • 解决:返回后台检查,确保已成功上传图片。
  • 原因2:图片路径错误或图片文件不存在。
    • 解决:检查后台上传的图片是否真的存在于 /uploads/ 目录下,有时上传会失败。
  • 原因3:模板标签写错。
    • 解决:确保标签是 {image}[field:image/],而不是 {pic} 或其他名称。
  • 原因4:使用了错误的循环标签。
    • 解决:如果你想在栏目列表页调用,必须使用 {dede:channel} 循环,直接在模板里写 {image} 是无效的,因为它不知道是哪个栏目的 image

问题:如何调用栏目的“栏目logo”或“栏目广告图”?

  • 说明:DedeCMS 的栏目模型是可扩展的,默认的“栏目封面图片”字段是 image,如果你的后台在“栏目管理”->“增加栏目”时,选择了不同的模型(如“图片模型”),可能会有额外的字段,如 imgurl(栏目logo)、adimg(广告图)等。
  • 解决
    1. 确认你在后台设置的是哪个字段。
    2. 在模板中,将 {image}[field:image/] 替换为对应的字段名,[field:imgurl/]

问题:如何为没有设置封面图片的栏目设置一个默认图片?

这是一个非常实用的技巧,可以避免页面出现空白或破损的图片图标。

使用 @me 变量和 if 条件判断可以实现。

{dede:channel type='son' noself='yes'}
    <li>
        <a href="[field:typedir/]" target="_blank">
            <!-- 如果image字段不为空,则显示image,否则显示默认图片 -->
            [field:array runphp='yes']
                if(@me['image'] != '') {
                    @me = '<img src="' . @me['image'] . '" alt="' . @me['typename'] . '" />';
                } else {
                    @me = '<img src="/images/default_channel.jpg" alt="' . @me['typename'] . '" />';
                }
            [/field:array]
        </a>
        <h3><a href="[field:typedir/]" target="_blank">[field:typename/]</a></h3>
    </li>
{/dede:channel}

代码解释

  • [field:array runphp='yes']:开启 PHP 运行,并以数组形式获取当前栏目的所有字段。
  • if(@me['image'] != ''):判断 image 字段是否为空。
  • @me = '...':如果条件成立,@me 变量被赋值为完整的 <img> 标签,内容是后台设置的图片。
  • else:如果条件不成立(即没有设置图片),@me 变量被赋值为一个默认图片的 <img>
  • 注意:请确保 /images/default_channel.jpg 这个默认图片路径在你的网站上是真实存在的。

步骤 操作 关键点
后台设置 【栏目管理】->【修改】->上传“栏目封面图片” 确保图片上传成功,路径正确。
前台调用 list_artlist.htm 等模板文件中使用标签 列表页:用 {dede:channel} 循环,内部用 [field:image/]
单页:用 {dede:field name='image' rowid='1'}
进阶技巧 为未设置图片的栏目添加默认图 使用 [field:array runphp='yes'] 进行条件判断。

通过以上步骤,你就可以灵活地在 DedeCMS 网站中为每个栏目设置并调用封面图片了。

-- 展开阅读全文 --
头像
C语言chuanzhi是什么?编程入门还是进阶?
« 上一篇 04-19
如何用C语言实现findpic功能?
下一篇 » 04-19

相关文章

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