【发布时间】:2015-01-04 04:23:32
【问题描述】:
是否可以在具体 5 中的 URL 中进行某种分页。我看到许多 CMS,例如 Wordpress 和 Drupal 等都具有这样的功能。
目前我的博客如下:
/blog?ccm_paging_p_b348=2
而我想要的方式是:
/blog/page/1 ... /blog/page/2 等(或类似的东西)
任何提示或建议将不胜感激
【问题讨论】:
标签: php wordpress pagination concrete5
是否可以在具体 5 中的 URL 中进行某种分页。我看到许多 CMS,例如 Wordpress 和 Drupal 等都具有这样的功能。
目前我的博客如下:
/blog?ccm_paging_p_b348=2
而我想要的方式是:
/blog/page/1 ... /blog/page/2 等(或类似的东西)
任何提示或建议将不胜感激
【问题讨论】:
标签: php wordpress pagination concrete5
您唯一的选择是为您的博客页面创建一个自定义页面类型,然后为处理分页的页面创建一个自定义控制器。
请看这个页面: http://www.concrete5.org/documentation/developers/pages/mvc-approach
尤其是“控制器”下的“页面类型”部分。它解释了如何创建页面类型控制器。对于他们,您可以创建与普通单页类似的功能,因此您可以根据从 URL 获得的参数对结果进行分页。
此示例适用于 5.6 及更早版本:
<?php
class BlogPageTypeController extends Controller {
public function view($page=1) {
$pageIndex = intval($page)-1;
if ($pageIndex < 0) {
$pageIndex = 0;
}
$pageList = new PageList();
$pageList->setItemsPerPage(25);
$this->set('pages', $pageList->getPage($pageIndex));
}
}
然后您将在视图中使用$pages 变量来浏览页面:
<?php foreach($pages as $page) : ?>
<h2><?php echo $page->getCollectionName()</h2>
<?php endforeach; ?>
【讨论】:
config/site.php 文件中,将 ccm_paging_p 查询字符串 arg 更改为其他内容(例如 page 或 p):define('PAGING_STRING', 'whatevs');