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

在 DedeCMS 中,这个功能主要通过两个核心部分实现:
- 后台设置:在栏目管理中为每个栏目上传或选择封面图片。
- 前台调用:在模板文件中使用特定的织梦标签来调用这张图片。
后台设置栏目封面图片
这是第一步,也是最基础的一步,你需要为每一个需要显示封面图片的栏目进行设置。
-
登录 DedeCMS 后台。
-
进入 【栏目管理】 -> 【栏目管理】。
(图片来源网络,侵删) -
找到你想要设置封面图片的栏目,点击该栏目名称或后面的 [修改] 按钮。
-
在栏目修改页面,向下滚动,找到 设置” 或类似的选项组。
-
你会看到 “栏目封面图片” 的上传框。
-
点击“上传”或“选择图片”按钮,从你的电脑中选择一张图片上传,上传成功后,图片地址会自动填入输入框。
(图片来源网络,侵删)- 注意:请确保你已经正确配置了 DedeCMS 的上传目录,并且目录有写入权限。
-
保存,这样,该栏目的封面图片就设置完成了。
重要提示:这个“栏目封面图片”字段在数据库中对应的字段名通常是 typedir(用于目录)或 image(用于图片),在织梦标签中,我们通常通过 image 来调用它。
前台模板中调用栏目封面图片
设置好后台数据后,接下来就是在模板文件中使用织梦标签来显示它,最常用的场景是在栏目列表页和自定义页面模板中。
场景1:在栏目列表页 (list_artlist.htm) 中调用
这是最常见的用法,即在显示所有子栏目列表的页面上,为每个栏目配上封面图。
-
找到你的模板目录下的
list_artlist.htm文件,这个文件通常用于生成一级栏目的列表页。 -
在你需要显示图片的位置,使用以下织梦标签:
<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:在自定义页面模板中调用
如果你想在一个自定义的页面(比如一个“关于我们”的介绍页)中,调用某个特定栏目的封面图片,可以使用 你想在 标签解释: 这是一个非常实用的技巧,可以避免页面出现空白或破损的图片图标。 使用 代码解释: 通过以上步骤,你就可以灵活地在 DedeCMS 网站中为每个栏目设置并调用封面图片了。{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。
常见问题与解决方案
问题:图片不显示,或者显示的是默认图片。
/uploads/ 目录下,有时上传会失败。
{image} 或 [field:image/],而不是 {pic} 或其他名称。
{dede:channel} 循环,直接在模板里写 {image} 是无效的,因为它不知道是哪个栏目的 image。问题:如何调用栏目的“栏目logo”或“栏目广告图”?
image,如果你的后台在“栏目管理”->“增加栏目”时,选择了不同的模型(如“图片模型”),可能会有额外的字段,如 imgurl(栏目logo)、adimg(广告图)等。
{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'] 进行条件判断。
