2012-10-17 12 views
7

Używam skryptu konfiguracji modułu, aby dodać nową grupę atrybutów, zestaw atrybutów i atrybuty. Jestem w stanie stworzyć zestaw atrybutów, grupę atrybutów i dodać produkty do grupy/zestawu. Ale mam twardy czas wiązania is_filterable, is_visible, is_visible_on_front i is_html_allowed_on_front parametrów.Dodawanie niestandardowych atrybutów produktu w Magento przy użyciu skryptu konfiguracyjnego

$installer->addAttribute('catalog_product', 'offer_type', array(
     'backend'  => '', 
     'frontend'  => '', 
     'class' => '', 
     'default'  => '', 
     'label' => 'Offer type', 
     'input' => 'text', 
     'type' => 'int', 
     'source'  => '', 
     'global'  => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 
     'visible'  => 1, 
     'required'  => 1, 
     'searchable' => 0, 
     'filterable' => 1, 
     'unique'  => 0, 
     'comparable' => 0, 
     'visible_on_front' => 1, 
     'is_html_allowed_on_front' => 1, 
     'user_defined' => 1, 
)); 

$installer->addAttributeToSet('catalog_product', $sSetId, $groupName, 'offer_type'); 

widzę offer_type coraz dodany do Magento i przypisywać set ($ sSetID) i do grupy ($ groupname). Chociaż kiedy patrzę na atrybut z interfejsu użytkownika admin Magento (Katalog-> atrybuty-> Zarządzaj atrybutami), widzę parametry is_filterable, is_visible, is_visible_on_front i is_html_allowed_on_front ustawione na Nie. Próbowałem różnych kombinacji, ale bez powodzenia. Używam Magento CE 1.7.0.2. Nie jestem pewien, czego brakuje w moim skrypcie instalacyjnym. Odpowiadam za to http://blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/. Czy brakuje mi czegoś? Z góry dzięki.

Odpowiedz

7

Czy poprawnie skonfigurowałeś swój instalator w pliku config.xml? Standardową klasą dla instalatorów programu magento jest Mage_Eav_Model_Entity_Setup, ale w przypadku produktów należy użyć wartości Mage_Catalog_Model_Resource_Setup. Dlaczego? spojrzeć na ich metody _prepareValues() i zrozumiesz jakie są autoryzowane atrybuty (produkty mają więcej możliwości niż standardowe eav_objects, można zobaczyć, że przy porównywaniu tabele eav_attribute i catalog_eav_attribute)

aby wskazywał dobrej klasy instalatora, podejmują spojrzenie na standardowym Mage_Catalogconfig.xml i dostosowania go do modułu:

<resources> 
    <catalog_setup> 
     <setup> 
      <module>Mage_Catalog</module> 
      <class>Mage_Catalog_Model_Resource_Setup</class><!-- that line !--> 
     </setup> 
    </catalog_setup> 
</resources> 

pS: Należy pamiętać, że metoda _prepareValues() nazywa tylko podczas dodawania atrybutu ... jeśli chcesz zaktualizować atrybut będziesz musiał użyj pełnej nazwy opcji ("is_visible", a nie tylko "visible") ...

Kolejny Hack byłoby dodać te atrybuty potem, ale to nie jest bardzo piękne:

// adding atribute : 
// [...] 

//getting the new attribute with full informations 
$eavConfig = Mage::getSingleton('eav/config'); 
$installer->cleanCache(); 
$attribute = $eavConfig->getAttribute('catalog_product', $attributeCode); 
$attribute->addData(array(
    'is_visible' => 1 
)); 
$attribute->save() 
+2

Dzięki! Problem rozwiązany. – sukkad

+0

Każdy pomysł jak ustawić is_visible_on_front? Mimo że ustawiam go na 1 w wywołaniu addAttribute ("is_visible_on_front" => 1, nie widzę, żeby się zmieniał w DB/admin. – sukkad

-2

użytkowania 'visible_on_front' => 1 w addAttribute wezwanie.

Powiązane problemy