下面我将从 核心标签、模板文件、自定义样式、高级用法 四个方面进行详细说明。

核心分页标签 [page]
列表模板(如 list_*.html)中实现分页最直接、最简单的方法。
语法:
[page]
作用: 这个标签会自动解析并生成当前列表页的分页导航,包括“首页”、“上一页”、“页码”、“下一页”、“末页”以及“总信息数”等。
使用场景:
当你只需要一个简单的、默认样式的分页时,直接在模板文件中插入 [page] 即可。

示例:
假设你有一个新闻列表模板 list_news.html,你希望在列表下方显示分页:
<!-- list_news.html -->
<div class="list">
{loop $items $item}
<div class="item">
<h3><a href="{$item[link]}">{$item[title]}</a></h3>
<p class="desc">{str_cut($item[description], 100)}</p>
</div>
{/loop}
</div>
<!-- 在这里插入分页标签 -->
<div class="pages">
[page]
</div>
当 Destoon 渲染这个模板时,[page] 会被替换成具体的分页 HTML 代码。
分页模板文件 page.htm
如果你想对分页的样式、显示的文字和结构进行完全自定义,就需要使用分页模板文件 page.htm。
工作原理:
Destoon 在生成 [page] 标签时,会自动加载并使用 /template/你的模板名称/page.htm 这个文件的内容来渲染分页,如果你没有这个文件,它会使用系统默认的样式。
文件路径:
/template/你的模板名称/page.htm
如何自定义:
- 复制默认模板: 首先找到 Destoon 的默认模板文件,通常在
/template/default/page.htm。 - 复制到你的模板目录: 将这个
page.htm文件复制到你当前正在使用的模板目录下,/template/my_theme/page.htm。 - 编辑
page.htm: 现在你可以自由修改这个文件,来自定义分页的每一个部分。
page.htm 文件详解与自定义样式
page.htm 文件使用 Destoon 的模板语法,主要由 if 判断和变量组成。
文件结构解析
打开 page.htm,你会看到类似下面的结构:
<!-- page.htm -->
{if $pages}
<div class="pages">
<!-- 首页 -->
{if $first_page}
<a href="{$first_page}" class="first">首页</a>
{/if}
<!-- 上一页 -->
{if $prev_page}
<a href="{$prev_page}" class="prev">上一页</a>
{/if}
<!-- 页码列表 -->
{if $pages_start > 1}
<a href="{$first_page}">1</a>
{if $pages_start > 2}<span>...</span>{/if}
{/if}
{loop $pages $page}
{if $page[current]}
<span class="current">{$page[number]}</span>
{else}
<a href="{$page[url]}">{$page[number]}</a>
{/if}
{/loop}
{if $pages_end < $total_pages}
{if $pages_end < $total_pages - 1}<span>...</span>{/if}
<a href="{$last_page}">{$total_pages}</a>
{/if}
<!-- 下一页 -->
{if $next_page}
<a href="{$next_page}" class="next">下一页</a>
{/if}
<!-- 末页 -->
{if $last_page}
<a href="{$last_page}" class="last">末页</a>
{/if}
<!-- 信息统计 -->
<span class="info">共 {$total_results} 条</span>
</div>
{/if}
关键变量说明
| 变量 | 说明 |
|---|---|
$pages |
一个数组,包含所有页码的信息。 |
$page[number] |
当前循环的页码数字。 |
$page[url] |
当前循环页码的链接地址。 |
$page[current] |
布尔值,判断当前页码是否是正在浏览的页。 |
$first_page |
首页的链接地址。 |
$prev_page |
上一页的链接地址。 |
$next_page |
下一页的链接地址。 |
$last_page |
末页的链接地址。 |
$total_pages |
总页数。 |
$total_results |
总信息条数。 |
$pages_start |
页码列表的起始页。 |
$pages_end |
页码列表的结束页。 |
如何修改样式(以 Bootstrap 为例)
假设你想让分页样式适配 Bootstrap 框架,只需修改 page.htm 中的 class 名即可。
修改前 (默认样式):
<div class="pages">
<a href="..." class="first">首页</a>
<a href="..." class="prev">上一页</a>
<span class="current">1</span>
<a href="...">2</a>
...
</div>
修改后 (Bootstrap 样式):
<!-- page.htm -->
{if $pages}
<nav aria-label="Page navigation">
<ul class="pagination">
<!-- 首页 -->
{if $first_page}
<li><a href="{$first_page}" aria-label="First"><span aria-hidden="true">首页</span></a></li>
{/if}
<!-- 上一页 -->
{if $prev_page}
<li><a href="{$prev_page}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>
{/if}
<!-- 页码列表 -->
{loop $pages $page}
{if $page[current]}
<li class="active"><span>{$page[number]} <span class="sr-only">(current)</span></span></li>
{else}
<li><a href="{$page[url]}">{$page[number]}</a></li>
{/if}
{/loop}
<!-- 下一页 -->
{if $next_page}
<li><a href="{$next_page}" aria-label="Next"><span aria-hidden="true">»</span></a></li>
{/if}
<!-- 末页 -->
{if $last_page}
<li><a href="{$last_page}" aria-label="Last"><span aria-hidden="true">末页</span></a></li>
{/if}
</ul>
</nav>
{/if}
修改后,分页就会自动变成 Bootstrap 风格的列表样式,美观且响应式。
高级用法与常见问题
自定义分页显示条数
分页每页显示多少条信息,是在后台设置,而不是在模板里。
- 路径: 登录 Destoon 后台 -> 系统设置 -> 系统参数 -> 分页设置。
- 关键项:
- 列表分页数量:控制列表页(如新闻列表、产品列表)每页显示多少条。
- 内容分页数量页(如新闻详情页)每页显示多少字后进行分页。
你可以在后台调整这些数值,无需修改模板文件。
AJAX 分页
Destoon 默认不支持纯 AJAX 分页(点击页码无刷新加载内容),因为这需要对 URL 和 SEO 进行特殊处理,传统的 [page] 方式是每次点击都重新加载整个页面,这是最稳定、对 SEO 最友好的方式。
如果你确实需要 AJAX 分页,通常需要通过修改 PHP 程序文件(如 module/moduleid/list.inc.php)和配合 JavaScript(如 jQuery)来实现,这属于二次开发范畴,相对复杂。
分页链接中添加额外参数
如果你想在分页链接中保留 URL 中的其他参数(如搜索关键词 keyword=Destoon),Destoon 默认会自动处理。
yourdomain.com/news/list-1.html 会变成 yourdomain.com/news/list-2.html?keyword=Destoon。
系统会自动保留 后面的非分页参数。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
[page] |
使用简单,无需额外文件。 | 样式固定,难以自定义。 | 快速实现,对样式要求不高的列表页。 |
page.htm 模板 |
高度灵活,可完全控制分页的 HTML 结构和 CSS 样式。 | 需要创建和编辑一个额外的文件。 | 强烈推荐,几乎所有需要自定义分页样式的项目都应使用此方法。 |
最佳实践:
- 始终使用
page.htm文件 进行自定义。 - 从
template/default/page.htm复制文件到你的模板目录。 - 根据你的网站设计(如 Bootstrap、Element UI 或自定义 CSS)修改
page.htm中的 HTML 标签和class名。 - 在你的列表模板(如
list_news.html)中,只需放置[page]标签即可。
通过这种方式,你可以轻松地为 Destoon 网站打造出与整体设计风格完美融合的分页效果。
