我正在显示包含产品的列表页面。我应用自定义过滤器来过滤掉产品。
list.phtml
中的代码:
$postCodeQueryStr = $this->getRequest()->getParam('post_code');
$_productCollection = $this->getLoadedProductCollection()
->addAttributeToFilter(
array(
array('attribute'=>'town', 'like' => ''.$postCodeQueryStr.'%'),
array('attribute'=>'post_code', 'like' => ''.$postCodeQueryStr.'%')
)
)
->clear()->addAttributeToSort('created_at', 'DESC');
显示我使用的计数或产品:
echo $_productCollection->getSize()
这里最初通过$this->getLoadedProductCollection()
,我获得所有产品,然后我使用addAttributeToFilter()
过滤它。它实际上显示有限的产品。我的意思是它过滤掉以显示与标准相关的有限产品。
但是,不是显示过滤计数,而是显示产品的整数,按标准过滤后不会显示计数。
我在列表中获得了有限的产品,但是它们的数量是旧的(在过滤之前)。
答案 0 :(得分:0)
问题是您在模板级别上进行过滤,并且计数在此之前在工具栏中呈现。 所以你必须把你的过滤器放在
中function getLoadedProductCollection()
进一步使用函数
public function getProductCollection()
{
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);
return $collection;
}
位于 应用程序/代码/核心/法师/目录/型号/ Category.php
您可以在此处添加过滤器。
我建议您不要编辑此核心文件并将其切换到本地文件夹。
如果有任何疑问,请告诉我。
感谢希望它能完成你的工作。
答案 1 :(得分:0)
您可以根据需要修改下面的功能只需更换下面的功能,您就完成了。感谢
public function getProductCollection()
{
$postCodeQueryStr = $_POST['post_code'];
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);
if($postCodeQueryStr!=''){
$collection->addAttributeToFilter(
array(
array('attribute'=>'town', 'like' => ''.$postCodeQueryStr.'%'),
array('attribute'=>'post_code', 'like' => ''.$postCodeQueryStr.'%')
)
)
->clear()->addAttributeToSort('created_at', 'DESC');
}
return $collection;
}