2014-04-08 12 views
5

Obecnie próbuję dodać nowy atrybut kategorii do ekranu administratora kategorii w Magento 1.8.1, ale mam problemy z uzyskaniem czegokolwiek do wyświetlenia.Dodawanie atrybutu kategorii w Magento 1.8.1

Jedynymi przykładami kodu, które mogę znaleźć, są mysql4, jednak myślałem, że został wycofany? Proszę, czy ktoś może wskazać nam właściwy kierunek.

Widzę moje rozszerzenie w Config> Zaawansowane iw tabeli core_resources. Ale nie z przodu strony.

+0

Czy możesz udostępnić nazwy plików i kod ze skryptu instalacyjnego? – Hum

+0

przy użyciu mysql4-install-0.0.1.php i config.xml –

Odpowiedz

16

Próbowaliśmy tego niedawno z 1.8.2.0. Naprawdę nie musisz tworzyć modułu, aby dodać atrybut kategorii, raz. Wydaje się, że takie marnotrawstwo przejść przez tak wiele plików cruft, aby coś zainstalować tylko raz.

Atrybuty kategorii pozostają na stałe po zainstalowaniu, więc najlepszym rozwiązaniem jest użycie jednorazowego skryptu. Zapisz to prawo na korzeniu magento.

<?php 

    require_once "app/Mage.php"; 

    Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 


    $installer = new Mage_Sales_Model_Mysql4_Setup; 

    // change details below: 
    $attribute = array(
     'type' => 'int', 
     'label'=> 'Your attribute label', 
     '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', 'your_attribute_code', $attribute); 

    $installer->endSetup(); 

Zapisz jako add_category_attribute.php lub coś innego niezapomniany dla Ciebie.

Można użyć przeglądarki, aby dostać się do tego pliku lub użyj php-cli uruchomić to:

php -f add_category_attribute.php 

powodzenia.

+0

Nice! To działa idealnie, dzięki! –

+0

Uwaga: jeśli jesteś zainteresowany tym, aby ten atrybut nowej kategorii akceptował tekst, a nie tylko liczby całkowite, pamiętaj, aby zmienić "typ" ==> "int" na "tekst"; jeśli potrzebujesz obszaru tekstowego, zmień "input" ==> "text" na "textarea"; proszę wziąć to pod uwagę wcześniej, w przeciwnym razie pojawi się liczba błędnych pól kategorii zaśmiecających sekcję kategorii – YWSW

+0

To działa ... szybkie pytanie ... gorąco, aby uzyskać wartość z przodu? Dzięki – h3nr1ke

3

Zmień nazwę pliku z mysql4-install-0.0.1.php do install-0.0.1.php

2

@ h3nr1ke można dostać atrybut z:

$category = Mage::registry('current_category'); 
if ($category){ 
    $value = $category->getData('YOUR_CUSTOM_ATTRIBUTE_CODE'); 
} 
0

uruchomić ten skrypt w folderze głównym Magento stworzyć atrybut

<?php 

require_once('app/Mage.php'); 
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

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

if (!$installer->getAttributeId($entityTypeId, 'shipping_content')) { 
    $installer->addAttribute('catalog_category', 'shipping_content', array(
     'type'    => 'text', 
'backend'   => '', 
'frontend'   => '', 
'label'    => 'Short description', 
'input'    => 'textarea', 
'class'    => '', 
'source'   => '', 
'global'   => '0', 
'visible'   => true, 
'required'   => false, 
'user_defined'  => true, 
'default'   => '', 
'searchable'  => false, 
'filterable'  => false, 
'comparable'  => false, 
'visible_on_front' => true, 
'used_in_product_listing' => false, 
'unique'   => false, 
'wysiwyg_enabled' => true, 
'apply_to'   => '', 
'is_configurable' => true 
    )); 


    $installer->updateAttribute($entityTypeId, 'shipping_content', 'is_wysiwyg_enabled', 1); 
    $installer->updateAttribute($entityTypeId, 'shipping_content', 'is_html_allowed_on_front', 1); 


} 


$installer->endSetup(); 

?> 

Dla Usuń Atrybut kategorii

<?php 

require_once('app/Mage.php'); 
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

$installer = new Mage_Sales_Model_Mysql4_Setup; 
$installer->startSetup(); 
$installer->removeAttribute('catalog_category', 'shipping_content'); 
$installer->endSetup(); 

?> 
Powiązane problemy