Magento - 可以从模板/布局设置“分页框架”吗?

时间:2011-12-09 21:35:11

标签: magento mobile

我想知道是否有办法在模板phtml文件或xml布局文件中设置“分页框架”?例如,要改变它:

1 2 3 4 5>

1 2 3>

我正在研究移动主题,我想设置分页中列出的页数。我知道这可以从管理员设置(配置 - >设计 - >分页 - >分页框架),但我希望保持原样,对于桌面用户,但为移动用户设置较少的页面

使用mobile themes catalog.xml文件,我可以使用以下命令设置每页的产品数量:

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

是否有类似的版本用于设置分页中的页数?或者是否有一些方法可以在抓取寻呼机之前从移动主题toolbar.phtml模板设置它?类似的东西:

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

如果可以从模板文件中以某种方式实现,是否也可以设置显示的产品数量?

注意:我想从模板中设置它的原因是我可以使用管理模块中的变量集。

2 个答案:

答案 0 :(得分:1)

通过观察者改变帧长度:

  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中创建的新配置值。

  3. HTH

答案 1 :(得分:0)

实际上你可以直接从你的手机主题的模板页面/ html / pager.phtml中做到这一点。它可以正常工作。

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

把它放在

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

我认为支持比事件更好。事件基础开发对于那样做的人来说很好。但是当项目传递给另一个开发人员甚至开发团队时,这是一个可怕的遗产。