在Magento中按列表隐藏产品的属性

时间:2014-03-18 07:22:51

标签: php magento

如果页面上有该属性的产品,是否只能在“排序依据”列表中显示属性?我的目录有许多不同的属性,但每种产品只能使用一两个。

即如果我有高度,重量,颜色的属性,我正在看一页T恤,我想不按高度或重量排序,因为这些是无关紧要的。在另一个页面上,我可能会列出框,因此高度和重量会变得相关,应该添加到按列表排序。

1 个答案:

答案 0 :(得分:1)

在管理属性中,设置" 在分层导航中使用" as 可过滤(带结果)而不是可过滤(无结果)到那些您不希望在属性值不存在时显示的属性关于产品

enter image description here

执行上述解决方案后。 在Toolbar.phtml中(或者如果您的扩展,则为什么),请执行以下操作,

 <?php
$orders=$this->getAvailableOrders();
$new_orders[]=array();
echo "<pre>";
print_r($orders);

$layer = Mage::getModel("catalog/layer");
$category=Mage::getModel('catalog/layer')->getCurrentCategory();
$category = Mage::getModel("catalog/category")->load($category->getId());
$layer->setCurrentCategory($category);
$attributes = $layer->getFilterableAttributes();


$attributesCodes[]=array();
foreach ($attributes as $attribute)
{

    $filterBlockName = 'catalog/layer_filter_attribute';
    $attributesCodes[]=$attribute->getAttributeCode();

    $result = Mage::app()->getLayout()->createBlock($filterBlockName)->setLayer($layer)->setAttributeModel($attribute)->init();

}
print_r($attributesCodes);

foreach($orders as $key_order=>$lbl_order){
    if(!in_array($key_order,$attributesCodes)) continue;
    $new_orders[]=$key_order;
}
print_r($new_orders);
?>