dede如何调用指定分类下的新闻列表?

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

{dede:arclist}

{dede:arclist} 是 DedeCMS 中最强大、最灵活的列表调用标签,专门用于获取文章(新闻)列表。

dede 新闻列表调用指定分类下的新闻
(图片来源网络,侵删)

基本语法和参数

要在指定分类下调用新闻,你需要使用 typeid 这个核心参数。

{dede:arclist typeid='分类ID' titlelen='40' row='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}

关键参数详解

a. typeid (必须参数)

  • 作用:指定要调用的新闻分类的 ID。
  • 如何获取分类 ID?
    1. 登录你的 DedeCMS 后台。
    2. 进入「核心」 -> 「内容频道管理」 -> 「内容栏目管理」。
    3. 找到你想要调用的那个分类,将鼠标悬停在该分类名称上,浏览器左下角会显示链接,.../catalog_add.php?cid=123123 就是这个分类的 ID。
  • 用法
    • typeid='123':调用单个分类 ID 为 123 的新闻。
    • typeid='123,456,789':同时调用多个分类 ID 的新闻,用英文逗号隔开。
    • typeid='top':调用顶级栏目(所有一级分类)下的新闻。
    • typeid='sonof123':调用分类 ID 为 123 的所有子分类下的新闻。

b. row (可选参数)

  • 作用:指定调用多少条新闻。
  • 用法
    • row='10':调用 10 条新闻。
    • row='0' 或不写此参数:调用该分类下所有符合条件的新闻。

c. titlelen (可选参数)

  • 作用:设置新闻标题的显示字数。
  • 用法
    • titlelen='30'最多显示 30 个汉字(一个汉字算一个字符,一个字母也算一个字符)。

d. infolen (可选参数)

  • 作用:设置新闻内容简介(的显示字数。
  • 用法
    • infolen='100':摘要显示 100 个字符。
  • 注意:这个字段需要你在后台发布新闻时填写“内容,否则可能为空。

e. orderby (可选参数)

  • 作用:设置新闻的排序方式。
  • 常用值
    • orderby='pubdate':按发布时间倒序排列(默认)。
    • orderby='hot'orderby='click':按点击量(人气)从高到低排序。
    • orderby='sortrank':按后台设置的“文章排序值”排序。
    • orderby='id':按文章 ID 倒序排列。

f. channelid (可选参数)

  • 作用模型 ID。
  • 默认值1,代表“普通文章”模型,如果你有其他模型(如产品、下载等),需要填写对应的模型 ID。

完整示例

假设你要调用一个 ID 为 5 的分类下的新闻,标题显示 30 个字,共显示 10 条,并按发布时间排序。

HTML 模板代码

<h2>公司新闻</h2>
<ul class="news-list">
    {dede:arclist typeid='5' titlelen='30' row='10' orderby='pubdate'}
    <li>
        <!-- [field:title/] 是文章标题 -->
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <!-- [field:pubdate/] 是发布时间,我们使用 function 来格式化日期 -->
        <span class="date">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
    {/dede:arclist}
</ul>

各个字段说明

字段标签 说明
[field:title/]
[field:arcurl/] 文章链接
[field:pubdate/] 发布时间(时间戳格式)
[field:description/] 需要在后台填写)
[field:litpic/] 文章缩略图
[field:click/] 文章点击量
[field:id/] 文章 ID

常见问题与解决方案

问题1:为什么调用出来的列表是空的?

  • 原因1typeid 写错了,请务必去后台核对分类 ID。
  • 原因2:该分类下还没有发布任何文章。
  • 原因3:该分类被设置为“外部链接”或“单页文档”,而不是“栏目”。
  • 原因4:权限问题,如果使用了会员模型,可能是栏目权限设置导致游客无法查看。

问题2:如何只显示有缩略图的文章?

可以使用 litpic='default' 参数,并配合 idlist 等方法,但更简单的方式是使用 addfieldschannelid 结合查询数据库,一个更简单直观的模板判断方法是:

{dede:arclist typeid='5' row='10'}
    <li>
        <!-- 使用 runphp='yes' 进行条件判断 -->
        [field:litpic runphp='yes']
            if(@me == '') {
                @me = '<img src="/images/default-thumbnail.jpg" alt="无图"/>'; // 无图时显示的默认图片
            } else {
                @me = '<img src="' . @me . '" alt="[field:title/]"/>'; // 有图则显示原图
            }
        [/field:litpic]
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:arclist}

问题3:如何调用子分类及其下的文章?

  • 方法A (只调用子分类下的文章)
      {dede:arctype typeid='5'} <!-- 假设5是父分类ID -->
          {dede:channel type='son' noself='yes'}
              <h3><a href="[field:typelink/]">[field:typename/]</a></h3>
              <ul>
                  {dede:arclist typeid='[field:id/]' row='5'}
                      <li><a href="[field:arcurl/]">[field:title/]</a></li>
                  {/dede:arclist}
              </ul>
          {/dede:channel}
      {/dede:arctype}
  • 方法B (调用父分类和所有子分类下的文章)
      {dede:arclist typeid='5,sonof5' row='20'}
          <!-- ... -->
      {/dede:arclist}

调用指定分类下的新闻,记住核心公式:

dede 新闻列表调用指定分类下的新闻
(图片来源网络,侵删)

{dede:arclist typeid='你的分类ID' 其他参数...}

  • typeid 是灵魂,决定了数据来源。
  • rowtitlelenorderby 等是辅助,决定了如何展示数据。
  • [field:xxx] 是数据的呈现方式。

希望这份详细的指南能帮助你解决问题!如果还有其他疑问,欢迎随时提问。

dede 新闻列表调用指定分类下的新闻
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede带类文件为何不带class?
« 上一篇 12-03
dede搜索模板文件缺失,如何解决无法解析问题?
下一篇 » 12-03

相关文章

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

目录[+]