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 ?

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/2001 : 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 ?

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.

J'ai récemment été confronté à des problèmes de qualité des photos sur Magento.

Dans un premier temps, j'ai vainement cherché une option pour régler cela via le back-office de Magento... j'ai finis par me rendre à l'évidence : ce n'est pas possible (tout du moins jusque la version 1.3).
J'ai ensuite étudié le code source afin de déterminer comment le framework gère et surtout génère les différentes tailles des photos (sur la page liste, les miniatures, etc.) des produits.

J'ai ainsi découvert que Magento utilise GD2, avec un réglage de qualité à 80% par défaut (et non modifiable via la configuration, back-office ou XML). Une valeur de 80/100 de qualité est suffisante dans la plupart des cas. Néanmoins dans le domaine du e-commerce ont sait qu'une photo de très bonne qualité peut faire la différence.

L'idée est donc de pousser la qualité de compression (jpeg) à 90%, voici les solutions envisagées :