0
我在CMS頁面中使用XML佈局顯示Bestseller產品列表以顯示該塊。與分頁一起,我需要顯示其他產品列表中的工具欄(分頁和排序)。因此我爲此創建了一個自定義模塊。有了這個,我可以顯示產品列表和工具欄。但排序(或任何功能)似乎沒有工作。請幫助我。我的代碼如下。Magento自定義產品收集分頁不起作用
class MyCompany_Bestseller_Block_Bestseller extends Mage_Catalog_Block_Product_Abstract //Mage_Core_Block_Template
{
public function __construct()
{
parent::__construct();
$collection = $this->getBestsellerProduct();
$this->setCollection($collection);
}
protected function _prepareLayout()
{
parent::_prepareLayout();
$toolbar = $this->getToolbarBlock();
// called prepare sortable parameters
$collection = $this->getCollection();
// use sortable parameters
if ($orders = $this->getAvailableOrders()) {
$toolbar->setAvailableOrders($orders);
}
if ($sort = $this->getSortBy()) {
$toolbar->setDefaultOrder($sort);
}
if ($dir = $this->getDefaultDirection()) {
$toolbar->setDefaultDirection($dir);
}
if ($modes = $this->getModes()) {
$toolbar->setModes($modes);
}
// set collection to toolbar and apply sort
$toolbar->setCollection($collection);
$this->setChild('toolbar', $toolbar);
$this->getCollection()->load();
return $this;
}
public function getToolbarBlock()
{
$block = $this->getLayout()->createBlock('bestseller/toolbar', microtime());
return $block;
}
public function getMode()
{
return $this->getChild('toolbar')->getCurrentMode();
}
public function getToolbarHtml()
{
return $this->getChildHtml('toolbar');
}
function getBestsellerProduct()
{
// store ID
$storeId = Mage::app()->getStore()->getId();
// get most ordered products
$products = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addOrderedQty()
->setStoreId($storeId)
->addStoreFilter($storeId)
->setOrder('ordered_qty', 'desc');
Mage::getSingleton('catalog/product_status')
->addVisibleFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')
->addVisibleInCatalogFilterToCollection($products);
return $products;
}
}
爲我的模塊Toolbar.php塊代碼如下:
class MyCompany_Bestseller_Block_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar
{
public function getPagerHtml()
{
$pagerBlock = $this->getLayout()->createBlock('page/html_pager');
if ($pagerBlock instanceof Varien_Object) {
/* @var $pagerBlock Mage_Page_Block_Html_Pager */
$pagerBlock->setAvailableLimit($this->getAvailableLimit());
$pagerBlock->setUseContainer(false)
->setShowPerPage(false)
->setShowAmounts(false)
->setLimitVarName($this->getLimitVarName())
->setPageVarName($this->getPageVarName())
->setLimit($this->getLimit())
->setCollection($this->getCollection());
return $pagerBlock->toHtml();
}
return '';
}
}
這裏是我已經使用的XML塊。
<reference name="content">
<block type="bestseller/bestseller" name="bestseller_list" template="bestseller/bestseller.phtml">
<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"/>
<!-- The following code shows how to set your own pager increments -->
<!--
<action method="setDefaultListPerPage"><limit>4</limit></action>
<action method="setDefaultGridPerPage"><limit>9</limit></action>
<action method="addPagerLimit"><mode>list</mode><limit>2</limit></action>
<action method="addPagerLimit"><mode>list</mode><limit>4</limit></action>
<action method="addPagerLimit"><mode>list</mode><limit>6</limit></action>
<action method="addPagerLimit"><mode>list</mode><limit>8</limit></action>
<action method="addPagerLimit" translate="label"><mode>list</mode><limit>all</limit><label>All</label></action>
-->
</block>
<action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
<action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
我無法弄清楚代碼的問題。請幫助我。
也顯示XML代碼塊? – 2013-04-10 11:58:43
我現在也添加了該塊的xml代碼。 – Rujen 2013-04-11 04:56:04