使用 {dede:channel} 标签(最推荐、最灵活)
这是最常用也是最灵活的方法。{dede:channel} 标签主要用于栏目列表,但它自带了描述字段,可以直接调用。
基础调用:调用当前顶级栏目的描述
在首页模板(通常是 index.htm)中,如果你想调用当前顶级栏目(公司简介”、“产品中心”等)的描述,可以直接使用以下标签:
{dede:channel type='top' row='10'}
<a href="[field:typelink/]">[field:typename/]</a>
<p>描述:[field:description/]</p>
{/dede:channel}
标签解析:
{dede:channel type='top' row='10'}:type='top': 表示只调用顶级栏目,这是最关键的部分,因为首页通常只需要显示一级栏目。row='10': 表示调用10个栏目,你可以根据需要修改这个数字。
[field:typelink/]: 调用栏目的链接地址。[field:typename/]: 调用栏目的名称。[field:description/]: 这就是调用栏目描述的核心标签。
进阶调用:调用指定ID的栏目描述
如果你只想在首页的某个特定位置(比如一个单独的模块)显示某个特定栏目(例如ID为1的“公司简介”)的描述,可以这样写:
{dede:channel typeid='1'}
<h2>[field:typename/]</h2>
<div class="description">
[field:description/]
</div>
{/dede:channel}
标签解析:
typeid='1': 直接指定要调用的栏目ID,你可以在后台“栏目管理”中查看每个栏目的ID。
高级调用:为每个栏目调用其子栏目的描述
如果你想在显示顶级栏目的同时,也显示其下第一个子栏目的描述,可以结合 {dede:channelartlist} 和 {dede:channel} 标签实现。
{dede:channelartlist typeid='top' row='5'}
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<!-- 调用当前顶级栏目的描述 -->
<p class="top-desc">[field:description function='cn_substr(@me, 100)'/]</p>
<div class="sub-channels">
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
<!-- 调用第一个子栏目的描述作为示例 -->
{dede:channel type='son' row='1' noself='yes'}
<p class="son-desc">子栏目描述:[field:description/]</p>
{/dede:channel}
{/dede:channelartlist}
标签解析:
{dede:channelartlist}: 用于循环输出顶级栏目及其内容。[field:description function='cn_substr(@me, 100)'/]: 这里使用了function对描述进行截取,cn_substr(@me, 100)表示只显示前100个字符,避免描述过长影响布局。
使用 {dede:sql} 标签(直接查询数据库)
如果你对SQL语句有一定了解,或者 {dede:channel} 标签无法满足你的特殊需求,可以直接使用 {dede:sql} 标签从 dede_arctype 表(栏目表)中查询数据。
{dede:sql sql="SELECT description,typename,typelink FROM dede_arctype WHERE id=1"}
<h3>[field:typename/]</h3>
<p>[field:description/]</p>
<a href="[field:typelink/]">查看更多</a>
{/dede:sql}
标签解析:
sql="...": 这里写你的SQL查询语句。SELECT description,typename,typelink: 查询这三个字段。FROM dede_arctype: 从dede_arctype表(织梦的栏目表)中查询。WHERE id=1: 查询ID为1的栏目。
[field:字段名/]: 输出查询结果中对应的字段值。
注意: 这种方法比较直接,但硬编码了表前缀 dede_,如果你的网站修改了默认表前缀,这个标签就会失效,除非有特殊需求,否则优先推荐使用方法一。
使用自由列表(Free List)
这种方法更适合有后台编辑经验的用户,它将数据和前端模板分离,管理起来更方便。
-
在后台创建一个自由列表
- 登录织梦后台,进入【核心】 -> 【自由列表管理】。
- 点击“增加自由列表”,填写列表名称(如“首页栏目描述”)。
- 在“列表内容模板”中,你可以编写一个简单的模板来输出你想要的数据,
[field:typename/] - [field:description/]
- 在“列表内容查询SQL”中,写入你的查询语句,
SELECT id, typename, description FROM `#@__arctype` WHERE reid=0 ORDER BY id
这里的
#@__是织梦的表前缀占位符,会自动替换为你网站的实际表前缀。 - 保存并生成这个自由列表。
-
在首页模板中调用
- 在首页模板
index.htm的你需要显示的位置,使用以下标签来调用你刚刚创建的自由列表:{dede:freelist listid='1' titlelen='100'} [field:textlink/] {/dede:freelist}listid='1': 是你创建的自由列表的ID,可以在自由列表管理页面看到。[field:textlink/]: 会调用你在自由列表模板中定义的内容。
- 在首页模板
常见问题与注意事项
-
描述为空怎么办?
- 检查后台:首先去后台“[栏目管理]” -> “[选择一个栏目]” -> “[修改]”,确认“栏目描述”字段是否已经填写。
- 检查标签:确保你的标签写法正确,特别是
typeid和type参数。 - 字符截取:如果使用了
function='cn_substr()',请确保截取的长度大于0。
-
如何控制描述的显示长度?
- 使用
function函数进行截取,如上文示例所示:[field:description function='cn_substr(@me, 100)'/]
这里的
100就是显示的字符数(一个汉字算一个字符)。
- 使用
-
如何调用栏目的SEO描述(
description)和栏目简介(content)?- 织梦的栏目有两个描述相关的字段:
- 栏目描述 (
description):通常用于<meta name="description" ...>标签,也会在列表页调用,这是我们上面调用的字段。 - 栏目简介 (
content):在栏目内容页(如plus/list.php?tid=1)的模板中通过[field:content/]调用,内容可以很长,支持HTML。
- 栏目描述 (
- 如果你需要调用的是“栏目简介”
content,只需将标签中的description改为content即可:[field:content/]
- 织梦的栏目有两个描述相关的字段:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:channel} |
最简单、最常用、织梦官方推荐、灵活、无需SQL知识 | 灵活性相对SQL稍差 | 绝大多数情况下的首选,特别是调用顶级栏目或指定ID栏目。 |
{dede:sql} |
极其灵活,可进行复杂查询 | 需要SQL知识、硬编码表前缀有风险 | 有特殊查询需求,或{dede:channel}无法满足时。 |
| 自由列表 | 数据与模板分离,便于后台管理 | 步骤稍多,需要后台操作 | 网站结构复杂,需要多个页面调用相同格式的栏目数据时。 |
对于绝大多数用户来说,方法一 ({dede:channel}) 是最简单、最直接、也是最应该掌握的方法,希望这个详细的解答能帮到你!
