0

商品リスト ツールバーをコンテンツ ブロックから左ブロックに移動する際に問題が発生しています。

並べ替えオプションのみを表示したいと思います。これは、カスタム ツールバー テンプレート ファイル toolbar_custom.html を設定することで簡単に実行できます。しかし、出力でエラーが発生します。

これまでのところ、次の行を追加しましたlayout/catalog.xml

<catalog_category_default translate="label">
    <label>Catalog Category (Non-Anchor)</label>
    <reference name="left">
        <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml">
        <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar_custom.phtml"/>
        <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
    </block>
    </reference>
    <reference name="content">
        <block type="catalog/category_view" name="category.products" template="catalog/category/view.phtml">
            <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml"/>
        </block>
    </reference>
</catalog_category_default>

そしてこれでnavigation/left.phtml

<?php $magento_block = Mage::getSingleton('core/layout'); ?>
<?php $toolbarHtml = $magento_block->createBlock('catalog/product_list'); ?>
<?php $toolbarHtml->setTemplate('catalog/product/list/toolbar_custom.phtml'); ?>
<?php echo $toolbarHtml ->toHTML(); ?>

これは私のカスタム ツールバー テンプレートです - toolbar_custom.phtml:

<?php if($this->getCollection()->getSize()): ?>
    <div class="toolbar">
    <?php if( $this->isExpanded() ): ?>
        <div class="sort-by">
            <label><?php echo $this->__('Sort By') ?></label>
            <select onchange="setLocation(this.value)">
                <?php var_dump($this->getName()); ?>
                <?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
                    <option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?> selected="selected"<?php endif; ?>>
                        <?php echo $this->__($_order) ?>
                    </option>
                <?php endforeach; ?>
            </select>
       </div>
    <?php endif; ?>
    </div>
<?php endif ?>

ブラウザで製品リスト ページを開くと、次のエラー メッセージが表示されます。

致命的なエラー: 37 行目の magento/app/design/frontend/my_theme/default/template/catalog/product/list/toolbar_custom.phtml の非オブジェクトに対するメンバー関数 getSize() の呼び出し

Magento Community 1.6 を使用しています。

4

4 に答える 4

1

layout/catalog.xml ファイルの下で、Default セクションで変更を行います。

<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
                        <block type="page/html_pager" name="product_list_toolbar_pager"/>
 </block>

この参照部分内に上記のコードを含めます

<reference name="left">
  <block type="catalog/navigation" name="catalog.categorymenu" before="cart_sidebar"  template="catalog/navigation/left_catalog.phtml"/> 
</reference> 

ブロック内で独自の toolbar.phtml ファイルを使用できます

于 2012-07-11T02:18:17.273 に答える
-1

次のようにブロックの名前を変更するだけです。

<block type="catalog/product_list_toolbar" name="product_list_toolbar_custom" template="catalog/product/list/toolbar_custom.phtml"/>
<action method="setToolbarBlockName"><name>product_list_toolbar_custom</name></action>
于 2014-10-20T22:43:26.350 に答える