Получить значение атрибута пользовательской категории
Я создал пользовательский атрибут категории, используя этот учебник http://gauss-development.com/blog/tutorials/adding-custom-category-attributes-magento /.
<?php
$installer = $this;
$installer->startSetup();
$attribute = array(
'type' => 'text',
'label' => 'Extra Title',
'input' => 'text',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => "",
'group' => "General Information"
);
$installer->addAttribute('catalog_category', 'cat_extra_title', $attribute);
$installer->endSetup();
?>
Я проверил, что атрибут обычно хранится в таблице eav_attribute, но я не могу получить его значение.
$category = Mage::registry('current_category');
if ($category){
$value = $category->getData('cat_extra_title'); //value is empty
}
Есть идеи?
3 answers
После тестирования многих возможных решений это было единственное, которое сработало для меня:
$cat_extra_title = Mage::getModel('catalog/category')->load($category->getId())->getData('cat_extra_title');
При добавлении нового атрибута для Категории или Продукта нам нужно поместить этот атрибут в Набор атрибутов и группу атрибутов. Таким образом, ваш код должен выглядеть следующим образом:
$installer->addAttribute('catalog_category', 'cat_extra_title', array(
'type' => 'text',
'label' => 'Extra Title',
'input' => 'text',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'required' => false,
'default' => '',
'user_defined' => true,
'default' => "",
));
$entityTypeId = $installer->getEntityTypeId('catalog_category');
$attributeSetId = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttributeToGroup(
$entityTypeId,
$attributeSetId,
$attributeGroupId,
'cat_extra_title'
);
Сегодня я столкнулся с той же проблемой. Я создал новый пользовательский атрибут категории (int/select), и я бы попробовал это в list.phtml и получил пустое значение:
$value = Mage::registry('current_category')->getData('my_custom_Attribute');
Однако это было решено путем переиндексации catalog_category_flat
; с n98:
n98-magerun.phar index:reindex catalog_category_flat
Теперь тот же код выдает значение , пока значение существует для категории (если значение пустое/НУЛЕВОЕ, то, конечно, оно все равно будет выдавать НУЛЕВОЕ значение).