dede如何调用多个指定栏目的文章?

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

修改全局变量法(最常用、最简单)

这种方法的核心思想是:在调用文章列表之前,先定义一个全局变量,这个变量包含你想要调用的所有栏目ID,然后在 {dede:arclist} 标签中使用这个变量。

dede调用多个指定栏目文章
(图片来源网络,侵删)

适用场景:在当前页面(通常是首页 index.htm)调用多个固定栏目的文章。

操作步骤:

  1. 找到并打开文件 打开您的网站根目录下的 include/common.inc.php 文件。

  2. 添加全局变量 在文件末尾,?> 标签的前面,添加如下代码:

    // 定义多个栏目ID,用英文逗号隔开
    // 我们要调用栏目ID为 1, 3, 5 的文章
    $GLOBALS['typeid'] = '1,3,5';

    代码解释

    dede调用多个指定栏目文章
    (图片来源网络,侵删)
    • $GLOBALS['typeid']:定义一个全局变量 typeid
    • '1,3,5':这是你想要调用的栏目ID,必须用英文逗号 分隔,你需要替换成你自己的栏目ID。
  3. 在模板文件中使用 打开你的首页模板文件 index.htm,在你想要显示文章列表的地方,使用以下代码:

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

    代码解释

    • dede:arclist:这是 DedeCMS 最核心的文章列表调用标签。
    • titlelen='30'长度,最多显示30个字符。
    • row='10':调用文章的数量,共10篇。
    • 关键点:我们没有在 typeid 属性中写任何ID,因为 arclist 标签会自动去读取全局变量 $GLOBALS['typeid'] 的值。
  4. 生成首页 登录 DedeCMS 后台,点击“生成” -> “一键生成” -> “更新主页”,重新生成你的首页。


使用 dede:sql 直接查询法(最灵活、最强大)

当你需要更复杂的查询条件,或者 arclist 标签无法满足你的需求时,使用 dede:sql 直接执行 SQL 语句是最佳选择。

dede调用多个指定栏目文章
(图片来源网络,侵删)

适用场景:需要跨表查询、排序方式特殊、需要获取特定字段等复杂情况。

操作步骤:

  1. 在模板文件中直接调用 在你的模板文件(如 index.htm)中,直接使用 dede:sql 标签:
    {dede:sql sql="SELECT id, title, arcurl, pubdate FROM `dede_archives` WHERE typeid IN (1,3,5) AND arcrank > -1 ORDER BY pubdate DESC LIMIT 0, 10"}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
    {/dede:sql}

    代码解释

    • dede:sql:执行自定义SQL语句的标签。
    • sql="...":里面的就是标准的 SQL 查询语句。
    • SELECT id, title, arcurl, pubdate FROMdede_archives`从文章主表dede_archives中查询指定字段。dedearchives是 DedeCMS 存储文章基本信息的表,**你的表前缀可能不是dede`,请根据实际情况修改**。
    • WHERE typeid IN (1,3,5):这是关键!typeid IN (1,3,5) 表示只查询栏目ID为 1、3 或 5 的文章,这与方法一的效果相同。
    • AND arcrank > -1:这是一个常用条件,表示只审核通过的文章(arcrank = -1 为审核通过)。
    • ORDER BY pubdate DESC:按发布日期降序排列,最新的在前面。
    • LIMIT 0, 10:从第0条记录开始,取10条记录(即调用10篇文章)。
    • [field:arcurl/][field:title/]:通过 field 标签来输出SQL查询返回的各个字段的值。

通过自定义模型/扩展变量法(最规范、最易维护)

如果你的网站结构比较复杂,或者这个“多栏目调用”功能需要在多个页面重复使用,那么通过后台设置一个扩展变量是最好的选择。

适用场景:需要全局配置、方便修改和维护的项目。

操作步骤:

  1. 在后台设置扩展变量

    • 登录 DedeCMS 后台。
    • 进入“系统” -> “系统基本参数” -> “添加新变量”。
    • 变量名称:填写 multi_typeid (不能与已有变量冲突)。
    • 变量类型:选择“文本”。
    • 参数说明:填写“多个栏目ID列表”。
    • 变量值:填写你的栏目ID,如 1,3,5
    • 点击“保存变量”。
  2. 在模板文件中使用 在你的模板文件中,使用 {dede:global} 标签来读取这个变量,并将其传递给 arclist

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

    代码解释

    • {dede:global name='multi_typeid'/}:这句代码会读取你在后台设置的变量值,也就是 '1,3,5'
    • typeid='{dede:global name='multi_typeid'/}':将读取到的值动态地赋给 arclist 标签的 typeid 属性。
  3. 维护方便 以后如果需要修改调用的栏目,你只需要去后台的“系统基本参数”里修改“多个栏目ID列表”的值即可,无需修改任何模板文件,非常方便。


总结与对比

方法 优点 缺点 适用场景
全局变量 简单直接,无需后台设置 修改需要编辑PHP文件,不够灵活 首页调用少量固定栏目,快速实现
dede:sql 极其灵活,可完成任何复杂查询 需要了解SQL语法,字段名要写对 复杂查询、特殊排序、跨表操作
扩展变量 最规范,易于维护和修改 需要在后台先进行设置 多页面使用、需要经常更换栏目ID的项目

对于绝大多数用户来说,方法一方法三 是最常用且推荐的,如果你只是想在首页调用几个栏目,用方法一最快,如果你希望这个配置是可维护的,用方法三最专业,如果遇到 arclist 搞不定的复杂需求,那么方法二是你的终极武器。

-- 展开阅读全文 --
头像
dede如何调用指定顶级栏目名称?
« 上一篇 前天
Linux C语言clone如何创建新进程?
下一篇 » 前天

相关文章

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

目录[+]