Reputation: 4421
I have added a custom category attribute to my Magento installation with the following code:
<?php
// initialize magento environment for 'default' store
require_once 'app/Mage.php';
Mage::app('default');
echo "initialising";
echo runAdd();
echo "finishing";
function runAdd()
{
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
// below code will add text attribute
$setup->addAttribute('catalog_category', 'test_field', array(
'group' => 'General',
'input' => 'text',
'type' => 'varchar',
'label' => 'a new text field',
'backend' => '',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));
}
I am having great difficulty actually retrieving the value I have set in the back end. I have tried every variation of:
$_category = Mage::getModel('catalog/category')->load(1000);
$data = $_category->getData();
$atts= $_category->getAttributes();
var_dump($data );
var_dump($atts);
etc but am stuck.
Does anyone know how I'd retrieve this data?
Upvotes: 4
Views: 10423
Reputation: 41
you can write folloing line may be help you
$_category = Mage::getModel('catalog/category')->load(1000)->getData('test_field');
Upvotes: 4
Reputation: 14450
You shouldn't update DB in standalone scripts but you must use upgrade scripts ...
If you had, you wouldn't had to instantiate manually the installer and wouldn't have instantiate a bad one : you have to use Mage_Catalog_Model_Resource_Setup
(or Mage_Catalog_Model_Resource_Eav_Mysql4_Setup
depending on your magento version) because Mage_Catalog uses a custom Setup class configured in the config.xml :
<resources>
<catalog_setup>
<setup>
<module>Mage_Catalog</module>
<class>Mage_Catalog_Model_Resource_Setup</class>
</setup>
</catalog_setup>
</resources>
I suggest you to adapt this in your module config.xml and use a install/upgrade script to modify your DB properly.
Upvotes: 4