1

カスタム製品ビューに[並べ替え]ドロップダウンを追加しようとしています。ポケットベルでは機能しましたが、ソーターでは常にエラーが発生します。

これは私が試していることです:

protected function _prepareLayout()
{
    parent::_prepareLayout();


    $pager = $this->getLayout()->createBlock('page/html_pager', 'custom.pager');

    $toolbar = $this->getLayout()->createBlock('catalog/product_list_toolbar', 'custom.toolbar');
    $toolbar->setCollection($this->getCollection());
    $toolbar->setAvailableOrders($orders);

    $pager->setCollection($this->getCollection());
    //  $pager->setAvailableLimit(array(10=>10));

    //$pager->setLimit(2);
    $pager->setDefaultOrder(array('popularity_by_sells'=>'popularity_by_sells'));

    $pager->setCollection($this->getCollection());
    $pager->setShowPerPage(false);
    $pager->setShowAmounts(false);
    $pager->setDefaultOrder('popularity_by_sells');
    $this->setChild('pager', $pager);
    $this->getCollection()->load();
    return $this;
}


public function getPagerHtml()
{
    return $this->getChildHtml('pager');
}

public function getToolbarHtml(){
    return $this->getChildHtml('toolbar');
}

ここで私は致命的なエラーを受け取ります:

[...] \ src \ app \ code \ local \ Mage \ Catalog \ Block \ Product \ List \Toolbar.phpの738行目の非オブジェクトでメンバー関数getId()を呼び出します。

4

1 に答える 1

0

getLimit()関数がカスタム関数であることがわかり、if句にis_object()を追加しただけです。

public function getLimit(){
    $currentCategory = Mage::registry('current_category');
    if ($currentCategory !== false && is_object($currentCategory))
    {[...]}
}
于 2012-09-21T10:24:30.030 に答える