Magento - возможно ли установить "Рамку для пагинации" из шаблона / макета? - PullRequest
2 голосов
/ 10 декабря 2011

Мне интересно, есть ли какой-нибудь способ установить "Рамку разбиения на страницы" из файла phpml шаблона или из файла макета xml? Так, например, чтобы изменить его с:

1 2 3 4 5>

до

1 2 3>

Я работаю над мобильной темой и хочу указать количество страниц, перечисленных в нумерации страниц. Я знаю, что это может быть установлено от администратора (Конфигурация -> Дизайн -> Разбиение на страницы -> Рамка разбиения на страницы), но я хочу оставить это как есть, для пользователей настольных компьютеров, но установить меньшее количество страниц для мобильных пользователей.

С помощью файла catalog.xml для мобильных тем я могу установить количество товаров на странице, используя следующие параметры:

<action method="addPagerLimit"><mode>grid</mode><limit>10</limit></action>

Существует ли аналогичная версия для установки количества страниц в нумерации страниц? Или еще есть какой-то способ установить его из шаблона мобильных тем toolbar.phtml до того, как пейджер будет захвачен? Что-то вроде:

$this->setFrameLength(3);
echo $this->getPagerHtml()

Если это возможно как-то из файла шаблона, можно ли также установить количество отображаемых продуктов?

ПРИМЕЧАНИЕ. Причина, по которой я хочу установить его из шаблона, заключается в том, что я могу использовать набор переменных из модуля администратора.

Ответы [ 2 ]

1 голос
/ 11 декабря 2011

Чтобы изменить длину кадра наблюдателем:

  1. заявить наблюдателю:

    <frontend>
        ...
        <events>
            <core_block_abstract_to_html_before>
                <observers>
                    <frame_length_according_to_useragent>
                        <type>singleton</type>
                        <class>yourmodulemodelalias/observer</class>
                        <method>setDifferentFrameLengthForMobileDevices</method>
                    </frame_length_according_to_useragent>
                </observers>
            </core_block_abstract_to_html_before>
        </events>
        ...
    </frontend>
    
  2. метод:

        public function setDifferentFrameLengthForMobileDevices($observer)
        {
            $event = $observer->getEvent();
            $block = $event->getBlock();
            if (get_class($block) == 'Mage_Page_Block_Html_Pager') {
                //here some check of the user agent
                $block->setFrameLength(2);
            }
        }
    

    Вы должны будете поместить $block->setFrameLength(2); в if (), где вы проверяете useragent. Также вам нужно изменить число «2» на Mage::getStoreConfig('design/pagination/pagination_frame_for_mobile_devices'), где pagination_frame_for_mobile_devices будет новым значением конфигурации, которое вы создали в system.xml вашего модуля.

НТН

0 голосов
/ 23 апреля 2016

На самом деле вы можете сделать это прямо со страницы шаблона / html / pager.phtml вашей мобильной темы, и это работает.

<?php $this->setFrameLength(2) ?>

Поместите это как раз перед

<?php foreach ($this->getFramePages() as $_page): ?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...