Cara Mendapatkan Daftar Semua Atribut

23

Bagaimana saya bisa mengambil daftar (array) semua atribut produk yang ditentukan? (pada dasarnya saya membutuhkan kode dan label).

edit :

Atribut yang saya butuhkan ini untuk secara dinamis menghasilkan ACL untuk semua atribut produk yang ada di toko. (mengerjakan modul untuk Sembunyikan Atribut dan Bidang Lainnya di Backend Edit Produk )

Alex
sumber
Mengabaikan set atribut?
patokan
@benmark: Ya.
Alex

Jawaban:

37

Jika Anda memerlukan MySQL Query, coba itu:

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')

Alternatif untuk kode Fabian, jika Anda memerlukan skrip PHP berdasarkan Magento, coba ini:

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

foreach ($attributes as $attribute){
    echo $attribute->getAttributecode();
    echo '<br>';
    echo $attribute->getFrontendLabel();
}
Sylvain Rayé
sumber
Bagus. Mage_Catalog_Model_Resource_Product_Attribute_Collectiontidak pada dasarnya apa yang Fabian coba buat. Terima kasih!
Alex
sama-sama :-)
Sylvain Rayé
bagaimana cara mendapatkan daftar atribut menggunakan id grup? bukan set atribut
Attila Naghi
5

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

harus dilakukan.

Kami baru saja menemukan bug, Anda harus meneruskan entitas_type_id:

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

APAKAH

Kode tersebut adalah dokumentasi:

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

semoga solusi bekerja (diperbarui oleh @Alex comment)

Anda harus lulus Mage_Eav_Model_Entity_Typejadi ini harus bekerja dan tidak hardcode:

$type = Mage::getModel('eav/entity_type')->loadByCode(Mage_Catalog_Model_Product::ENTITY)
Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter($type);
Fabian Blechschmidt
sumber
Koleksi mengembalikan hitungan 0 ... Saya ingat ada semacam API atau kelas layanan untuk ini, tetapi tidak dapat menemukannya ATM.
Alex
Hebat - tetapi 4 hardcode (bahkan tidak ada sooo cenderung berubah). Perbaiki untuk upvote :-)
Alex
Dan tidak, baris pertama tidak berfungsi. Mage_Catalog_Model_Product :: ENTITY adalah sebuah string, bukan Mage_Eav_Model_Entity_Type
Alex
Saya pikir saya mengerti sekarang: D
Fabian Blechschmidt
Tapi kemudian saya terlambat. Saya akan lakukan, ketika saya lulus perwakilan 2k: p
Fabian Blechschmidt
2

Ini untuk mendapatkan semua atribut

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
Umair
sumber
Tidak ingin menggunakan SQL biasa ...
Alex