Magento

MagentoCommerce est une plateforme de commerce électronique lancée le 31 mars 2008. Elle a été créée par l'éditeur américain Varien sur les bases du Framework Zend. Vous cherchez une agence spécialisée pour réaliser votre site Magento ?

Il existe un certain nombre de méthodes pour ajouter une ou plusieurs colonnes dans une grille du back-office Magento, mais il y en a une qui est moins intrusive que les autres : C'est celle-ci que je souhaites partager.

En effet, je vois régulièrement passer des billets, sur des blogs spécialisés en développement Magento, qui proposent des solutions souvent très "bourrines", tel qu'un bon gros overlap des familles : On copie le code d'origine et on ajoute sa ou ses colonnes !
C'est certainement le meilleur moyen de provoquer un conflit avec des extensions agissant sur les grilles ou de brider les mises à jour de Magento. Bref, à éviter !

La solution que je propose n'est pas révolutionnaire : Elle se contente d'exploiter le pattern "event/observer" de Magento.

Le principe et la mise en œuvre sont très simple car Magento tire des évènements avant la construction des blocks et avant le chargement des collections : Exploitons les, tout simplement !

Pour illustrer mes propos, je vais prendre l’exemple de la grille des produits, dans laquelle je veux ajouter une colonne, après celle du SKU, affichant le contenu d’un attribut créer préalablement.

Posté sur

Mise à jour du 05/01/2013 : J'ai créé un outil pour ça (in english) : http://mage.narno.com.

Je partage ici une petite astuce pour télécharger simplement une extension Magento, sans utiliser le downloader.

L'idée est d'obtenir le code source d'une extension MagentoConnect, sans l'installer (afin d'étudier son code source par exemple).

Mise à jour du 01/12/2011 : Je me suis enfin décidé à mettre à jour ce tutoriel avec l'arrivé de MagentoConnect 2.0, dont le protocole à légèrement changé. Voir ci-dessous.

Pour rappel, il faut savoir que Magento utilise un serveur PEAR pour packager et distribuer ses extensions. De ce fait, une fois que l'on connait le chemin d'accès au serveur PEAR de Magento et que l'on connais son arborcence il est très facile d’accédé à n'importe quel package.

MagentoConnect 2.0 : Ce n'est plus PEAR, mais les fondamentaux reste identiques !

Voici la procédure à suivre, en utilisant l'exemple du Modern Theme.


Pour rappel, Magento s'appuie sur des fichiers XML pour configurer ses modules (entre autre). Le soucis avec l’utilisation qu'en fait Magento, c'est qu'il ne vérifie pas l'intégrité des fichiers XML.

En effet, si vous faite une faute de frappe, qu'une balise est mal fermé ou tout être erreur dans la structure XML de votre fichier de configuration, Magento levera une erreur (ou plutôt un warning) du type :

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 19: parser error : expected '>' in magento\lib\Varien\Simplexml\Config.php on line 510

Notes :

  • ce message est loggué dans system.log (si les logs sont activés)
  • dans le cas où le DeveloperMode n'est pas activée, l'erreur sera silencieuse

Vous me direz, ça n'est pas bloquant : un coup d'oeil dans le fichier exception.log pour déterminer l'origine du problème et l'affaire est réglée ! Sauf que non, ce type d'erreur n'est pas "protégée" par un try/catch...
De ce fait, mise à part le fait de savoir qu'un fichier XML de configuration est en cause, vous n'êtes pas très avancé.

L'idée, pour se simplifier, est de connaitre le non (où plutôt le chemin) du fichier en cause et la ligne qui pose problème.

Pour cela, je vous propose un overlap de classe Varien en charge des fichiers de configuration XML : Varien_Simplexml_Config. Le code est simple et mériterait d'être retravaillé, mais il fonctionne bien en l'état.

Posté sur
|


Nativement, Magento permet la gestion des traductions de l'application via des fichiers CSV (Comma Separated Values). Il s'agit d'une solution simple, robuste et facile à utiliser pour le néophyte.

En pratique, chaque ligne d'un fichier de langue Magento (par exemple Mage_Core.csv) forme une paire : contenu d'origine puis contenu traduit, séparés par une virgule.
Par exemple : "Add Product","Ajouter un produit"

Comme vous le voyez, rien de plus simple pour traduire son module Magento en français : il suffit de recenser toutes les chaînes de caractère utilisées, de les copier dans un fichier et de les traduire !

Oui c'est facile, car ce type de fichier peut être créé avec n'importe éditeur de texte et sa structure est très simple à comprendre. Néanmoins, lorsqu'un module commence à contenir des centaines de chaînes de caractères, la maintenance devient rapidement pénible :

  • quels textes ont déjà été traduit ?
  • comment déterminer - facilement - les textes restant à traduire
  • quels textes sont obsolète ? (la formulation à été changée)
  • il n'est pas évident de maintenir un dictionnaire des termes génériques
  • comment assurer la bonne édition du fichier s'il est éditer par plusieurs contributeurs
  • etc

Mon expérience Drupal m'a habitué à ne pas me casser la tête avec la traduction de mes modules. Pourquoi ? Parce-que Drupal utilise Gettext pour PHP ! Gettext est un mécanisme de traduction libre, s'appuyant sur les locales d'un système d'application, le tout stocké dans des fichiers binaires (.mo). Je vous invite à suivre le lien suivant pour plus d'infos : GNU gettext utilities.

Maintenant la question est : comment utiliser Gettext avec Magento ?

Posté sur

J'y vais peut être un peu fort avec le titre mais bon, mieux vaut prévenir que guérir !

Dans le cadre de mon travail de création de boutiques e-commerce Magento, j'ai eu l'occasion d'acheter quelques modules Magento. L'idée est simple : pourquoi passer du temps à réaliser un module qui existe déjà alors qu'on peut l'acquérir à un coût raisonnable (entre 20 $ et 200 $ en moyenne) ? A priori c'est une économie de temps de réalisation et donc d'argent pour nos clients.

Dans la plupart des cas le paiement ne se fait pas via Magento Connect : Varien n'est pas tiers de confiance. Très souvent le lien présent sur la fiche du module redirige vers le site du créateur et vous propose de régler votre achat via PayPal.

Jusque là rien de grave, mis à part le délais peut être : la plupart des vendeurs de modules ne vous livrent pas l'application juste après le paiement : il faut attendre qu'il vous le livre par e-mail...

Enfin, le pire arrive : le package (archive ZIP dans la majorité des cas), est accompagné d'un fichier texte d'installation ! Oui, comme à l'époque d'osCommerce : il est nécessaire de copier les fichiers à la main, de modifier quelques ligne de codes, ou encore de changer la configuration du module via des variables PHP...
Dans ce cas il m'est arrivé d'abandonner et coder moi même le module en question.

Bref, encore une fois soyez prudent et prenez le temps de lire les avis et de faire une recherche sur les forum avant d'acheter.