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

在这里我得到了致命错误:

在第 738 行调用 [...]\src\app\code\local\Mage\Catalog\Block\Product\List\Toolbar.php 中非对象的成员函数 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 回答