21 déc 2010, 09:43
par Jérémie Bouchet
Commenter

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>
14 déc 2010, 14:58
par Jérémie Bouchet
Commenter

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 !

9 déc 2010, 09:38
par Jérémie Bouchet
Commenter

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/

2 déc 2010, 12:30
par Jérémie Bouchet
Commenter

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

tax_rates.csv