它是如何在prestashop中进行分页的?

时间:2013-06-09 16:50:24

标签: pagination prestashop

我做了一些修改,现在需要建立自己的分页。

所以我知道prestashop有他自己的,所以我怎么能用它们?

我试图在classes / controller / FrontController.php中使用

使用功能:

public function pagination($nbProducts = 10)
        {....

但是不能很好地理解在哪里以及如何形成一个分页本身...我认为我的PHP知识很低所以如果有人了解Prestashop的分页是如何工作的话我需要一些帮助。

1 个答案:

答案 0 :(得分:0)

Front Controller为您要查看的页面分配智能变量中的产品和产品数量。 这里是 BestSalesController

中BestSales页面的示例
$nbProducts = (int)ProductSale::getNbSales();
$bestSales = ProductSale::getBestSales($this->context->language->id, $this->p - 1, $this->n, $this->orderBy, $this->orderWay);
....
// then assign it to smarty
$this->context->smarty->assign(array(
     'nbProducts' => $nbProducts,
     'products' => $bestSales
));

您无法在Front Controller中执行任何特殊或自定义操作。

如果您想制作自定义分页,请查看 blocklayered 模块。

例如,在ajaxCall()函数的 modules / blocklayered / blocklayered.php 中,您可以通过编辑以下行来指定“按页面划分的产品数量”的自定义选项:

$nArray = (int)Configuration::get('PS_PRODUCTS_PER_PAGE') != 10 ? array((int)Configuration::get('PS_PRODUCTS_PER_PAGE'), 10, 20, 50) : array(10, 20, 50);

此行显示10,20,50和 Back-Office / Preferences / Products 中指定的每页默认产品数量,但您可以根据需要进行更改,例如:

$nArray = array(10, 20, 30, 40, 50, 60);

如果你想进行自定义,你必须在这个模块中进行自定义,但这并不简单(文件达到4200行,祝你好运!)。