在Magento的主页中显示价格范围

时间:2013-07-26 10:58:18

标签: php magento

我正在尝试在主页的Magento网站的侧边栏中显示价格范围。但是,默认情况下,Magento已为价格范围设置了类别过滤器,因此如果没有类别ID,则价格范围将无效。有没有办法实现这个功能?

我想出了创建新页面以显示产品列表的想法。事情是我不知道如何在我的过滤器上设置价格范围。这是我想到的基本想法:

$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price_to', '4000')
    ->addAttributeToFilter('price_from', '1000');

然后显示符合条件的产品,但由于显而易见的原因,我不能使用price_to和price_from。有人可以指出我正确的方向吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

所以我做了很多研究,对我的案例没有理想的结果,所以我创建了一个类似于list.phtml的新的phtml文件,我用这样的过滤器调用产品集合:

//this is dirty but this is the fastest solution I came up with
$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 

if(false != strpos($url, 'to=500')):
$_below = 500;
elseif(false != strpos($url, 'to=1000')):
$_to = 1000;
$_from = 500;
elseif(false != strpos($url, 'to=2000')):
$_to = 2000;
$_from = 1001;
elseif(false != strpos($url, 'from=2001')):
$_above = 2000;
endif;

if(false != strpos($url, 'to=500')):
$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price', array(
        'lteq' => $_below));
elseif(false != strpos($url, 'from=2001')):
$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price', array(
        'gteq' => $_above));
else:
$_productCollection = Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('price', array(
        'from' => $_from,
        'to' => $_to)); 
endif;

我根据选择的范围链接设置$ _from和$ _to。然后,我在我专门为其添加的CMS页面中调用custom.phtml:

{{block type="catalog/product_list" template="catalog/layer/customrange.phtml"}}

然后,在侧边栏上,我添加了必要的范围(硬编码),如下所示:

<ul><li><a href="<?php echo $this->getUrl('custom-page').'?from=&to=500'; ?>">below 500</a></li></ul> 

所以我现在的价格范围没有类别过滤器。它并不完美我知道它需要继续工作,因为我的侧栏上的链接是硬编码的,我在分页和工具栏方面遇到了一些问题(说实话,它根本不起作用) )但这是我能想到的最快的解决方案,它的工作原理。如果有人有更好的解决方案,请随时告诉我,希望这有助于其他人。