这里为您提供两种最常用、最可靠的方法:

(图片来源网络,侵删)
使用 channelartlist 标签(推荐,性能更好)
这个标签专门用于获取栏目列表,并且可以直接获取到每个栏目的相关信息,包括缩略图,这是实现此功能的首选方法。
标签语法
{dede:channelartlist typeid='0' cacheid='channelartlist'}
<li>
<a href="{dede:field name='typeurl'/}">
<!-- 这里调用子栏目的缩略图 -->
<img src="{dede:field name='typedir'/}/images/thumb.jpg" alt="{dede:field name='typename'/}" />
<span>{dede:field name='typename'/}</span>
</a>
</li>
{/dede:channelartlist}
参数详解
-
typeid='0':0表示获取顶级栏目,如果你想获取某个特定栏目的子栏目,就把0换成该栏目的ID。typeid='5'就是获取栏目ID为5的所有子栏目。- 重要提示:
channelartlist标签会获取指定栏目的所有直接子栏目(一级子栏目),而不会获取更深层的栏目(二级、三级等)。
-
cacheid='channelartlist':这是缓存ID,建议加上,可以提升页面加载速度。
(图片来源网络,侵删) -
{dede:field name='typeurl'/}:获取当前子栏目的链接地址。
-
{dede:field name='typedir'/}:获取当前子栏目的目录路径,这是我们用来拼接缩略图路径的关键。
(图片来源网络,侵删) -
{dede:field name='typename'/}:- 获取当前子栏目的名称,用作
img标签的alt属性,这对SEO很重要。
- 获取当前子栏目的名称,用作
如何设置子栏目缩略图?
使用 channelartlist 方法,你需要手动为每个子栏目设置缩略图。
- 进入后台“栏目管理”。
- 选择你想要添加缩略图的子栏目,点击“[修改]”。
- 在栏目编辑页面,找到“高级选项”或“栏目图片”这一项。
- 在这里上传或填写缩略图的路径。最规范的做法是,将所有栏目的缩略图都命名为
thumb.jpg,并统一存放在每个栏目目录下的images文件夹里。- 你的“新闻”栏目目录是
/html/news/,那么就把“新闻”的缩略图thumb.jpg上传到/html/news/images/目录下。
- 你的“新闻”栏目目录是
- 这样,模板中的
<img src="{dede:field name='typedir'/}/images/thumb.jpg" ... />就能正确找到图片了。
使用 channel 标签(更灵活,可循环)
channel 标签可以获取指定ID的栏目列表,并通过 re 属性循环输出,这种方法同样非常有效。
标签语法
{dede:channel typeid='5' type='son' row='8'}
<li>
<a href="[field:typelink/]">
<!-- 这里调用子栏目的缩略图 -->
<img src="[field:typedir/]/images/thumb.jpg" alt="[field:typename/]" />
<span>[field:typename/]</span>
</a>
</li>
{/dede:channel}
参数详解
-
typeid='5':- 指定要获取哪个栏目的子栏目,这里的
5是父栏目的ID,如果你想获取ID为5的“产品展示”栏目的所有子栏目,就写typeid='5'。
- 指定要获取哪个栏目的子栏目,这里的
-
type='son':- 这个参数至关重要,它表示获取
typeid指定栏目的“子栏目”。
- 这个参数至关重要,它表示获取
-
row='8':- 表示调用多少个子栏目,
8就是调用8个子栏目,不写则默认调用所有。
- 表示调用多少个子栏目,
-
[field:typelink/]:- 在
channel标签内,使用[field:xxx/]来调用字段。typelink对应栏目的链接。
- 在
-
[field:typedir/]:获取栏目的目录路径,用于拼接缩略图地址。
缩略图设置
与方法一完全相同,都需要在后台为每个子栏目手动设置缩略图,并建议统一存放在 栏目目录/images/thumb.jpg。
总结与对比
| 特性 | channelartlist
| |
|---|---|---|
| 主要用途 | 调用顶级栏目或指定栏目的一级子栏目列表。 | 调用任意指定栏目的子栏目列表。 |
| 性能 | 更优,有专门的缓存机制。 | 良好,但缓存不如 channelartlist 高效。 |
| 灵活性 | 适合制作主导航或侧边栏的栏目块。 | 适合在文章页、列表页等任意位置调用特定父栏目的子栏目。 |
| 推荐场景 | 调用顶级栏目的子栏目(如网站底部的栏目导航)。 | 调用某个特定父栏目的子栏目(如在“新闻”列表页调用其子栏目“国内新闻”、“国际新闻”等)。 |
常见问题与解决
Q: 为什么我的图片显示不出来?
A: 请按以下步骤排查:
- 路径错误:检查图片路径是否正确,最稳妥的方式是直接在浏览器地址栏输入你拼接的完整图片URL,看是否能访问到。
http://www.yoursite.com/html/news/images/thumb.jpg。 - 图片未上传:确认你是否已经按照约定,将
thumb.jpg上传到了对应的栏目目录/images/文件夹里。 - 栏目权限:检查
栏目目录/images/文件的目录权限是否正确,通常是755。 - 标签拼写错误:检查模板中的标签名是否拼写正确,
typedir不要写成typeurl。
Q: 我想调用二级栏目怎么办?
A: 织梦标签不支持直接递归调用,你需要手动嵌套,要调用顶级栏目ID为1的栏目的所有二级栏目,你需要先调用ID为1的一级子栏目,然后在循环内部,再调用每个一级子栏目的子栏目。
<!-- 调用顶级栏目ID为1的一级子栏目 -->
{dede:channelartlist typeid='1'}
<h2>{dede:field.name/}</h2>
<ul>
<!-- 在内部循环调用当前一级子栏目的子栏目(即二级栏目) -->
{dede:channel type='son' typeid=''}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
</ul>
{/dede:channel}
注意:内层 channel 的 typeid 参数留空,它会自动继承外层 channelartlist 的当前栏目ID。
希望这份详细的教程能帮助你成功调用子栏目缩略图!
