Adicione um atributo de categoria extra na guia informações gerais

10

Estou tentando adicionar um atributo extra de categoria à guia de informações gerais. Tentei adicionar isso usando o código a seguir,

require_once("app/Mage.php");
Mage::app('default');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId     = $installer->getEntityTypeId('catalog_category');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);


$installer->addAttribute('catalog_category', 'nav_left',  array(
    'type'     => 'tinyint',
    'label'    => 'Show in left navgigation',
    'input'    => 'boolean',
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0
));

$installer->addAttributeToGroup(
    $entityTypeId,
    $attributeSetId,
    $attributeGroupId,
    'nav_left',
    '11'

//last Magento's attribute position in General tab is 10
);

$attributeId = $installer->getAttributeId($entityTypeId, 'nav_left');

$installer->run("
INSERT INTO `{$installer->getTable('catalog_category_entity_int')}`
(`entity_type_id`, `attribute_id`, `entity_id`, `value`)
    SELECT '{$entityTypeId}', '{$attributeId}', `entity_id`, '1'
        FROM `{$installer->getTable('catalog_category_entity')}`;
");

Isso está funcionando bem, mas está adicionando uma guia de informações adicionais chamada Generalà direita general infomation tab. Tentei adicioná-la à primeira guia usando o attributeGroupIdconjunto de 4, mas após o teste, ele está travando o site.

Alguma idéia de como posso adicionar esse atributo à primeira guia.

Ravisoni
fonte

Respostas:

7

Tente assim:

$installer->addAttribute('catalog_category', 'nav_left', array(
    'group'         => 'General Information',
    'type'     => 'int',
    'label'    => 'Show in left navgigation',
    'input'    => 'boolean',
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0
)); 

EDIT
$installer deve ser uma instância de Mage_Catalog_Model_Resource_Setup.

Fora do tópico um pouco: eu recomendo adicionar esse script em um arquivo de atualização de um dos seus módulos em vez de criar uma instância Mage::app()e executá-la 'on the fly'. Se você colocá-lo em um script de atualização, ele é portátil para outras instâncias.

Marius
fonte
Obrigado pela sua resposta, mas depois de executar isso, estou recebendo erro do servidor no site.
Ravisoni
que erro você está tendo? Eu editei a resposta. Talvez esse seja o problema.
Marius
os arquivos de log não são nada do que o arquivo de relatório está dizendo. "Tabela ou exibição base não encontrada: 1146 A tabela 'wwwinsta_Joyevincent.catalog_category_entity_tinyint' não existe"
ravisoni
Okzz isso funcionou adicionando data attr na guia de informações gerais, mas estou tentando adicionar um tipo sim / não atrai alguma idéia para isso?
Ravisoni #
2
Acho melhor você fazer um post com todas as perguntas que você tiver sobre isso. Não faz sentido discutir isso sobre a pergunta de outra pessoa, porque é um assunto um pouco estranho.
Marius
5

Eu consegui funcionar da maneira esperada como esta.

$installer->addAttribute('catalog_category', 'left_nav',  array(
    'group'    => 'General Information',
    'type'     => 'int',
    'label'    => 'Show in left navigation',
    'input'    => 'select',
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0,
    'source' => 'eav/entity_attribute_source_boolean'
));

obrigado

Ravisoni
fonte
0

É possível customizar o atributo sim / não para a seção de categoria usando o código a seguir.

$this->addAttribute(Mage_Catalog_Model_Category::ENTITY, 'featured_product', array(
'group'         => 'General Information',
'input'         => 'select',
'type'          => 'text',
'label'         => 'Featured Product',
'backend'       => '',
'visible'       => true,
'required'      => false,
'visible_on_front' => true,
'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'source' => 'eav/entity_attribute_source_boolean',

));

Consulte o meu tutorial para obter explicações passo a passo e estrutura de arquivos. http://www.pearlbells.co.uk/add-custom-attribute-dropdown-category-section-magento/

Liz Eipe C
fonte