在 PHPCMS V9 中,$pages 变量通常是在模板中用于显示分页导航(上一页、下一页、页码等)的字符串。

它不是一个简单的数字或数组,而是一段包含 HTML 代码的字符串。
以下是关于 $pages 参数的详细解析,包括如何使用、如何修改以及常见问题。
基本用法
在模板文件(通常是 list_*.html 或 show_*.html)中,直接输出该变量即可显示分页条:
<!-- 分页代码 -->
<div class="pagination">
{$pages}
</div>
输出结果示例: PHPCMS 默认会输出类似下面的 HTML 结构:

<span class="pagecur">1</span> <a href="index-2.html" class="pagea">2</a> <a href="index-3.html" class="pagea">3</a> <a href="index-2.html" class="pagea">下一页</a>
核心控制参数(在 {pc} 标签中设置)
$pages 的生成逻辑主要由前台模板的 {pc} 标签中的参数控制,以下是最关键的几个参数:
| 参数名 | 说明 | 默认值 | 示例 |
|---|---|---|---|
num |
每页显示条数 (最重要的参数) | 20 | num="50" |
page |
当前页码 (通常自动获取 $page) |
1 | page="$page" |
catid |
栏目ID (用于列表页) | 自动获取 | catid="$catid" |
url_rule |
分页URL规则 (用于伪静态) | 动态URL | url_rule="list-$catid-$page.html" |
示例:一个完整的列表页 PC 标签
{pc:content action="lists" catid="$catid" num="10" page="$page" order="id DESC"}
<ul>
{loop $data $r}
<li><a href="{$r['url']}">{$r['title']}</a></li>
{/loop}
</ul>
<!-- 这里显示分页,受 num="10" 影响 -->
<div id="pages">{$pages}</div>
{/pc}
进阶:如何修改分页样式
很多开发者觉得默认的分页样式不好看,想要修改(例如改成 Bootstrap 风格),主要有两种修改方式:
方法 A:修改 CSS (推荐)
PHPCMS 默认输出的分页包含特定的 class,你可以直接在 CSS 文件中覆盖样式。
- 当前页:
.pagecur - 其他页链接:
.pagea - 容器:
#pages
方法 B:修改底层 PHP 代码 (硬核)
如果你需要修改 HTML 结构(例如加上 <ul><li>),需要修改核心文件。
- 文件路径:
phpcms/libs/functions/global.func.php - 函数名称:
pages()
在这个函数中,你可以找到类似这样的代码并修改:
// 示例:将默认的 <a> 标签修改为带 class 的样式 $mult .= '<a class="paginate_button" href="'.$url.'">'.$i.'</a>';
进阶:伪静态分页 (url_rule)
如果你的网站开启了伪静态,直接使用 {$pages} 可能会生成动态链接(如 ?page=2),为了让分页链接也是伪静态的(如 list-1-2.html),你需要在 {pc} 标签中指定 url_rule。
代码示例:
{pc:content action="lists" catid="$catid" num="10" page="$page" url_rule="list-$catid-$page.html"}
...
{$pages}
{/pc}
注意:$page 在规则中代表页码占位符。
常见问题与技巧
获取总页数或总条数
$pages 只是一个 HTML 字符串,如果你需要知道具体的“总页数”或“总条数”来做逻辑判断(如果有下一页才显示“加载更多”按钮),你需要查看 $total 变量。
在 {pc} 标签内部,通常会有 $total(总条数)和 $pages(分页HTML)。
{pc:content ... }
{if $total > 10}
内容太多了,需要分页:{$pages}
{else}
内容很少,不分页。
{/if}
{/pc}
手动生成分页 (二次开发)
如果你在自定义的 PHP 文件中(控制器中),而不是模板中,你可以使用 pages() 函数手动生成分页:
// 语法:pages(总条数, 当前页码, 每页条数, URL规则, 是否生成静态文件) $pages = pages($total, $page, $pagesize, $urlrule); echo $pages;
- 模板里用:
{$pages}直接输出。 - 控制数量: 在
{pc}标签里加num="xx"。 - 控制链接: 在
{pc}标签里加url_rule="..."。 - 修改样式: 改 CSS 或改
global.func.php。
