tôi có một loạt các mã thuộc tính mà tôi cần phải nhận được các giá trị của:Có cách nào đơn giản hơn để nhận giá trị giao diện người dùng của thuộc tính không?
$attributes = array(
'Category' => 'type',
'Manufacturer' => 'brand',
'Title' => 'meta_title',
'Description' => 'description',
'Product Link' => 'url_path',
'Price' => 'price',
'Product-image link' => 'image',
'SKU' => 'sku',
'Stock' => 'qty',
'Condition' => 'condition',
'Shipping cost' => 'delivery_cost');
Sau khi lặp lại thông qua một bộ sưu tập sản phẩm tôi nhận được các giá trị frontend của các thuộc tính như sau:
$attributeId = Mage::getResourceModel('eav/entity_attribute')
->getIdByCode('catalog_product', $attribute_code);
$attribute = Mage::getModel('catalog/resource_eav_attribute')
->load($attributeId);
$value = $attribute->getFrontend()->getValue($product);
Simply sử dụng $product->getDate($attribute)
sẽ không hoạt động với danh sách thả xuống và nhiều lựa chọn, nó chỉ trả về id của chúng chứ không phải giá trị giao diện người dùng của chúng.
Trong khi mã ở trên hoạt động, có vẻ như đó là một chặng đường dài để nhận giá trị, nhưng quan trọng hơn là nó chạy khá chậm. Có cách nào nhanh hơn/hợp lý hơn để nhận giá trị giao diện người dùng cho thuộc tính sản phẩm không?
Sửa
bây giờ tôi có như sau (sau khi đối phó với trường hợp đặc biệt như image
và qty
) được dễ dàng hơn một chút trên mắt và dường như để chạy nhanh hơn (mặc dù tôi không biết tại sao):
$inputType = $product->getResource()
->getAttribute($attribute_code)
->getFrontend()
->getInputType();
switch ($inputType) {
case 'multiselect':
case 'select':
case 'dropdown':
$value = $product->getAttributeText($attribute_code);
if (is_array($value)) {
$value = implode(', ', $value);
}
break;
default:
$value = $product->getData($attribute_code);
break;
}
$attributesRow[] = $value;
Nếu bất cứ ai có thể cải thiện điều này (làm cho nó đơn giản/hiệu quả hơn), vui lòng đăng câu trả lời.
Hãy xem bài viết này http://blog.chapagain.com.np/magento-how-to-get-attribute-name-and- value/ –
Xin cảm ơn, bài viết hữu ích. – Jamie