Configuration conditionnelle
Comment ajouter des contrôles javascript sur les éléments de la configuration de notre module, comme le font certains par exemple en fonction de la sélection d’un dropdown, où des champs apparaissent et disparaissent ?
En fait, c’est assez simple. Dans le fichier system.xml de votre module, il faut ajouter pour les éléments dont la présence est conditionnelle à la valeur d’un autre l’instruction suivante :
<depends><nom_de_votre_element>1</nom_de_votre_element></depends>
comme dans l’exemple suivant :
<sections> <modulename translate="label"> <label>Product Box</label> <tab>advisa</tab> <sort_order>12</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <groups> <general_settings translate="label"> <label>General settings</label> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <general_settings_enable translate="label"> <label>Enable</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_yesno</source_model> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </general_settings_enable> <general_settings_position_top translate="label"> <label>Position top (px) *</label> <comment>Position relative of top of window. Default: 100</comment> <frontend_type>text</frontend_type> <sort_order>20</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <depends><general_settings_enable>1</general_settings_enable></depends> <validate>required-entry</validate> </general_settings_position_top> </fields> </general_settings> </groups> </modulename> </sections>
Layout conditionnel
Dans une balise <action> des layouts, nous pouvons utiliser un test conditionnel nous permettant de vérifier la valeur d’un paramètre dans la configuration. Par exemple, le code suivant :
<action method="unsetChild" ifconfig="productbox/settings/settings_scrolling"><name>product.description</name></action>
permet de désactiver le bloc product.description du layout courant, à condition que le paramètre settings_scrolling soit « true ».
Mais comment faire si nous voulons tester son contraire ? C’est à dire supprimer le bloc à condition que le paramètre soit « false » ?
Pour cela, nous allons créer une nouvelle condition au layout : « ifnotconfig ». Et pour ce faire, il faut créer un nouveau module, surchargant le Model Layout.php du module « Core » :
app/code/core/Mage/Core/Model/Layout.php
et réécrire la méthode _generateAction() en ajoutant juste après
if (isset($node['ifconfig']) && ($configPath = (string)$node['ifconfig'])) {
if (!Mage::getStoreConfigFlag($configPath)) {
return $this;
}
}
le code suivant :
elseif(isset($node['ifnotconfig']) && ($configPath = (string)$node['ifnotconfig'])) {
if (Mage::getStoreConfigFlag($configPath)) {
return $this;
}
}
Il ne vous reste plus qu’à utiliser la nouvelle condition :
<action method="unsetChild" ifnotconfig="productbox/settings/settings_scrolling"><name>product.description</name></action>
And it’s done !
Magento 1.4.2.0 stable
Une bonne nouvelle ce matin (en fait, elle date de hier soir ~23h) : la sortie de la 1.4.2.0 en version stable ! Plus d’infos ici : http://www.magentocommerce.com/blog/comments/magento-ce-version-1420-stable-now-available/
Gestion des taux de taxes
La gestion des taxes est très complète sur Magento, même si la configuration parait, au premier abord, quelque peu compliquée
Pour vous faciliter un minimum les choses, j’ai préparé un fichier des taxes de la zone EURO + des DOM-TOM, que vous n’aurez plus qu’à importer : Ventes > TVA & autres taxes > Import / Export Taux de taxes
