Как получить имя набора атрибутов?
Я пытаюсь получить имя набора атрибутов в шаблоне просмотра продукта Magento. Я могу получить значение атрибута $_product->getAttributeText('attribute')
, но как получить имя набора атрибутов?
Я хотел бы отображать атрибут, только если он принадлежит определенному набору атрибутов.
Ответы
Ответ 1
Всякий раз, когда у вас есть объект продукта, вы можете получить доступ к его атрибуту, установленному следующим образом:
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
Это даст вам имя набора атрибутов, которое вы можете сравнить с помощью strcmp:
if(0 == strcmp($attributeSetName, 'My Attribute Set')) {
print $product->getAttributeText('attribute');
}
Надеюсь, что это поможет!
Ответ 2
Для большей сексуальности вы можете сократить его до:
$attributeSetName = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId())->getAttributeSetName();
Ответ 3
Попробуйте использовать следующий код:
$entityTypeId = Mage::getModel('eav/entity')
->setType('catalog_product')
->getTypeId();
$attributeSetName = 'Default';
$attributeSetId = Mage::getModel('eav/entity_attribute_set')
->getCollection()
->setEntityTypeFilter($entityTypeId)
->addFieldToFilter('attribute_set_name', $attributeSetName)
->getFirstItem()
->getAttributeSetId();
echo $attributeSetId;
Найдите дополнительную информацию об атрибуте в в следующей статье.
Спасибо
Ответ 4
Для ответа Джо требуется несколько изменений, чтобы он работал.
Во-первых, это должен быть $_product, а не $product, а во-вторых, в последней строке есть ошибочная ')'.
Следующий код должен быть правильным:
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($_product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
Ответ 5
Сравнение с текстовым значением может иметь проблемы, если пользователи решают позже изменить этот текст - что легко сделать в Magento для наборов атрибутов. Еще один вариант - использовать базовый идентификатор, который никогда не изменится.
Вы можете получить это, посмотрев значение столбца attribute_set_id в базе данных, используя
select * from eav_attribute_set;
Этот номер также находится в ссылке редактирования в админе, которая выделена жирным шрифтом ниже
http://.../index.php/admin/catalog_product_set/edit/id/ 10/key/6fe89fe2221cf2f80b82ac2ae457909ce04c92c51716b3e474ecad672a2ae2f3/
Затем ваш код будет просто использовать это свойство продукта. Основание на идентификаторе 10 в ссылке выше этого будет
if (10 == $_product->getAttributeSetId()) {
//Do work
}