Пагинация в блоке виджетов Magento - PullRequest
2 голосов
/ 26 января 2020

Привет, есть ли способ сделать нумерацию страниц в блоке виджетов. Например, есть категория с идентификатором 355. Я хочу отобразить продукт этой категории на странице. Поэтому я использую виджет (следующий код)

{{widget type="Magento\CatalogWidget\Block\Product\ProductsList" show_pager="0" products_count="160" template="Magento_CatalogWidget::product/widget/content/grid.phtml" conditions_encoded="^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,`aggregator`:`all`,`value`:`1`,`new_child`:``^],`1--1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Product`,`attribute`:`category_ids`,`operator`:`==`,`value`:`355`^]^]"}}

. Но в этой категории до 155 товаров, которые они отображают на странице. Но для продукта 155 время загрузки страницы слишком велико. Так что, если для этого будет нумерация страниц, то продукты легко загружать.

1 Ответ

1 голос
/ 27 января 2020

Фактически Да , пейджер реализован для Magento \ CatalogWidget \ Block \ Product \ ProductsList, вам просто нужно активировать его, используя show_pager = "1" и определить, сколько продуктов для отображения на странице products_per_page = "6" (если вы игнорируете этот параметр, тогда значение по умолчанию равно 5)

ОБНОВЛЕНИЕ: Я думаю, вам нужно добавить параметр page_var_name = "np" где 'np' - это имя параметра нумерации страниц (вы можете назвать его по своему усмотрению), как показано ниже, и это должно решить проблему с нумерацией страниц:

Ваш код должен звучать быть таким:

{{widget type="Magento\CatalogWidget\Block\Product\ProductsList" show_pager="1" products_per_page="6" products_count="160" page_var_name="np" template="Magento_CatalogWidget::product/widget/content/grid.phtml" conditions_encoded="^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,`aggregator`:`all`,`value`:`1`,`new_child`:``^],`1--1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Product`,`attribute`:`category_ids`,`operator`:`==`,`value`:`355`^]^]"}}

@ см .: vendor / magento / module-catalog-widget / Block / Product / ProductsList. php

class ProductsList extends \Magento\Catalog\Block\Product\AbstractProduct implements BlockInterface, IdentityInterface
{
    /**
     * Default value for products count that will be shown
     */
    const DEFAULT_PRODUCTS_COUNT = 10;

    /**
     * Name of request parameter for page number value
     *
     * @deprecated
     */
    const PAGE_VAR_NAME = 'np';

    /**
     * Default value for products per page
     */
    const DEFAULT_PRODUCTS_PER_PAGE = 5;

    /**
     * Default value whether show pager or not
     */
    const DEFAULT_SHOW_PAGER = false;
...


   /**
     * Retrieve how many products should be displayed
     *
     * @return int
     */
    public function getProductsPerPage()
    {
        if (!$this->hasData('products_per_page')) {
            $this->setData('products_per_page', self::DEFAULT_PRODUCTS_PER_PAGE);
        }
        return $this->getData('products_per_page');
    }

    /**
     * Return flag whether pager need to be shown or not
     *
     * @return bool
     */
    public function showPager()
    {
        if (!$this->hasData('show_pager')) {
            $this->setData('show_pager', self::DEFAULT_SHOW_PAGER);
        }
        return (bool)$this->getData('show_pager');
    }

    /**
     * Retrieve how many products should be displayed on page
     *
     * @return int
     */
    protected function getPageSize()
    {
        return $this->showPager() ? $this->getProductsPerPage() : $this->getProductsCount();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...