Bir öznenin ön uç değerini almanın daha basit bir yolu var mı?
$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');
değerlerini almak için gereken öznitelik kodları dizilim var. Bir ürün koleksiyonunu yineledikten sonra özniteliklerin ön değerlerini alıyorum:
$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);
$product->getDate($attribute)
açılır ve çoklu seçim ile çalışmaz, yalnızca kendi değerlerini döndürür ve ön değerlerini döndürmez.
Yukarıdaki kod çalışırken, değeri elde etmenin uzun bir yolu gibi görünüyor, ancak daha önemlisi oldukça yavaş çalışıyor. Ürün özellikleri için önyüz değerleri almak için daha hızlı/daha duyarlı bir yol var mı?
Düzenleme
Şu anda (image
ve qty
gibi özel durumlarla uğraştıktan sonra) gözlerde biraz daha kolay olan ve daha hızlı çalıştığı görülüyor (nedenini bilmeme rağmen):
$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;
Bunu herhangi biri geliştirebilir (daha basit/daha verimli hale getirebilir), lütfen bir cevap gönderin.
bu makalede bir göz atın http://blog.chapagain.com.np/magento-how-to-get-attribute-name-and- value/ –
Teşekkürler, yararlı makale. – Jamie