Magento

Logo MagentoRetrouvez des tutoriels et des astuces dans l’utilisation de Magento.
En tant que développeur certifié Magento 1 je partage avec vous plus de 60 articles traitant à la fois de Magento 1 et de Magento 2, sur des thématiques relativement larges :

  • Création d’attributs
  • Personnalisation pdf
  • Optimisations des performances
  • Quick notes

Bonnes pratiques : Mise en place d’un environnement de développement normalisé avec NetBeans

Avec leur multiples contributeurs, la maintenabilité des solutions open-source est relativement complexe.
C’est pourquoi celles-ci instaurent des normes de développement qui garantissent la qualité et l’apparence du code.
Ces normes peuvent avoir pour nom « PSR-1 », « PSR-2 » etc..

Je vais vous détailler comment mettre en place un environnement de développement qui vous permettra de suivre au mieux ces normes.
Selon les développeurs, l’éditeur peut varier, pour ma part j’utilise NetBeans au quotidien et j’en suis vraiment très satisfait.

Je vais donc vous détailler comment procéder pour tout configurer avec cet éditeur 🙂 sous Windows
( Certains points sont communs à l’ensemble des éditeurs // Cette méthode ne prétends pas être la meilleure mais détaille l’ensemble des étapes nécessaires à la mise en place)

Installation de Wampserver

Télécharger le fichier d’installation en 32 ou 64 bits en fonction de votre ordinateur depuis le site : http://www.wampserver.com/
Procéder à l’installation standard de Wampserver dans sa dernière version.
( Nous partirons du postulat que Wamp sera installé dans le dossier c:/wamp/ )

Une fois l’installation de wampserver effectuée, il faut se connecter à la console Windows ( Touches Windows + R / puis cmd )
Puis il faudra se rendre dans le dossier c:/wamp/bin/php/php.x.x.x

Bonnes pratiques : Mise en place d’un environnement de développement normalisé avec NetBeans Lire la suite »

Magento : Importer / Exporter les produits complémentaire ( upsell , crossell , related ) via les profils avancés

Suivant la même méthodologie que l’import export des commentaires clients, nous allons voir à présent comment importer/ exporter les produits complémentaires.

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 )

Cette méthode fonctionne pour les éléments suivants :

  • Produits apparentés
  • Ventes incitatives
  • Ventes croisées

 

Voici le xml pour l’export des produits complémentaires

<action type="mymodule_dataflow/convert_parser_LinkedProducts" method="unparse">
<!-- Filtrage par produit <var name="product_id" >157</var> -->
<!-- Filtrage par type export ( upsell|crossel|related) defaut : upsell ) <var name="type">upsell</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[exports-produits-complementaires.csv]]>

Magento : Importer / Exporter les produits complémentaire ( upsell , crossell , related ) via les profils avancés 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 »