2012-10-17 2 views
7

Sto utilizzando lo script di installazione del modulo per aggiungere nuovi gruppi di attributi, set di attributi e attributi. Sono in grado di creare set di attributi, gruppo di attributi e aggiungere prodotti a gruppo/set. Ma io sto avendo impostazione is_filterable, is_visible, is_visible_on_front e is_html_allowed_on_front parametri momento difficile.Aggiunta di attributi di prodotto personalizzati in Magento utilizzando lo script di installazione

$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'); 

vedo offer_type sempre aggiunto a Magento e per impostare l'attributo ($ sSetID) e al gruppo ($ groupname). Anche se quando guardo l'attributo dall'interfaccia utente di magento admin (Catalogo-> attributi-> Gestisci attributi), vedo is_filterable, is_visible, is_visible_on_front e is_html_allowed_on_front parametri impostati su No. Ho provato varie combinazioni ma senza fortuna. Sto usando Magento CE 1.7.0.2. Non sono sicuro di ciò che manca nel mio script di installazione. Ho indicato per questo http://blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/. Mi sto perdendo qualcosa? Grazie in anticipo.

risposta

7

Avete configurato correttamente il vostro programma di installazione nel file config.xml? La classe standard per i programmi di installazione di Magento è Mage_Eav_Model_Entity_Setup, ma quando si tratta di prodotti, è necessario utilizzare Mage_Catalog_Model_Resource_Setup. Perché? guardano il loro metodo _prepareValues() e capirete quali sono gli attributi autorizzati (prodotti hanno più opzioni rispetto alle eav_objects standard, si può vedere che quando si confrontano le tabelle eav_attribute e catalog_eav_attribute)

per puntare alla buona classe di installazione, prendere uno sguardo alla serie Mage_Catalogconfig.xml e adattarlo per il modulo:

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

ps: si noti che il metodo _prepareValues() viene chiamato solo quando si aggiunge un attributo ... se si desidera aggiornare un attributo è necessario usa il nome completo dell'opzione ("is_visible" e non solo "visible") ...

Un altro trucco sarebbe quello di aggiungere questi attributi dopo, ma non è molto bello:

// 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

Grazie! Problema risolto. – sukkad

+0

Qualche idea su come impostare is_visible_on_front? Sebbene io lo imposti su 1 nella chiamata addAttribute ('is_visible_on_front' => 1, non vedo che venga modificato in DB/admin. – sukkad

-2

Usa 'visible_on_front' => 1, in addAttribute chiamata.