dede中arclist分页

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

arclist 是 DedeCMS 中最常用、最核心的列表调用标签,但它本身不具备分页功能arclist 的作用是在一个页面内调用指定数量的文章列表,要实现分页,我们需要结合另一个核心标签:pagelist

dede中arclist分页
(图片来源网络,侵删)

实现 arclist 分页主要有两种常见场景:

  1. 首页/栏目页列表分页:这是最常见的需求,比如首页的“最新文章”栏目,或者一个栏目下的文章列表需要分页显示。
  2. 自定义页面分页:在一个自定义的HTML页面(aboutus.htm)里,调用文章列表并分页。

下面我们分别讲解这两种场景的实现方法。


首页/栏目页列表分页

这是最标准、最简单的分页方式,DedeCMS 的默认模板已经内置了这种分页逻辑,我们只需要确保标签使用正确即可。

第1步:在模板文件中使用 arclist

在你需要显示列表的模板文件中(index.htmlist_article.htm),使用 arclist 标签来调用文章。

dede中arclist分页
(图片来源网络,侵删)

关键点:

  • row:设置每页显示的文章数量,这个数值将影响分页。
  • typeid:指定要调用哪个栏目下的文章,首页调用时通常可以留空或指定特定栏目ID。

示例代码 (index.htmlist_article.htm):

<h2>最新文章</h2>
<ul class="news_list">
    {dede:arclist row='10' typeid='1'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:arclist}
</ul>
<!-- 分页代码 -->
<div class="dede_pages">
    <ul>
        {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
        </ul>
</div>

代码解释:

  1. {dede:arclist row='10' typeid='1'}:
    • row='10':表示每页显示 10 篇文章。
    • typeid='1':表示调用 ID 为 1 的栏目下的文章,如果是在栏目页模板,可以省略 typeid,它会自动调用当前栏目的文章。
  2. {dede:pagelist ...}:
    • 这个标签专门用来生成分页链接。
    • listsize='4':显示页码的数量,1 2 3 4 5 6 7 8 9,当前页前后各显示 4 个页码。
    • listitem='info,index,end,pre,next,pageno':定义分页条显示哪些元素。
      • info:显示总页数、总条数等信息,如“共 10 页/50 条”。
      • index:显示首页链接。
      • pre:显示上一页链接。
      • next:显示下一页链接。
      • pageno:显示页码。
      • end:显示尾页链接。
      • option:下拉跳转框。

第2步:确保后台设置正确

进入 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置

检查以下两个选项是否已启用:

  1. 是否开启arclist分页功能:选择 “是”
  2. 列表每页显示条数:设置一个默认值,这个值会被 arclistrow 属性覆盖,但保持一个默认值是好的习惯。

完成以上两步,你的首页或栏目页列表就可以正常分页了。


自定义页面(独立页面)中的 arclist 分页

有时,我们希望在一个自定义的页面(company_news.htm)里调用文章列表并实现分页,这种情况下,需要一些额外的设置。

第1步:创建模板文件

/templets/your_template/ 目录下创建一个新的模板文件,company_news.htm

第2步:在模板中编写代码

company_news.htm 中,写入 arclistpagelist

示例代码 (company_news.htm):

{dede:include filename="head.htm"/}
<h1>公司新闻动态</h1>
<div class="news_content">
    {dede:arclist row='8' typeid='3' titlelen='40'}
    <div class="news_item">
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <p class="news_summary">[field:description function='cn_substr(@me, 100)'/]...</p>
        <div class="news_meta">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</div>
    </div>
    {/dede:arclist}
</div>
<!-- 分页代码 -->
<div class="dede_pages">
    <ul>
        {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
        </ul>
</div>
{dede:include filename="footer.htm"/}

注意:这里的 typeid 必须指定为你想要调用文章的栏目ID。

第3步:创建对应的栏目(关键步骤)

DedeCMS 的分页功能依赖于栏目的分页设置,即使是自定义页面,也需要“挂靠”到一个栏目才能获得分页参数。

  1. 进入后台 -> 核心 -> 栏目管理
  2. 创建一个新栏目(命名为“公司新闻展示”)。
  3. 在栏目属性中,选择 “最终列表栏目”
  4. “列表模板选项” 中,选择你刚刚创建的模板文件 company_news.htm
  5. 最重要的一步:在 “列表每页显示条数” 中,填写你希望在每页显示的文章数量(8),这个值会和 arclist 标签里的 row 值对应。
  6. 保存栏目。

第4步:生成栏目页面

  1. 进入后台的 “生成” -> “更新栏目HTML”
  2. 找到你刚刚创建的“公司新闻展示”栏目,点击右侧的 “更新” 按钮。

访问这个栏目生成的页面(http://www.yoursite.com/plus/list.php?tid=X,X是你的栏目ID),你就能看到带有完整分页功能的文章列表了。


常见问题与技巧 (FAQ)

arclist 分页后,URL 中出现 ?pageno=2 这样的参数,如何美化?

默认的分页 URL 是动态的,如果需要伪静态(美化URL),需要做以下设置:

  • 后台设置
    • 进入 系统 -> 系统基本参数 -> 核心设置
    • “栏目列表页命名规则”“文章列表分页命名规则” 修改为你想要的伪静态后缀,list_{tid}_{page}.html
  • 伪静态规则
    • 在你的服务器上(如 Apache 的 .htaccess 或 Nginx 的 rewrite 规则)添加对应的伪静态规则,将 list_1_2.html 这样的URL重写为 plus/list.php?tid=1&pageno=2
  • 重新生成

    修改完规则后,需要重新生成相关页面才能生效。

为什么我的 pagelist 不显示,或者显示为“首页 上一页 下一页 尾页”?

这通常是因为 arclist 调用的文章总数小于等于 row 设置的值,你设置了 row='10',但当前栏目只有 8 篇文章,那么自然就不需要分页,pagelist 也就只显示导航链接,而不显示页码,尝试调用一个文章数量较多的栏目测试即可。

arclistSQL 标签调用文章分页有什么区别?

  • arclist:功能强大,标签简洁,支持各种排序和调用方式,是官方推荐的首选方式,分页逻辑已经内置,配置简单。
  • SQL:灵活性极高,可以执行任何自定义的 SQL 查询,实现 arclist 无法完成的高级调用。SQL 标签本身不带分页功能,需要手动编写分页逻辑,包括计算总数、获取当前页码、使用 limit 进行数据截取等,实现起来更复杂。

对于绝大多数场景,使用 arclist + pagelist 是最简单、最稳定的选择。

希望这份详细的教程能帮助你完全掌握 DedeCMS 中 arclist 的分页功能!

-- 展开阅读全文 --
头像
dede loop如何实现分页功能?
« 上一篇 01-30
织梦数据还原后数据去哪了?
下一篇 » 01-30
取消
微信二维码
支付宝二维码