0

いくつかの変更を行ったので、独自のページネーションを作成する必要があります。

prestashop が独自のものを持っていることを知っているので、どうすればそれらを使用できますか?

classes/controller/FrontController.php で使用しようとしていました

使用機能:

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

しかし、ページネーション自体がどこでどのように形成されているかをよく理解できません...私のPHP知識は低いと思うので、誰かがPrestashopのページネーションがどのように機能するかを理解してくれたら助けが必要です.

4

1 に答える 1

0

フロントコントローラーは、見たいページの商品と商品数をsmarty変数に割り当てます。BestSalesController のBestSales Page の例:

$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
));

フロントコントローラーでできる特別なことやカスタムなことは何もありません。

カスタムのページネーションを作成したい場合は、blocklayeredモジュールを見てください。

たとえば、関数のmodules/blocklayered/blocklayered.phpではajaxCall()、次の行を編集して、「ページごとの製品数」のカスタム選択を指定できます。

$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 行に達するので、頑張ってください!)。

于 2013-07-12T10:09:14.790 に答える