magento

Magento : conditionner l’insertion d’une ressource dans un layout xml

Un petit rappel pratique si comme moi vous souhaitez ajouter un fichier css ou js d’un de vos modules sur une page magento via les layout xml, mais que celui-ci doit être conditionné à un paramètre de votre module ( actif ou non )

Voici comment procéder.
Par exemple pour ajouter un fichier css et un fichier js dans la page onepage_index, uniquement si le parametre mymodule/display/onepage/ est actif
Dans le fichier de layout de votre module dans « app/design/frontend/default/theme/layout/yourmodulelayout.xml »
Il faut rajouter la condition ifconfig= »mymodule/display/onepage/ »

<checkout_onepage_index>
<reference name="head">
<action method="addCss" ifconfig="mymodule/display/onepage/">
<stylesheet>namespace/module/css/ui-lightness/jquery-ui-1.8.14.custom.css</stylesheet>
</action>
<action method="addItem" ifconfig="mymodule/display/onepage/">
<type>skin_js</type>
<name>namespace/module/js/jquery-ui-1.8.14.custom.min.js</name>
</action>
</reference>
</checkout_onepage_index>

Magento : conditionner l’insertion d’une ressource dans un layout xml Lire la suite »

Magento 1.4.1.1 : Corriger grid des emails transactionnels

Par défaut dans la version 1.4.1.1 de Magento, la grid d’affichage des emails transactionnels ne fonctionne pas.
Les paramètres ne sont pas mémorisés ce qui est relativement gênant lorsqu’on doit chercher des emails à modifier.

Voici donc comment corriger cela rapidement.

En consultant le fichier de la grid app/code/core/Mage/AdminHtlml/Block/System/Email/Template/Grid.php,

j’ai constaté qu’il manquait la fonction  __construct() de la classe dans laquelle l’identifiant de la grid est déterminé, ainsi que la sauvegarde des paramètres de sessions.

Pour faire cela proprement il faut donc copier ce fichier à l’emplacement suivant  : app/code/local/Mage/AdminHtlml/Block/System/Email/Template/Grid.php.

Et rajouter en première fonction du fichier le code suivant :

//Rajout de la fonction construct pour conserver les paramètres des emails lors d'une recherche
public function __construct() {
parent::__construct();
$this->setId('EmailGrid');
$this->setSaveParametersInSession(true);
}

La grid des emails sera bien fonctionnelle après ce changement.…

Magento 1.4.1.1 : Corriger grid des emails transactionnels Lire la suite »

Magento : Traductions multilingues dans un même fichier

Voici un code qui vous permettra de traduire un template dans l’ensemble des langues du site dans une seule fonction.
C’est pratique notamment pour l’envoi de contenus emails traduits.

Dans le snippet ci-dessous la langue du template sera basé sur le store_id de la commande

foreach ( $orders as $order ) {
 
//Pour bien gérer la traduction on change le store en fonction de la commande
Mage::app()->setCurrentStore($order->getStoreId());  //Changement de store
$locale  = Mage::getModel('core/locale')->getLocaleCode(); // Récupération de la locale du store
Mage::app()->getTranslator()->setLocale($locale); // Définition de la locale pour la traduction
Mage::app()->getTranslator()->init('frontend', true);   //Réinitialisation du cache  de traduction
 
//Création du block qui sera traduit dans la  langue du store et stockage de son contenu dans une variable
$layout = Mage::getSingleton('core/layout');
$contenu =  $layout->createBlock('core/block')
->setTemplate('order.phtml'

Magento : Traductions multilingues dans un même fichier Lire la suite »

Magento : Importer / Exporter les commentaires et les notes des produits via les profils avancés

Voici comment importer / exporter facilement les avis clients et leur notes associées sur la plateforme magento.
Nous partons du postulat que nous créons un nouveau module « Module_Dataflow »
( les étapes de création du module ne seront pas détaillées )

Pour réaliser nos actions nous allons utiliser les profils avancés d’import disponibles en standard sur la plateforme Magento.
Note : Cette version ne gère pas pour l’instant la mise à jour des commentaires existants

Voici le xml d’action pour l’export des commentaires

<action type="mymodule_dataflow/convert_parser_CustomerReviews" method="unparse">
<!--<var name="product_id"><![CDATA[21]]></var>-->
</action>
 
<action type="dataflow/convert_mapper_column" method="map">
</action>
 
<action type="dataflow/convert_parser_csv" method="unparse">
<var name="delimiter"><![CDATA[;]]></var>
<var name="enclose"><![CDATA["]]></var>
<var name="fieldnames">true</var>
</action>
 
<action type="dataflow/convert_adapter_io" method="save">
<var name="type">file</var>
<var name="path">var/export</var>
<var name="filename"><![CDATA[myCsvExportFile.csv]]>

Magento : Importer / Exporter les commentaires et les notes des produits via les profils avancés Lire la suite »

Magento 1.4.1.1 : Correction de la recherche des promotions par identifiant

Voici un correctif pour un bug de la version 1.4.1.1 de Magento ( Oui je sais c’est une vieille version mais il existe des sites qui l’utilisent encore … )
Lorsque vous souhaitez rechercher une règle de promotion par identifiant, vous obtenez une belle erreur fatale.
Donc le message d’erreur est le suivant :

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'rule_id' in where clause is ambiguous

Pour corriger cette erreur nous allons copier le fichier app/code/core/Mage/Adminhtml/Promo/Quote/Grid.php dans le dossier app/code/local/Mage/Adminhtml/Promo/Quote/Grid.php

Puis dans la fonction _prepareColumns éditer les paramètres du champ rule id

 $this->addColumn('rule_id', array(
            'header'    => Mage::helper('salesrule')->__('ID'),
            'align'     =>'right',
            'width'     => '50px',
            'index'     => 'rule_id',
            'filter_index' => 'main_table.rule_id', // Ajout d'un filtre index pour corriger la recherche
        ));

Magento 1.4.1.1 : Correction de la recherche des promotions par identifiant Lire la suite »

Installer Magento2 sur un serveur ubuntu 12.04 « The Precise Pangolin »

En voulant tester la nouvelle version de magento 2, j’ai eut la désagréable surprise de voir qu’elle ne fonctionnait pas sur mon serveur de développement qui tourne sous Ubuntu Server 12.04 « The precise Pangolin ».

En effet magento2 nécessite au minimum la version 5.4 de php, alors que la dernière version qui tourne sur les serveurs Ubuntu 12.04 est la 5.3

Voici comment mettre à jour votre version de php sur votre serveur ( la dernière version à date est la 5.5.9 )

/!\ Attention cette modification entraine des modification qui seront difficilement réversibles.

Connectez vous en SSH et saisissez les commandes suivantes :

#Maj des packets du serveur
sudo apt-get update
 
#Installation de python si celui-ci n'est pas encore installé  
sudo apt-get install python-software-properties
 
#Ajout d'un nouveau repository de sources
sudo add-apt-repository ppa:ondrej/php5
 
#Maj du serveur
sudo apt-get update 
sudo apt-get dist-upgrade

Votre serveur est à présent à jour avec la dernière version de php et magento2 peut être installé 🙂

Note : Attention la version d’apache sera également mise à jour vers la version 2.4 qui entraine quelques modifications dans les fichiers configuration.…

Installer Magento2 sur un serveur ubuntu 12.04 « The Precise Pangolin » Lire la suite »

Magento : Livraison offerte avec Kiala Locate And Shipping

Voici comment rendre l’excellent module « Kiala Locate And Shipping » compatible avec les promotions « Livraison offerte »

( Attention fonctionne uniquement si l’utilisation des grilles tarifaires est désactivée )

Editer le fichier :
app/code/community/Kiala/LocateAndSelect/Model/Carrier/Kiala.php

La modification est à apporter dans la fonction « CollectRates »

/**
     * Collect rates via the original table rates and adapt to Kiala
     *
     * @param Mage_Shipping_Model_Rate_Request $data
     * @return Mage_Shipping_Model_Rate_Result
     */
    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
 
        if (!$this->kialaHelper()->isActive('frontend')) {
            return false;
        }
 
        if ($this->kialaHelper()->useTablerates()) {
            $result = parent::collectRates($request);
            if (!$result) {
                return false;
            }
            $method = current($result->getRatesByCarrier('tablerate'));
            if (!$method) {
                Mage::Log("Tablerate not initialised. To add shipping costs, configure magento's standard Tabelrate  shipping method without activating it."

Magento : Livraison offerte avec Kiala Locate And Shipping Lire la suite »

Magento : Promotion X achetés Y gratuits

La mise en place  d’une règle de promotion Magento de type « x achetés y gratuits » est plutôt fastidieuse et pas forcément claire.
( Note : Sur la version 1.4.1.1 de Magento, il y a un problème lorsqu’on souhaite créer une règle de type 1 acheté 1 offert , nous verrons plus loin comment corriger ce comportement. )

Voici un exemple sur comment configurer une règle de ce type  sur l’exemple suivant :
Pour l’achat de 2 téléphone Nokia 2610 , un 3ème téléphone Nokia 2610 sera offert 🙂  ( Pour 4  => 2 , ect… )

Pour commencer il faut se rendre dans « Promotions / Règles de prix Panier » puis cliquer sur « Ajouter une nouvelle règle »
Voici ensuite ce que nous allons saisir dans l’onglet « Informations règle »

Magento SalesRule Informations

  1. La règle s’applique à l’ensemble des sites web
  2. La règle s’applique à l’ensemble des groupes clients
  3. Le code pour utiliser le coupon est « TEL »
  4. Pas de limites d’utilisation du coupon
  5. Pas de limites d’utilisation par client

Dans l’onglet « Conditions » nous ne mettons rien car il n’y a pas de restrictions.…

Magento : Promotion X achetés Y gratuits Lire la suite »

Magento : Empêcher l’indexation d’une catégorie ou d’un produit

Il peut arriver que vous ne souhaitiez pas que certaines catégories ou produits ne soient indexés par google sur votre boutique Magento

Pour réaliser cela ajoutez le code suivant dans l’onglet « Habillage » et dans le champ « Layout custom update » de la catégorie ou du produit qui ne doit pas être indexé.

<reference name="head">
<action method="setRobots"><value>NOINDEX,NOFOLLOW</value></action>
</reference>

Magento : Empêcher l’indexation d’une catégorie ou d’un produit Lire la suite »

Magento : Quantité de produits non éditable dans les avoirs

Avec certains modes de paiement, il n’est pas possible d’éditer la quantité de produits à rembourser pour une commande.

Voici la modification à faire pour permettre cela.

Tout d’abord, il faut regarder quel est le module de paiement utilisé pour la commande.
Recherchez ensuite le fichier modèle du module de paiement ( app/code/community|local/YourPaymentModule/Model/YourPayementModule.php )

Puis dans la classe de votre module  ajoutez la propriété suivante :

protected $_canCapturePartial        = true;

( Testé et fonctionnel sous Magento 1.4.1.1 avec le module Qpay Ideal)

Note :

Dans mes recherches sur le web pour trouver la source du problème j’ai également consulté  la solution suivante :

protected $_canRefundInvoicePartial = true;

( Elle n’a pas fonctionné dans mon cas… )…

Magento : Quantité de produits non éditable dans les avoirs Lire la suite »