dede arclist如何实现栏目链接?

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

arclist 标签主要用于调用文章列表,但它本身并不直接提供栏目链接,要实现“在文章列表旁边显示其所属栏目的链接”,我们需要结合使用 arclisttypelink(或 typeurl)这两个标签。

dede arclist 栏目链接
(图片来源网络,侵删)

下面我将从基础用法到进阶技巧,为你详细讲解。


核心思路

  1. arclist:负责循环输出文章列表,它有一个非常重要的属性 channelid,用于指定要调用哪个栏目的文章。
  2. typelink / typeurl:这两个是专门用来获取栏目链接的标签。
    • {dede:typelink}:获取栏目的完整链接(包括 <a> 标签),<a href='https://www.example.com/plus/list.php?tid=1'>栏目名称</a>
    • {dede:typeurl}:只获取栏目的 URL 地址,https://www.example.com/plus/list.php?tid=1

我们的目标就是在 arclist 的循环体内,调用这两个标签之一来显示当前文章所属栏目的链接。


基础用法:在文章列表中显示栏目链接

这是最常见的需求,即在每篇文章的标题旁边或下方,加上一个指向其所属栏目的链接。

标签代码示例

{dede:arclist typeid='' row='10' titlelen='40' orderby='pubdate'}
  <li>
    <!-- [field:textlink/] 是文章标题的链接 -->
    [field:textlink/]
    <!-- 在文章标题后面加上一个竖线分隔符 -->
    -
    <!-- [field:typelink/] 是文章所属栏目的链接 -->
    [field:typelink/]
  </li>
{/dede:arclist}

代码解析

  • {dede:arclist ...}: 开始调用文章列表。
    • typeid='': typeid 用于指定要调用哪个栏目的文章,留空 表示调用所有栏目的文章,如果你想只调用某个特定栏目(ID 为 1 的栏目),就写成 typeid='1'
    • row='10': 设置调用文章的数量,这里是 10 篇。
    • titlelen='40': 设置文章标题的长度,这里是 40 个字符(一个汉字算2个字符)。
    • orderby='pubdate': 设置文章的排序方式,这里是按发布时间倒序排列。
  • [field:textlink/]: 这是 arclist 的一个字段,用于输出文章的标题并自动加上文章链接。<a href="文章链接">文章标题</a>
  • [field:typelink/]: 这是 arclist 循环体内可以调用的字段,它会自动获取当前文章所属栏目的链接和名称。<a href="栏目链接">栏目名称</a>

显示效果

假设你有一篇文章标题为“DedeCMS 教程”,它属于“技术分享”栏目,那么最终生成的 HTML 可能是这样的:

dede arclist 栏目链接
(图片来源网络,侵删)
<li>
  <a href="https://www.example.com/plus/view.php?aid=123">DedeCMS 教程</a>
  -
  <a href="https://www.example.com/plus/list.php?tid=5">技术分享</a>
</li>

进阶用法:只获取栏目 URL 或名称

有时候你可能不需要完整的 <a> 标签,只需要 URL 或者栏目名称。

只获取栏目 URL

使用 {dede:typeurl}

{dede:arclist typeid='' row='5'}
  <p>
    文章标题: [field:title/]
  </p>
  <p>
    所属栏目URL: [field:typeurl/]
  </p>
  <hr>
{/dede:arclist}

只获取栏目名称

使用 {dede:typelink} 标签的 function 属性来处理,或者更简单的方式是使用 {dede:typename}

使用 {dede:typename} (推荐)

{dede:typename} 是专门在 arclist 循环内获取栏目名称的标签,非常方便。

{dede:arclist typeid='' row='5'}
  <p>
    <a href="[field:typeurl/]">[field:typename/]</a> > <a href="[field:arcurl/]">[field:title/]</a>
  </p>
{/dede:arclist}

使用 {dede:typelink}function 属性

dede arclist 栏目链接
(图片来源网络,侵删)

如果你对 PHP 语法熟悉,可以用 function 来截取。

{dede:arclist typeid='' row='5'}
  <!-- 使用 function='str_replace("<a","",str_replace("</a>","",@me))' 来去掉 a 标签 -->
  [field:typelink function='str_replace("<a","",str_replace("</a>","",@me))'/]
  <br>
{/dede:arclist}

这个方法比较复杂,不如直接用 {dede:typename} 简洁。


完整模板示例:一个常见的文章列表布局

下面是一个更完整的、常见的文章列表模板,包含了文章标题、发布时间、栏目链接和摘要。

<ul class="article-list">
  {dede:arclist typeid='' row='8' titlelen='50' infolen='150' orderby='pubdate'}
  <li class="clearfix">
    <div class="article-title">
      <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
      <div class="article-info">
        <span>发布于:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        <span>分类:<a href="[field:typeurl/]">[field:typename/]</a></span>
      </div>
    </div>
    <div class="article-summary">
      <p>[field:info/]...</p>
    </div>
  </li>
  {/dede:arclist}
</ul>

代码解析

  • infolen='150': 设置文章摘要的长度。
  • [field:pubdate function="MyDate('Y-m-d',@me)"/]: 调用文章发布时间,并使用 function 属性通过 MyDate 函数将其格式化为 年-月-日 的格式。
  • [field:arcurl/]: 获取文章的链接。
  • [field:typeurl/]: 获取栏目的链接。
  • [field:typename/]: 获取栏目的名称。
  • [field:info/]: 获取文章的摘要内容。

常见问题与注意事项 (FAQ)

typeidtopid 的区别是什么?

  • typeid: 指定调用特定栏目及其所有子栏目下的文章。typeid='1' 会调用栏目 ID 为 1 的文章,以及它所有一级、二级...子栏目下的文章。
  • topid: 指定调用顶级栏目下的文章。topid='1' 会调用栏目 ID 为 1 的文章,但如果它有子栏目,则不会调用子栏目下的文章。

为什么我的 [field:typelink/] 显示不出来?

请检查以下几点:

  • 拼写错误:确保是 typelink,而不是 type_link 或其他拼写。
  • arclist 循环:确保 [field:typelink/] 是写在 {dede:arclist}{/dede:arclist} 之间的。
  • 栏目存在:确保文章所属的栏目是正常发布且未被删除的。

如何调用外部模型(比如软件、产品)的栏目链接?

默认情况下,arclist 只能调用文章模型(article)的栏目,如果要调用其他模型的栏目,需要指定 channelid

  • 文章模型的 channelid 通常是 1。
  • 软件模型的 channelid 通常是 3。
  • 产品模型的 channelid 通常是 2。

示例:调用软件模型(channelid=3)的列表,并显示其所属栏目链接。

{dede:arclist channelid='3' row='10'}
  <li>
    [field:textlink/] - [field:typelink/]
  </li>
{/dede:arclist}

希望这份详细的指南能帮助你完全掌握在 DedeCMS 中使用 arclist 标签来显示栏目链接的方法!

-- 展开阅读全文 --
头像
dede cfg_basehost配置错误怎么办?
« 上一篇 2025-12-18
a5dedecms织梦建站培训靠谱吗?
下一篇 » 2025-12-18

相关文章

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