2011-12-09 8 views
2

テンプレートのphtmlファイルまたはxmlレイアウトファイルのいずれかから「ページネーションフレーム」を設定する方法があるのでしょうか?だから、からそれを変更するには、例えば:Magento - テンプレート/レイアウトから「ページ枠」を設定できますか?

1 2 3>

1 2 3 4 5>

私は、モバイルテーマに取り組んでいる、と私は設定したいですページ番号にリストされているページ数。これは管理者(設定 - >デザイン - >ページネーション - >ページネーションフレーム)から設定することができますが、デスクトップユーザーの場合はそのままにしますが、モバイルユーザーの場合はページ数を減らしたいと思います。

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

改ページにページ数を設定するための同様のバージョンがある:携帯テーマのcatalog.xmlファイルを使用して

、私は次の使用して、ページあたりの製品数を設定することができますか?それとも、携帯端末のtoolbar.phtmlテンプレートから、ページャをつかむ前にそれを設定する方法がありますか?ような何か:それはテンプレートファイルから何とか可能である場合

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

、同様に示された製品の数を設定することも可能ですか?

注:テンプレートから設定する理由は、管理モジュールから変数セットを使用できるためです。観察者によってフレーム長を変更するには

+1

フレームの長さがブロック( 'Mage_Catalog_Block_Product_List_Toolbar - > getPagerHtml()')で設定されているので、ビューファイルからはできませんが、モジュールで簡単に上書きできます。 observerを使用して、設定で作成した新しい変数から値を設定します。それがあなたの必要に合っていれば私に知らせてください、そして私はさらに説明します。 – OSdave

+0

私はすでにナビゲーションをオーバーライドしているので、ポケベルブロックをオーバーライドすることに害はないと思って、そこで私の管理変数を取得することができます。もっと簡単なルートがある場合に備えてチェックしていました!興味のない場合、この例ではオブザーバーをどのように使用しますか? –

答えて

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> 
  • 方法:

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

    あなたはANに$block->setFrameLength(2);を配置する必要があります

    1. がオブザーバーを宣言ユーザーエージェントをチェックするif()。また、数字「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): ?> 
    

    前にそれを入れてください。イベントベースの開発は、それを行う人にとってうれしいです。しかし、プロジェクトが別の開発者や開発チームに渡ったときには、ひどい伝説です。

    関連する問題