Làm thế nào để có được danh sách tất cả các thuộc tính


23

Làm cách nào tôi có thể tìm nạp danh sách (mảng) của tất cả các thuộc tính sản phẩm được xác định? (về cơ bản tôi cần mã và nhãn).

chỉnh sửa :

Các thuộc tính tôi cần này để tự động tạo ACL cho tất cả các thuộc tính sản phẩm tồn tại trong cửa hàng. (làm việc trên một mô-đun cho Ẩn thuộc tính và các trường khác trong phần cuối chỉnh sửa sản phẩm )


Bỏ qua các tập thuộc tính?
đánh dấu

@benmark: Có.
Alex

Câu trả lời:


37

Nếu bạn cần một Truy vấn MySQL, hãy thử rằng:

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

Một thay thế cho mã Fabian, nếu bạn cần một tập lệnh PHP dựa trên Magento, hãy thử điều này:

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

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

Tốt đẹp. Mage_Catalog_Model_Resource_Product_Attribute_Collectionvề cơ bản những gì Fabian đã cố gắng để tạo ra. Cảm ơn!
Alex

bạn được chào đón :-)
Sylvain Rayé

Làm thế nào để tôi có được một danh sách các thuộc tính bằng cách sử dụng id nhóm? không phải bộ thuộc tính
Attila Naghi

5

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

nên làm.

Chúng tôi vừa tìm thấy một lỗi, bạn phải vượt qua entity_type_id:

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

LÀM

Mã này là tài liệu:

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

hy vọng giải pháp làm việc (được cập nhật bởi bình luận @Alex)

Bạn phải vượt qua Mage_Eav_Model_Entity_Typeđể điều này hoạt động và không bị mã hóa cứng:

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

Bộ sưu tập trả về số 0 ... Tôi nhớ có một số loại API hoặc lớp dịch vụ cho việc này, nhưng không thể tìm thấy ATM.
Alex

Tuyệt vời - nhưng 4 là mã hóa cứng (thậm chí không có khả năng thay đổi). Sửa lỗi cho upvote :-)
Alex

Và không, dòng đầu tiên không hoạt động. Mage_Catalog_Model_Sản phẩm :: ENTITY là một chuỗi, không phải là Mage_Eav_Model_Entity_Type
Alex

Tôi nghĩ rằng tôi đã nhận được ngay bây giờ: D
Fabian Blechschmidt

Nhưng sau đó tôi đến muộn. Tôi sẽ làm, khi tôi vượt qua đại diện 2k: p
Fabian Blechschmidt

2

Điều này là để có được tất cả các thuộc tính

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

Không muốn sử dụng SQL đơn giản ...
Alex
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.