Tüm Özniteliklerin Listesi Nasıl Elde Edilir


23

Tanımlanan tüm ürün özelliklerinin bir listesini (dizisini) nasıl alabilirim? (temelde kod ve etikete ihtiyacım var).

düzenle :

Dükkanda bulunan tüm ürün özellikleri için dinamik olarak ACL oluşturmak için buna ihtiyacım olan özellikler. ( Ürün Düzenleme Arka Planı'ndaki Öznitelikleri ve Diğer Alanları Gizle için bir modül üzerinde çalışıyor )


Öznitelik kümeleri yok sayılıyor mu?
Benmark

@benmarks: Evet.
Alex,

Yanıtlar:


37

Bir MySQL Query'ye ihtiyacınız varsa, şunu deneyin:

select attribute_id, attribute_code, frontend_label from eav_attribute where entity_type_id IN (select entity_type_id from eav_entity_type where entity_type_code = 'catalog_product')

Fabian koduna bir alternatif, Magento'ya dayalı bir PHP betiğine ihtiyacınız varsa, şunu deneyin:

$attributes = Mage::getResourceModel('catalog/product_attribute_collection')
    ->getItems();

foreach ($attributes as $attribute){
    echo $attribute->getAttributecode();
    echo '<br>';
    echo $attribute->getFrontendLabel();
}

Güzel. Mage_Catalog_Model_Resource_Product_Attribute_Collectiontemelde Fabian'ın yapmaya çalıştığı şeyi yapar. Teşekkürler!
Alex,

rica ederim :-)
Sylvain Rayé 15

Grup kimliği kullanarak niteliklerin listesini nasıl alabilirim? özellik setleri değil
Attila Naghi 28:14

5

//Mage_Eav_Model_Mysql4_Entity_Attribute_Collection
Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter(Mage_Catalog_Model_Product::ENTITY);

yapmak gerekir.

Az önce bir hata bulduk, entity_type_id öğesini geçmelisiniz:

$col = Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter(4);

YAPAR

Kod belgeler:

if ($type instanceof Mage_Eav_Model_Entity_Type) {
        $additionalTable = $type->getAdditionalAttributeTable();
        $id = $type->getId();
    } else {
        $additionalTable = $this->getResource()->getAdditionalAttributeTable($type);
        $id = $type;
    }

umarım çalışma çözümü (@Alex comment tarafından güncellendi)

Bunu geçmelisin Mage_Eav_Model_Entity_Typeki bu işe yarayacak ve kodlanmış olmamalıdır:

$type = Mage::getModel('eav/entity_type')->loadByCode(Mage_Catalog_Model_Product::ENTITY)
Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter($type);

Koleksiyon 0 değerini döndürüyor ... Bunun için bir çeşit API veya servis sınıfı olduğunu hatırlıyorum, ancak ATM'yi bulamıyorum.
Alex,

Harika - ancak 4 kodlu (bile değişecek sooo bile). Olumlu bir oy için düzeltin :-)
Alex

Ve hayır, ilk satır çalışmıyor. Mage_Catalog_Model_Product :: ENTITY bir dizedir, bir Mage_Eav_Model_Entity_Type
Alex,

Sanırım şimdi anladım: D
Fabian Blechschmidt

Ama sonra geç kaldım. 2k temsilcisi geçtiğimde yapacağım: p
Fabian Blechschmidt

2

Bu, tüm özellikleri almaktır.

SELECT
    eav_attribute_option_value.option_id,
    eav_attribute_option_value.`value`,
    eav_attribute_option.attribute_id
                FROM
                        eav_attribute_option_value
                INNER JOIN eav_attribute_option ON eav_attribute_option_value.option_id = eav_attribute_option.option_id
                WHERE
                        eav_attribute_option.attribute_id = 135
                OR eav_attribute_option.attribute_id = 142 
                -- 135 = BRANDS
                -- 142 = TYPES
                GROUP BY
                        eav_attribute_option_value.option_id
                ORDER BY
                eav_attribute_option_value.`value` ASC

Düz SQL kullanmak istemiyorum ...
Alex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.