2015-10-09 5 views
1

Я хочу показать разные группы атрибутов в качестве вкладки на странице продукта. Например, у меня разные наборы атрибутов для разных типов продуктов, но я хочу, в зависимости от типа продукта, группы атрибутов списка, как разные вкладки.Magento: группа атрибутов как вкладка продукта

Есть ли какие-либо решения из коробки, или мне нужно сделать это самостоятельно?

Мой алгоритм:

  • Проверить AttributeSet ID из продукта
  • Отобрать attributeGroups специфической AttributeSet
  • Проверьте, если attributeGroup указана в массиве групп, которые я хочу показать
  • Написать attributeGroupName как TABNAME
  • Собрать атрибутИзменения из атрибутаГруппа
  • Заполните tabBody с attr ibuteName -> attributeValue pairs

Любые советы и помощь приветствуются! С благодарностью

ответ

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>'; 
    } 
} 
+0

HVALA! Спасибо Zoki, я думаю, что получаю почти такое же решение. –

+0

Без проблем Исидор :) – zokibtmkd

Смежные вопросы