Magento: список всех значений одного атрибута
Я пытаюсь перечислить все существующие значения вновь созданного атрибута в magento 1.7.0.2. (и сделайте их кликабельными ссылками, чтобы при щелчке они перечисляли все элементы с определенным значением атрибута, но это сейчас не является приоритетом)
Код атрибута "художник"
Итак, я создал файл Artist.php в app/code/core/Mage/Catalogue /Block/ со следующим кодом:
public function getAllArtists()
{
$product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'artist');
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$artists = $attribute->getSource()->getAllOptions(false);
return $artists;
}
и файл artist.phtml в / app / design / frontend / default / имя-шаблона / template / catalog / product с этим кодом:
<ul id="artist_list">
<?php foreach ($this->getAllArtists() as $artist): ?>
<li><a href="<?php Mage::getURL() ?>catalogsearch/advanced/result/?&artist;[]=<?php echo $artist['value'] ?>&search;="><?php echo $artist['label'] ?></a></li>
<?php endforeach; ?>
</ul>
который я тогда вызываю в статическом блоке с
{{block type="core/template" template="catalog/product/artist.phtml"}}
но ничего не появляется...
я использовал код из этой темы: http://www.magentocommerce.com/boards/viewthread/19982/P0/
атрибут установлен "Видимый на странице представления продукта на внешнем интерфейсе", и я вызываю значение атрибута каждого элемента в../template/product/view.phtml с
<?php echo $_product->getData('artist') ?>
и он правильно отображает значение.
есть идеи?
2 ответа
$name='whatever_your_attribute_name';
$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter($name)->getFirstItem();
$attributeId = $attributeInfo->getAttributeId();
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attributeOptions = $attribute ->getSource()->getAllOptions(false);
print_r($attributeOptions);
Это будет просто
$attribute = Mage::getModel('eav/config')->getAttribute(4,'artist');
if($attribute->usesSource()) {
$options = $attribute->getSource()->getAllOptions(false);
foreach($options as $key=>$value) {
if(count($value)==2) {
$artists[] = $value['label'];
}
}
}