Получение значения настраиваемого атрибута категории


Я создал новую вкладку на странице редактирования категории, которая предоставляет доступ к пользовательскому атрибуту категории с ключом mymodule_myattribute. Я сделал это с помощью сценария установки:

$installer->addAttribute(
    'catalog_category',
    'mymodule_myattribute',
    array(
        'label' => 'My Attribute',
        'group' => 'My Attribute Tab',   //will be created if necessary
        'type'  => 'int',
        'class' => 'validate-number',
        'required' => false,
        'input_renderer' => 'mymodule/adminhtml_catalog_category_widget_mycoolwidget',
    )
);

Атрибут появляется на новой вкладке, и настройка сохраняется при нажатии Save Category. Все это хорошо... однако...Я пытаюсь получить доступ к этому пользовательскому значению атрибута для каждой категории в отдельном скрипте:

require_once('app/Mage.php');
Mage::app('default'); 

$categories = Mage::getModel('catalog/category')->getCollection()
    ->addAttributeToSelect('*');

foreach ($categories as $category) {

    $cat = Mage::getModel("catalog/category")->load($category->getId());
    var_dump($cat->getData('mymodule_myattribute')); // NULL
    var_dump($cat->getMymoduleMyattribute()); // NULL

    var_dump($cat->getName()); // My Cool Category Name

}

Приведенные выше требования к пользовательским атрибутам возвращают нулевое значение даже хотя я знаю, что он сохраняется (потому что Magento сохраняет его для меня).

Есть ли что-то ослепительно очевидное, чего мне здесь не хватает?

 2
Author: beingalex, 2014-02-18

1 answers

Я программно обновил свои индексы (спасибо Мариусу):

require_once('app/Mage.php');
Mage::app('default'); 

$categories = Mage::getModel('catalog/category')->getCollection()
    ->addAttributeToSelect('*');

foreach ($categories as $category) {

    $process = Mage::getModel('index/process')->load(5); $process->reindexAll();      
    $process = Mage::getModel('index/process')->load(6); $process->reindexAll(); 

    $cat = Mage::getModel("catalog/category")->load($category->getId());
    var_dump($cat->getData('mymodule_myattribute')); // Gives result
    var_dump($cat->getMymoduleMyattribute()); // Gives result

    var_dump($cat->getName()); // My Cool Category Name

}
 3
Author: beingalex, 2014-02-18 14:18:41