使用 GetTopTypelink() 或 GetSonUrls() 函数(最常用,推荐)
这是 DedeCMS 内置的、最简单直接的函数,专门用于获取栏目相关的链接和信息。
获取当前顶级栏目链接 (GetTopTypelink())
这个函数非常实用,比如你想在文章页面包屑导航里只显示顶级栏目,而不是显示完整的层级路径。
使用场景:页(article_article.htm)或列表页(article_list.htm)中,获取该文章所属的顶级栏目的链接。
代码示例:
<a href="{dede:field name='typelink'/}">{dede:field name='typename'/}</a>
这行代码会输出当前栏目的链接和名称,但如果当前栏目是子栏目,它会输出类似 “父栏目 > 子栏目” 这样的完整路径。
如果我们只想获取顶级栏目的链接,可以使用:
<a href="{dede:global name='cfg_phpurl'/}/type.php?tid={dede:field name='topid'/}">{dede:field name='topid'/}</a>
{dede:field name='topid'/}: 获取当前栏目的顶级栏目ID。type.php?tid=...: 这是 DedeCMS 调用栏目的标准方式。
更优雅的方式是结合 GetTopTypelink(虽然这个标签不常用,但逻辑可以这样理解)或者直接用上面的 topid 方法。
获取指定栏目ID的链接 (GetSonUrls())
这个函数通常用于获取一个栏目的所有子栏目,但也可以巧妙地用来获取单个栏目的信息。
使用场景: 在首页或其他页面,通过指定栏目ID,来获取该栏目的名称和链接。
代码示例:
假设我们要调用栏目ID为 1 的栏目信息。
{dede:channel type='top' row='1' typeid='1'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
typeid='1': 指定要调用的栏目ID。row='1': 只获取一条记录。[field:typelink/]: 输出栏目的链接。[field:typename/]: 输出栏目的名称。
注意: 这种方法调用的是栏目列表,但我们通过 row='1' 限制只显示一条,从而实现了“单独调用”的效果。
使用 {dede:arclist} 标签(非常灵活)
{dede:arclist} 是 DedeCMS 最强大的标签之一,不仅可以调用文章,也可以通过特定属性来调用栏目信息。
使用场景: 当你不仅需要栏目名称,还需要该栏目下的文章数量、栏目封面图等信息时,这个方法非常强大。
代码示例:
调用栏目ID为 2 的栏目,并显示其名称、链接和文章数量。
{dede:arclist typeid='2' row='1'}
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
<p>该栏目共有 [field:totalart/] 篇文章</p>
<p>[field:description/]</p> {调用栏目描述}
{/dede:arclist}
typeid='2': 指定栏目ID。row='1': 只调用该栏目下的1条记录(因为我们不需要文章列表,只需要栏目本身的信息)。[field:typelink/]: 栏目链接。[field:typename/]: 栏目名称。[field:totalart/]: 该栏目下的文章总数(非常有用!)。[field:description/]: 栏目描述。
优点:
- 非常灵活,可以一次性获取栏目名称、链接、描述、文章数量等多种信息。
- 不需要额外的SQL查询,效率较高。
使用SQL直接查询(最灵活,适合复杂需求)
当你需要获取栏目表中没有直接提供的字段,或者需要进行更复杂的条件判断时,可以直接使用SQL语句查询 dede_arctype 表。
使用场景: 调用一个栏目的自定义属性、关键词,或者根据特定条件(如栏目级别)来获取栏目信息。
代码示例:
调用栏目ID为 3 的栏目名称和链接。
{dede:sql sql="SELECT * FROM `dede_arctype` WHERE id = 3"}
<a href="[field:typedir/]">[field:typename/]</a>
{/dede:sql}
sql="SELECT * FROMdede_arctypeWHERE id = 3": 标准的SQL查询语句,dede_arctype是 DedeCMS 存储栏目的表。[field:typedir/]: 栏目目录(链接)。[field:typename/]: 栏目名称。
进阶示例: 获取顶级栏目列表
{dede:sql sql="SELECT id,typename,typedir FROM `dede_arctype` WHERE reid=0 ORDER BY sortrank"}
<a href="[field:typedir/]">[field:typename/]</a>
{/dede:sql}
reid=0:reid字段表示父栏目ID,reid=0就是顶级栏目。
优点:
- 功能最强大,可以访问数据库中的任何字段。
- 可以实现任何复杂的查询逻辑。
缺点:
- 需要了解基本的SQL语法和
dede_arctype表的结构。 - 如果表前缀(
dede_)被修改过,需要相应调整SQL语句。
在首页调用指定栏目({dede:type}
这个方法专门用于在首页模板(index.htm)中调用指定栏目的信息,通常用于制作某个特定栏目的推荐位。
使用场景:
在首页的某个位置,显示“产品中心”栏目的名称和链接,并可能在该栏目下调用几篇文章。
代码示例:
{dede:type typeid='4'}
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
<!-- 下面可以继续调用该栏目下的文章 -->
{dede:arclist row='5' titlelen='30'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
{/dede:type}
{dede:type typeid='4'}: 在首页调用栏目ID为 4 的栏目信息。
[field:typelink/] 和 [field:typename/]: 在 {dede:type} 标签内使用,输出该栏目的链接和名称。
- 标签内部可以嵌套
{dede:arclist} 来调用该栏目下的文章。
总结与推荐
方法
适用场景
优点
缺点
GetTopTypelink/topid
获取当前栏目的顶级栏目信息
简单,无需指定ID
功能单一,仅限当前页面
{dede:channel}
通过ID获取单个栏目的基本信息
代码简洁,内置标签
获取的信息有限(主要是名称和链接)
{dede:arclist}
需要获取栏目名称、链接、文章数量等综合信息
非常灵活,功能强大,推荐首选
需要理解 arclist 的工作原理
{dede:sql}
需要获取自定义字段或进行复杂查询
功能最强大,无限制
需要SQL知识,有一定风险
{dede:type}
在首页调用指定栏目及其内容
专为首页设计,结构清晰
仅适用于首页模板
给新手的建议:
- 如果只是想在文章页获取顶级栏目链接,使用方法一中的
topid 方式。
- 如果想在任意页面通过ID获取栏目名称、链接和文章数,强烈推荐使用方法二
{dede:arclist},这是最常用、最平衡的方案。
- 如果需要获取栏目描述、关键词等非核心信息,或者进行复杂判断,再考虑使用方法三
{dede:sql}。
- 如果是在首页制作特定栏目块,使用方法四
{dede:type} 最为方便。
希望这些详细的解释和示例能帮助你完全掌握在 DedeCMS 中单独调用栏目的技巧!
这个方法专门用于在首页模板(index.htm)中调用指定栏目的信息,通常用于制作某个特定栏目的推荐位。
使用场景: 在首页的某个位置,显示“产品中心”栏目的名称和链接,并可能在该栏目下调用几篇文章。
代码示例:
{dede:type typeid='4'}
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
<!-- 下面可以继续调用该栏目下的文章 -->
{dede:arclist row='5' titlelen='30'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
{/dede:type}
{dede:type typeid='4'}: 在首页调用栏目ID为4的栏目信息。[field:typelink/]和[field:typename/]: 在{dede:type}标签内使用,输出该栏目的链接和名称。- 标签内部可以嵌套
{dede:arclist}来调用该栏目下的文章。
总结与推荐
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
GetTopTypelink/topid |
获取当前栏目的顶级栏目信息 | 简单,无需指定ID | 功能单一,仅限当前页面 |
{dede:channel} |
通过ID获取单个栏目的基本信息 | 代码简洁,内置标签 | 获取的信息有限(主要是名称和链接) |
{dede:arclist} |
需要获取栏目名称、链接、文章数量等综合信息 | 非常灵活,功能强大,推荐首选 | 需要理解 arclist 的工作原理 |
{dede:sql} |
需要获取自定义字段或进行复杂查询 | 功能最强大,无限制 | 需要SQL知识,有一定风险 |
{dede:type} |
在首页调用指定栏目及其内容 | 专为首页设计,结构清晰 | 仅适用于首页模板 |
给新手的建议:
- 如果只是想在文章页获取顶级栏目链接,使用方法一中的
topid方式。 - 如果想在任意页面通过ID获取栏目名称、链接和文章数,强烈推荐使用方法二
{dede:arclist},这是最常用、最平衡的方案。 - 如果需要获取栏目描述、关键词等非核心信息,或者进行复杂判断,再考虑使用方法三
{dede:sql}。 - 如果是在首页制作特定栏目块,使用方法四
{dede:type}最为方便。
希望这些详细的解释和示例能帮助你完全掌握在 DedeCMS 中单独调用栏目的技巧!
