2013-03-01 71 views
0

如何获取包含所有产品品牌的数组或对象,而无需通过完整的产品集合。我如何获得所有Magento产品品牌

这个想法是创建一个动态的品牌页面,链接到每个品牌。

因此,代码后记会是这样的:

<ul> 
<?foreach ($brands as $brand):?> 
<li> 
<a href="<?=$helper->getBrandUrl($brand)?>"><?=$helper->getBrandName($brand)?></a> 
</li> 
<?endforeach;?> 
</ul> 
+0

您是否使用单独的Magento扩展?我不知道Magento具有开箱即用的品牌功能。 – 2013-03-01 14:16:52

回答

1

在我的Magento的品牌属性编号66,我可以拥有所有的品牌与这个请求:

SELECT DISTINCT value 
FROM eav_attribute_option o, eav_attribute_option_value v 
WHERE attribute_id = '66' 
AND o.option_id = v.option_id 

但是如果你需要一个OOP方式使用它来代替:

$attribute = Mage::getModel('catalog/resource_eav_attribute')->load(66); 
$attributeOptions = $attribute->getSource()->getAllOptions(); ?> 
      <?php foreach ($attributeOptions as $option) { 
      if ($option['value']) echo $option['value']." > ".$option['label']."<br/>"; 
      } ?> 
+0

Works well,Ty 仅供参考,您可以在控制器中使用此功能进行测试: function indexAction(){ $ attribute = Mage :: getModel('catalog/resource_eav_attribute') - > load(66); $ attributeOptions = $ attribute-> getSource() - > getAllOptions(); foreach($ attributeOptions as $ option){ if($ option ['value'])echo $ option ['label']。“
”; } } – ajameswolf 2013-03-01 18:39:25

+0

不要在控制器中放置“echo”指令,如果你在控制器上下文中,你应该在块中创建一个函数来返回$ attributeOption,加载一个布局并添加块到控制器中,并调用模板中的函数来获取和执行选项数组。 – dagfr 2013-03-01 18:50:02