Magento2: Attribute eines Produkts aus einer bestimmten Attributgruppe

15. Dezember 2016

Um im Magento in einer phtml Datei alle Attribute eines Produkts, die zu einer bestimmten Gruppe (namens “customattributes”) gehören, habe ich mir einen Helper geschrieben, der folgendes macht:

  1. class Product extends \Magento\Framework\App\Helper\AbstractHelper
  2. {
  3. const CUSTOMATTRIBUTE_GROUP_NAME = 'customattributes';
  4. public $groupCollectionFactory;
  5. public function __construct(
  6. \Magento\Eav\Model\ResourceModel\Entity\Attribute\Group\CollectionFactory $groupCollectionFactory
  7. ){
  8. $this->groupCollectionFactory = $groupCollectionFactory;
  9. }
  10. public function getAttributesForProduct($_product){
  11. $groupCollection = $this->groupCollectionFactory->create();
  12. $groupCollection->addFieldToFilter('attribute_group_name',self::CUSTOMATTRIBUTE_GROUP_NAME);
  13. $groupCollection->addFieldToFilter('attribute_set_id', $_product->getAttributeSetId());
  14. $group = $groupCollection->getFirstItem();
  15. $data = array();
  16. $c = 0;
  17. $productAttributes= $_product->getAttributes();
  18. foreach ($productAttributes as $attribute) {
  19. if ($attribute->isInGroup($_product->getAttributeSetId(), $group->getAttributeGroupId())) {
  20. if ($attribute->getFrontend()->getValue($_product)) {
  21. $data[$c]['attribute'] = $attribute->getFrontendLabel();
  22. $data[$c]['value'] = $attribute->getFrontend()->getValue($_product);
  23. $c++;
  24. }
  25. }
  26. }
  27. return $data;
  28. }
  29. }

Das liefert ein schönes Array mit allen Attributen und ihren Werten für das aktuelle Produkt zurück.