织梦首页如何调取指定栏目文章?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 织梦建站 正文

使用官方推荐标签(最常用、最简单)

织梦CMS提供了强大的内置标签,无需编写任何PHP代码即可实现。

织梦首页调取栏目文章
(图片来源网络,侵删)

最基础的单栏目调用

如果你想调用某个特定栏目(比如栏目ID为 1)的文章列表,可以使用 arclist

代码示例:

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

代码解释:

  • {dede:arclist ...}:这是调用文章列表的开始和结束标签。
  • typeid='1'核心参数,指定要调用的栏目ID,你可以在后台“栏目管理”中找到对应栏目的ID,len='30'`:标题长度,截取30个字符。
  • row='10':调用文章的数量,这里调用10篇。
  • [field:arcurl/]:文章的链接地址。
  • [field:title/]:文章的标题。
  • [field:pubdate ...]:文章的发布日期。function="MyDate('Y-m-d', @me)" 是一个函数,用于将时间戳格式化为 年-月-日 的格式。

调用多个指定栏目的文章

如果你想同时调用多个栏目(比如栏目ID为 13)的文章,只需用英文逗号隔开。

代码示例:

织梦首页调取栏目文章
(图片来源网络,侵删)
{dede:arclist typeid='1,3' titlelen='30' row='10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:arclist}

调用顶级栏目下的所有子栏目文章

这是一个非常常见的需求,比如在首页显示“新闻中心”这个顶级栏目下所有子栏目的最新文章。

代码示例:

{dede:arclist typeid='top' typeid='2' row='10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:arclist}

注意: 这里 typeid='top' 是一个特殊值,但通常需要和具体的顶级栏目ID结合使用,或者直接在模板中通过其他方式获取顶级ID,更标准的写法是直接指定顶级栏目的ID,如果“新闻中心”的ID是 2typeid='2' 就会调用其所有子栏目的文章。

arclist 标签常用参数一览表

参数 说明 示例
typeid 指定栏目ID,多个用逗号隔开,顶级栏目用 top typeid='1,5,8'
row 调用文章数量。 row='10'
infolen 内容简介长度(字符数)。 infolen='100'
orderby 排序方式,常用值:pubdate (发布时间)、hot (点击量)、click (同hot)、sortrank (后台排序)。 orderby='hot'
orderway 排序方向。desc (降序,默认)、asc (升序)。 orderway='asc'
channelid 指定频道模型ID,默认为文章模型 1 channelid='1'
limit 分页限制,格式为 起始位置,调用数量limit='0,5' 表示从第0篇开始,调用5篇。 limit='0,5'
subday 调用指定天数内发布的文章。 subday='7' (调用一周内发布的文章)
keyword 关键词,调用包含指定关键词的文章。 keyword='织梦,DedeCMS'
idlist 指定文章ID列表,用逗号隔开,会覆盖 typeid idlist='10,22,35'

使用PHP代码(更灵活,适合高级用户)

如果你需要进行更复杂的逻辑判断,或者 arclist 标签无法满足你的需求,可以使用PHP代码直接查询数据库。

织梦首页调取栏目文章
(图片来源网络,侵删)

代码示例:

<?php
    // 1. 设置查询参数
    $typeid = 1; // 要查询的栏目ID
    $row = 10;   // 要查询的文章数量
    // 2. 构建SQL查询语句
    // 从 dede_archives 表中查询,只属于指定栏目ID,按发布时间降序排列,并限制数量
    $sql = "SELECT id, title, pubdate, litpic FROM dede_archives WHERE typeid = $typeid ORDER BY pubdate DESC LIMIT $row";
    // 3. 执行查询
    $dsql = $GLOBALS['dsql'];
    $articles = $dsql->GetAll($sql); // 使用 GetAll 获取所有结果
    // 4. 循环输出结果
    if(is_array($articles)){
        foreach($articles as $article){
            $arcUrl = GetOneArchive($article['id']); // 获取文章的完整链接
?>
            <li>
                <a href="<?php echo $arcUrl['arcurl']; ?>" title="<?php echo $article['title']; ?>">
                    <?php echo $article['title']; ?>
                </a>
                <span><?php echo date('Y-m-d', $article['pubdate']); ?></span>
            </li>
<?php
        }
    }
?>

代码解释:

  1. $typeid$row:定义变量,方便修改。
  2. $sql:这是核心的SQL查询语句。
    • SELECT id, title, pubdate, litpic FROM dede_archives:从文章主表 dede_archives 中查询文章ID、标题、发布时间和缩略图。
    • WHERE typeid = $typeid:条件,只查询指定栏目ID的文章。
    • ORDER BY pubdate DESC:按发布时间降序排列,最新的在前面。
    • LIMIT $row:限制查询结果的数量。
  3. $dsql->GetAll($sql):执行SQL查询,并将结果以数组形式返回。
  4. foreach 循环:遍历查询到的每篇文章。
  5. GetOneArchive($article['id']):这是一个织梦内置函数,根据文章ID获取文章的详细信息,包括完整的URL (arcurl)。
  6. 输出HTML:在循环中,将文章的标题、链接等信息嵌入到HTML结构中。

总结与建议

特性 标签法 (arclist) PHP代码法
易用性 非常高,无需懂代码 较低,需要懂PHP和SQL
灵活性 较高,能满足大部分需求 非常高,可以实现任何复杂逻辑
维护性 好,标签清晰明了 较差,代码嵌入模板,不易维护
性能 优,系统已高度优化 良好,但需自己写SQL,注意效率
适用场景 99%的常规需求,如首页、栏目页列表 特殊需求,如跨表查询、复杂条件判断

给新手的建议:

  • 优先使用 arclist,它功能强大且足够应对绝大多数情况,是织梦设计的精髓所在。
  • 先从最简单的 typeidrow 参数开始,确保能调出文章。
  • 逐步尝试其他参数,如 orderbytitlelen 等,来定制你的输出效果。
  • 只有在标签完全无法满足你的需求时,才考虑使用PHP代码法。

希望这份详细的指南能帮助你顺利在织梦首页调取栏目文章!

-- 展开阅读全文 --
头像
织梦怎样播放本地视频
« 上一篇 03-23
C语言、C和C++到底有何本质区别?
下一篇 » 03-23

相关文章

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