Magento:属性组作为产品选项卡

时间:2015-10-09 10:12:55

标签: magento magento-1.9

我想在产品页面中将不同的属性组显示为标签。例如,我对不同类型的产品有不同的属性集,但我希望根据产品类型,将属性组列为不同的选项卡。

是否有开箱即用的解决方案,或者我需要自己做?

我的算法是:

  • 检查产品
  • 中的attributeSet ID
  • 收集特定attributeSet的属性组
  • 检查attributeGroup是否列在我要显示的组数组中
  • 将attributeGroupName写为tabName
  • 从attributeGroup收集attributeNames
  • 使用attributeName填充tabBody - > attributeValue对

任何提示和帮助欢迎! 感谢

1 个答案:

答案 0 :(得分:0)


//Set this to whatever you need to.
$allowedGroupIds = array(1,2,3,4);
//Get all groups
$groups = Mage::getModel('eav/entity_attribute_group')
    ->getResourceCollection()
    ->setAttributeSetFilter($_product->getAttributeSetId())
    ->setSortOrder()
    ->load();
foreach ($groups as $group) {
    //Skip the groups you don't need.
    if (!in_array($group->getId(), $allowedGroups)) {
        continue;
    }
    echo '<h3>'.$group->getId().' - '.$group->getAttributeGroupName().'</h3>';

    //Get attributes from the group
    $attributes = Mage::getResourceModel('catalog/product_attribute_collection')
                    ->setAttributeGroupFilter($group->getId())
                    ->addVisibleFilter()
                    ->checkConfigurableProducts()
                    ->load();
    if ($attributes->getSize() > 0) {
        echo '<ul>';
        foreach ($attributes->getItems() as $attribute) {
            $attrCode = $attribute->getAttributeCode();
            $attrValue = $_product->getData($attrCode);
            echo '<li>';
                if (!is_array($attrValue)) {
                    echo $attrCode.' = '.$attrValue;
                } else {
                    //Do something if the attribute value is array.
                }
            echo '</li>';
        }
        echo '</ul>';
    }
}