2011-12-09 91 views
2

我想知道是否有任何方法从模板phtml文件或XML布局文件中设置“分页框架”?因此,例如,将其从更改:Magento - 是否可以从模板/布局设置“分页框架”?

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() 

如果这是可能以某种方式从模板文件,是不是还可以设置所显示以及产品的数量?

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

+1

我不认为你可以从视图文件中做到这一点,因为框架长度在块('Mage_Catalog_Block_Product_List_Toolbar - > getPagerHtml()')中设置,但你可以很容易地覆盖它在一个模块,甚至创建一个观察者设置您在配置中创建的新变量的值。如果这符合你的需要,让我知道,我会进一步解释。 – OSdave

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

HTH

+0

干杯这个,有趣的好吧,永远不会想到这样做。可能更容易重写,但这对了解绝对有用! –

0

其实你可以从模板页/移动主题的HTML/pager.phtml直接做到这一点,它的工作原理。

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

穿上它之前

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

我认为这是比事件支持更好的选择。事件库的发展对于那些做这件事的人来说是很好的。但是当项目传递给另一个开发人员甚至开发团队时,这是一个可怕的遗留问题。

相关问题