织梦分页标签如何正确调用内容?

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

在织梦DedeCMS中,分页功能是动态生成的,它不像文章内容那样直接存储在数据库的一个字段里,分页标签的核心是 {dede:pagebreak/} 这个系统内置的标签,它会根据你在后台设置的每页显示数,自动将长文章分割成多页,并生成上一页、页码、下一页等导航链接。

织梦调用分页标签内容
(图片来源网络,侵删)

下面我将分几种常见场景,为你详细解析如何调用和使用分页标签。


核心标签:{dede:pagebreak/}

这是所有分页功能的基础,你只需要在你希望分页的地方(通常是文章内容末尾)放置这个标签即可。

示例:article_article.htm (文章内容页模板)中,通常这样使用:

{dede:field.body/}
{dede:pagebreak/}

{dede:pagebreak/} 在后台生成的效果类似于: <a href="你的文章链接?pageno=2">下一页</a> <a href="你的文章链接?pageno=3">3</a> ...

织梦调用分页标签内容
(图片来源网络,侵删)

文章内容页分页调用

这是最常见的场景,当一篇文章很长时,需要将其分割成多页显示。

页模板 (article_article.htm) 中

你只需要在文章内容 {dede:field.body/} 之后,加上 {dede:pagebreak/} 标签即可。

完整示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <div class="info">
        <span>作者:{dede:field.writer/}</span> |
        <span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span> |
        <span>来源:{dede:field.source/}</span> |
        <span>点击:{dede:field.click/}</span>
    </div>
    <div class="content">
        {dede:field.body/}
        <!-- 在这里放置分页标签 -->
        {dede:pagebreak/}
    </div>
    <!-- 上一篇/下一篇 -->
    <div class="arcpages">
        {dede:prenext get='pre'/}
        {dede:prenext get='next'/}
    </div>
</body>
</html>

说明:

织梦调用分页标签内容
(图片来源网络,侵删)
  • {dede:field.body/}:调用文章内容,如果内容中包含了 [page] 或者你通过后台“内容分页”功能插入了分页符,织梦会自动将其分割。
  • {dede:pagebreak/}:生成页码导航。
  • {dede:prenext get='pre'}{dede:prenext get='next'}:分别调用上一篇和下一篇文章的链接。

后台设置

确保在发布文章时,已经正确设置了分页。

  • 在编辑器中手动分页 在文章编辑器(如ckeditor)中,将光标定位到需要分页的位置,点击“插入分页符”的按钮(通常是一个带有“分页”或“Page”字样的图标)。
  • 通过后台“内容分页”功能 在文章编辑界面的下方,有一个“内容分页”选项,你可以输入每页显示的字数,系统会自动帮你插入分页符。

列表页(首页、栏目页、搜索页等)分页调用

列表页分页是指当栏目下的文章很多,需要分页显示文章列表时的情况。

在列表页模板 (list_*.htm, index.htm 等) 中

列表页的分页标签通常放在文章列表循环 {dede:list}外部

完整示例代码 (以栏目页为例):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <div class="article_list">
        <!-- {dede:list} 是循环调用文章列表的标签 -->
        {dede:list pagesize='10' titlelen='50'}
        <div class="item">
            <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
            <p class="desc">[field:description function='cn_substr(@me, 100)'/]...</p>
            <div class="info">
                <span>时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
                <span>点击:[field:click/]</span>
            </div>
        </div>
        {/dede:list}
    </div>
    <!-- 在这里放置列表页的分页标签 -->
    <div class="page_navigation">
        {dede:pagelist listsize='4' listitem='info,index,pre,next,pageno'}
    </div>
</body>
</html>

关键标签解析:

  • {dede:list}: 循环输出文章列表。
    • pagesize='10': 设置每页显示10条文章,这个值必须与后台 -> 栏目管理 -> 修改栏目 -> “列表选项”中的“每页显示数”保持一致,否则分页会出错。
  • {dede:pagelist}: 这是列表页分页导航的核心标签。
    • listsize='4': 显示页码的数量,1 2 3 4 5 ... 10listsize='4' 会显示前后各4个页码。
    • listitem='...': 定义分页导航里显示哪些项目,常用值有:
      • info: 显示总页数、总条数等信息(如:共 10 页/50 条)
      • index: 显示首页
      • pre: 显示上一页
      • next: 显示下一页
      • pageno: 显示页码
      • option: 显示下拉跳转框
      • plus: 显示+/-

你可以根据需要自由组合 listitem 的值,listitem='info,index,pre,next,pageno,option'


搜索结果页分页调用

搜索结果页的分页调用方式与列表页完全相同。

search.htm 模板中,将文章列表循环和分页标签按如下方式放置:

<!-- 搜索表单... -->
<div class="search_results">
    {dede:list}
    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    <p>[field:info/]...</p>
    {/dede:list}
</div>
<div class="page_navigation">
    {dede:pagelist listitem='info,index,pre,next,pageno'}
</div>

这里的 {dede:list} 标签在搜索页中会自动变为搜索结果的循环,{dede:pagelist} 则负责搜索结果页的分页。


常见问题与注意事项

  1. 分页不生效/显示异常?

    • 检查 pagesize:确保模板中 {dede:list}pagesize 值与后台栏目设置的“每页显示数”一致。
    • 检查标签位置:列表页的分页标签 {dede:pagelist} 一定要放在 {dede:list} 循环的外面
    • 检查文章分页:如果是文章内容页分页不生效,请检查文章内容中是否插入了分页符([page] 或通过编辑器按钮插入)。
    • 检查SEO设置:如果开启了“启用伪静态”,请确保分页的URL规则(如 /a/1/2.html)与服务器伪静态规则匹配。
  2. 如何自定义分页样式? {dede:pagelist} 默认生成的HTML结构比较简单,通常用CSS类名(如 page-link, page-num, page-info 等)来定义样式,你可以通过修改 /include/arc.listview.class.php 文件来修改生成的HTML结构,但这有一定风险,更推荐的是用CSS来覆盖默认样式。

    示例CSS:

    .page_navigation {
        text-align: center;
        margin: 20px 0;
    }
    .page_navigation a {
        display: inline-block;
        padding: 5px 10px;
        margin: 0 3px;
        border: 1px solid #ddd;
        text-decoration: none;
        color: #333;
    }
    .page_navigation a:hover {
        background-color: #f0f0f0;
    }
    .page_navigation .thisclass { /* 当前页样式 */
        background-color: #007bff;
        color: #fff;
        border-color: #007bff;
    }
    .page_navigation .pageinfo { /* 信息样式 */
        padding: 5px 10px;
        color: #666;
    }
场景 核心标签 位置 说明
页分页 {dede:pagebreak/} 放在 {dede:field.body/} 之后 用于分割长文章内容。
列表页分页 {dede:pagelist} 放在 {dede:list} 循环之外 用于分页显示文章列表。
搜索页分页 {dede:pagelist} 放在 {dede:list} 循环之外 用于分页显示搜索结果。

掌握了这三个核心场景的用法,你就可以在织梦DedeCMS中自如地调用和实现各种分页功能了。

-- 展开阅读全文 --
头像
C程序为何必须从main函数开始执行?
« 上一篇 今天
dede模板路径怎么设置?
下一篇 » 今天

相关文章

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

目录[+]