2011-02-10 32 views
13

ürün özelliklerinin bir dizi olsun olsun Bunu anlayamıyorum!magento

Ürün özelliklerinin bir listesini, list.phtml sayfasındaki bir diziye almayı deniyorum. Ben herşeyi denedim. Ben

$attributes = $product->getAttributes(); 

kullanmak çözümlerin çok gördük ama bu sadece boş bir sayfası açılıyor, işe alınamıyor. Herhangi bir Yardım büyük mutluluk duyacağız Ben

Ben Magento sürümünü 1.4.2.0

GÜNCELLEME kullanıyorum ... şimdiye kadar bu konuda saatler geçirdim: İşte yapmaya çalışıyorum tam olarak ne:

$neededAttributes = Mage::helper('mymodule')->getNeededAttributes(); 
$attributes = $product->getAttributes(); 
foreach ($attributes as $attribute) { 
    if(in_array($attribute->getAttributeCode(), $neededAttributes)) { 
     $attributename = $attribute->getAttributeCode(); 
    echo $attributename; 
    } 
} 

bu tasarımda dosya gallery.phtml içindedir/adminhtml/default/default/katalog/ürün/yardımcı/nedense

, ben bir şey dönmek için getAttributeCode fonksiyonunu alınamıyor.

+0

Ürün koleksiyonunu ilk önce denediniz mi? – kjy112

+1

XDebug gibi bir hata ayıklayıcı ile adım adım hata ayıklama kullandınız mı? – greg0ire

+1

Söz konusu ürüne ait özelliklerin veya olası tüm özellik kodlarının bir listesini mi soruyorsunuz? –

cevap

23

Sanırım sadece görünür değerlerin bir listesine ihtiyacınız var. "Değerler" diyorum çünkü öznitelikler gerçek değerler değil, tanımlayıcılar. Mage_Mage_Catalog_Block_Product_View_Attributes itibaren belirgin parçalar yer almaktadır:

$attributes = $product->getAttributes(); 
foreach ($attributes as $attribute) { 
    if ($attribute->getIsVisibleOnFront()) { 
     $value = $attribute->getFrontend()->getValue($product); 
     // do something with $value here 
    } 
} 

Gerçekten/değiştirmek zaten attributes bloğu olarak ürün görünümü sayfasında ilan edilir şablonu catalog/product/view/attributes.phtml kullanabilirsiniz beri bu olsa çoğaltmak gerekmez.

+0

gibi ek nitelikleri nasıl alabilirim bu harika ve ön planda çalışıyor, ancak kullanmaya çalışıyorum bu dosya galerisi.p Tasarımda html/adminhtml/default/default/catalog/product/helper/- herhangi bir fikir mi? Ürün değişkeni – Chad

+0

ile aynı şekilde elde edemediğim gibi, orijinal yazımda yapmaya çalıştığım şeyi tam olarak yayınladım. Umarım yardım edebilirsin! – Chad

+0

Aslında bir ürünün değerlerine ihtiyacınız olmadığından, boş bir ürün oluşturursanız, Mage :: getModel ('catalog/product') 'ile çalışır mı? Bu farklı özellik kümelerine uymayabilir, bunu nasıl bulacağından emin değilim. – clockworkgeek

6

Oldukça kolay ve size uygun bir ürün dizisi verir nitelik adları

$product = Mage::getModel('catalog/product')->load('product_id'); 
$attributeNames = array_keys($product->getData()); 
print_r($attributeNames); 

bir özellik nesne koleksiyonu gerekiyorsa Bir ürün toplama ve bundan sonra gerekirse

$product->getAttributes(); 

çağırabilir Her bir üye üyesinde daha önce belirtilen yolları gerçekleştirebilirsiniz

+0

Ayrıca, "Ürün Listeleme'de Kullanılıyor"> Evet ayarlarında –

+0

Evet, bu diziyi alıyorum [0] => Dizi ( [entity_id] => 12 [entity_type_id] => 4 [attribute_set_id] => 4 [type_id] => basit [Stok] => 20707 [has_options] => 1 [required_options] => 1 [created_at] => 2016/01/06 21:15 : 31 [updated_at] => 2016-10-03 00:49:21 ) Ad, ürün resmi, açıklama vb –

14

Sorunuza göre, bunun yerine Mage::getResourceModel('catalog/product_attribute_collection') kullanarak edilmelidir:

$productAttrs = Mage::getResourceModel('catalog/product_attribute_collection'); 

foreach ($productAttrs as $productAttr) { /** @var Mage_Catalog_Model_Resource_Eav_Attribute $productAttr */ 
    var_dump($productAttr->getAttributeCode()); 
} 

Hep _data (getData()) depolama özelliklerini yoktur ve her zaman almak için bir ürün yüklemek gerekmez özellikleri.

+1

Seçmek için arkadaşça dizi ile Gist. https://gist.github.com/jruzafa/8776453a13717ff7b5a1 – jruzafa

+0

Cevabınız için teşekkür ederiz! –