dede list如何调用后四条数据?

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

使用 limit 属性(最推荐,最灵活)

这是最常用且最灵活的方法,它可以在标准的 arclist 标签中直接实现,无需修改模板文件。

arclist 标签有一个 limit 属性,用于控制获取记录的起始位置和数量,它的语法是 limit='起始条数,获取条数'

要获取后四条,我们需要先计算出“起始条数”。

计算逻辑: 假设当前栏目总共有 total 篇文章,我们要获取最后4篇,那么起始位置就应该是 total - 4

如何获取 total DedeCMS 在列表页有一个内置的变量 this.GetTotalArc(),它可以获取当前栏目的文章总数。

具体代码实现:

将您原来的 arclist 标签进行如下修改:

{dede:list pagesize='20'}
  <!-- 您原来的列表循环内容 -->
  <li><a href="[field:arcurl/]">[field:title/]</a></li>
  {/dede:list}

修改为调用后四条的代码:

{dede:arclist 
    typeid='[field:id/]' 
    row='4' 
    limit='[field:php]global $dsql; $total = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `dede_archives` WHERE typeid='{$this->TypeID}'"); echo $total['dd'] - 4;[/field:php],4'
}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:arclist}

代码解释:

  1. {dede:arclist ...}: 我们使用 arclist 标签而不是 list 标签,因为 list 标签本身用于分页,其 limit 属性用法不同,而 arclistlimit 更符合我们的需求。
  2. typeid='[field:id/]': 指定当前栏目ID,确保只调用本栏目的文章。
  3. row='4': 设置总共要获取的记录数为4条,这个参数和 limit 中的数量部分是冗余的,但写上更清晰。
  4. limit='... ,4': 这是核心。
    • [field:php]...[/field:php]: 这是一个PHP代码块,用于动态计算起始值。
    • global $dsql;: 引入数据库操作对象。
    • $total = $dsql->GetOne(...): 执行SQL查询,获取当前栏目的文章总数。
    • echo $total['dd'] - 4;: 计算出起始位置(总条数-4),并将其输出给 limit 属性。
    • ,4: 指定获取的数量为4条。

优点:

  • 灵活:可以轻松修改为调用后5条、后10条等。
  • 准确:直接基于数据库查询,非常精确。
  • 不修改核心文件:所有修改都在模板文件中完成,安全且易于维护。

使用SQL查询(功能最强大)

如果您需要更复杂的条件筛选(只调用后四条“推荐”文章),直接使用 dede:sql 标签会非常方便。

具体代码实现:

{dede:sql sql="
    SELECT 
        id, 
        title, 
        arcurl, 
        pubdate 
    FROM 
        `dede_archives` 
    WHERE 
        typeid = [field:id/] 
    ORDER BY 
        id DESC 
    LIMIT 
        4
"}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:sql}

代码解释:

  1. {dede:sql sql="..."}: 调用自定义SQL标签。
  2. SELECT ... FROM dede_archives: 指定查询的字段和表(dede_archives 是文章主表,表名前缀可能不同,请根据您的配置修改)。
  3. WHERE typeid = [field:id/]: 条件是栏目ID等于当前栏目ID。
  4. ORDER BY id DESC: 非常重要!按文章ID降序排列,这样最新的文章(ID最大)就会排在最前面。
  5. LIMIT 4: 直接获取排序后的前4条记录,因为已经按 DESC 排序了,所以这4条就是最新的后4条。

优点:

  • 功能强大:可以自由组合任何SQL查询条件,如 and flag='c' (调用推荐文章)。
  • 性能可能更高:只查询需要的字段,比 arclist 更精简。

缺点:

  • 需要了解基本的SQL语法。
  • 如果表名前缀修改过,需要手动调整SQL语句中的 dede_archives

总结与选择

特性 方法一 (arclist + limit) 方法二 (dede:sql)
易用性 较高,使用标准标签 较低,需要写SQL
灵活性 高,适合大多数场景 极高,适合复杂查询
安全性 高,标签自动过滤 需自己注意SQL注入(Dede标签本身有安全处理)
适用场景 常规需求,调用后N条最新文章 复杂条件筛选,如调用后N条特定属性(推荐、头条)的文章

建议:

  • 如果只是简单地调用后四条最新文章,强烈推荐使用方法一,它既标准又灵活。
  • 如果您的需求更复杂,比如要同时满足“后四条”和“是推荐文章”这两个条件,那么使用方法二会更直接和高效。

希望这些信息能帮助您解决问题!

-- 展开阅读全文 --
头像
c语言程序设计基础教程课后答案
« 上一篇 01-20
织梦CMS如何关闭手机版?
下一篇 » 01-20

相关文章

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

目录[+]