Magento:自定义集合中缺少分页
我在显示自定义产品集合时遇到分页问题。由于我是马根托的新手,请容忍我的理解中的任何幼稚 目标:我想在产品视图页面上显示来自同一类别的其他产品,并利用我正在使用的无限滚动扩展。因此,用户将在产品页面加载上显示(比如)5个产品,但当用户向下滚动时,将加载并显示下一页的5个产品。这个扩展在我的分类列表页面上运行良好 问题:我可以通过下面的代码在产品页面上显示产品,无限滚动看起来也处于活动状态,但分页不起作用。集合中的所有产品都是一次性加载的,因此当用户向下滚动时,第2页上的无限滚动显示第一页产品的重复列表 如果有人能帮我解决这个问题,我将不胜感激 以下是我写的: /app/code/local/Mage/Catalog/Block/Product/OtherProducts.phpMagento:自定义集合中缺少分页,magento,magento-1.7,Magento,Magento 1.7,我在显示自定义产品集合时遇到分页问题。由于我是马根托的新手,请容忍我的理解中的任何幼稚 目标:我想在产品视图页面上显示来自同一类别的其他产品,并利用我正在使用的无限滚动扩展。因此,用户将在产品页面加载上显示(比如)5个产品,但当用户向下滚动时,将加载并显示下一页的5个产品。这个扩展在我的分类列表页面上运行良好 问题:我可以通过下面的代码在产品页面上显示产品,无限滚动看起来也处于活动状态,但分页不起作用。集合中的所有产品都是一次性加载的,因此当用户向下滚动时,第2页上的无限滚动显示第一页产品的重复
<?php
class Mage_Catalog_Block_Product_OtherProducts extends Mage_Catalog_Block_Product_List
{
protected function _getProductCollection()
{
$aCategoryId = $this->getProduct()->getCategoryIds();
if (!$aCategoryId) {
echo "This product is not assigned to any categories.";
}
$iCategoryId = $aCategoryId[0];
$oCategory = Mage::getModel('catalog/category')->load($iCategoryId);
$oProductCollection = $oCategory
->getProductCollection()
->addCategoryFilter($oCategory)
->addAttributeToSelect('*')
->addFieldToFilter('entity_id', array('neq' => $this->getProduct()->getId()));
return $oProductCollection;
}
}
?>
/app/design/frontend/default//layout/catalog.xml,就在产品视图页面的xml之后
<reference name="content">
<block type="catalog/product_OtherProducts" name="product_OtherProducts" template="catalog/product/otherslist.phtml">
<action method="setColumnCount"><columns>5</columns></action>
<action method="setProductsCount"><count>5</count></action>
<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" />
<action method="setDefaultGridPerPage"><limit>10</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>12</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>24</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>36</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>48</limit></action>
<action method="addPagerLimit" translate="label"><mode>grid</mode><limit>all</limit><label>All</label></action>
</block>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>6</count></action>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
- |
装饰列表('products-list','none recursive')
decorateGeneric($$('ul.products grid'),['奇数','偶数','first','last']))
请任何人帮我解决这个问题,我将不胜感激。您应该将集合分配给
$\u productCollection
,因为pager类从该对象获取集合,请尝试以下代码
<?php
class Mage_Catalog_Block_Product_OtherProducts extends Mage_Catalog_Block_Product_List
{
protected $_productCollection;
protected function _getProductCollection()
{
$aCategoryId = $this->getProduct()->getCategoryIds();
if (!$aCategoryId) {
echo "This product is not assigned to any categories.";
}
$iCategoryId = $aCategoryId[0];
$oCategory = Mage::getModel('catalog/category')->load($iCategoryId);
$oProductCollection = $oCategory
->getProductCollection()
->addCategoryFilter($oCategory)
->addAttributeToSelect('*')
->addFieldToFilter('entity_id', array('neq' => $this->getProduct()->getId()));
$this->_productCollection = $oProductCollection;
return $this->_productCollection;
}
}
?>
您好,谢谢您的回答!我试过了,但这并不能解决问题。分页仍然不起作用,所有产品都在第一页加载。你还有其他嫌疑犯吗?顺便说一句,如前所述,我在产品视图页面上这样做,这就是它不起作用的原因吗?你有我在分页中遇到的问题的解决方案吗。
<?php
class Mage_Catalog_Block_Product_OtherProducts extends Mage_Catalog_Block_Product_List
{
protected $_productCollection;
protected function _getProductCollection()
{
$aCategoryId = $this->getProduct()->getCategoryIds();
if (!$aCategoryId) {
echo "This product is not assigned to any categories.";
}
$iCategoryId = $aCategoryId[0];
$oCategory = Mage::getModel('catalog/category')->load($iCategoryId);
$oProductCollection = $oCategory
->getProductCollection()
->addCategoryFilter($oCategory)
->addAttributeToSelect('*')
->addFieldToFilter('entity_id', array('neq' => $this->getProduct()->getId()));
$this->_productCollection = $oProductCollection;
return $this->_productCollection;
}
}
?>