Magento 1.4 : nouveautés et conséquences

Après de longs mois de travail (et de retard…), Magento Community Edition 1.4.0.0 est à disposition de tous. Pour avoir participé (un peu) à son élaboration, je peux affirmer qu’elle représente une étape majeure. Si je faisais une analogie avec les services web 2.0, je dirais que Magento vient de quitter sa période bêta. En effet, nous avons tous essuyé les plâtres d’une solution innovante mais jeune, bourrée de fonctionnalités mais aussi de carences, dotée d’une architecture extraordinaire mais pas encore bien huilée. Varien a intégré nos expériences, compris nos contraintes et répondu à nos besoins. Le résultat, c’est cette version 1.4.0.0.

Magento 1.4.0.0, c’est pas loin de 2 millions de lignes de code, 875 fichiers supprimés, 2366 fichiers nouveaux, 3437 fichiers modifiés, des dizaines de milliers de différences dans les lignes de code. Autant dire que les modifications réalisées sont profondes. C’est une excellente nouvelle pour les nouveaux sites Magento… et un peu moins bonne pour les anciens, nous allons voir pourquoi.

Au-delà d’une simple liste des nouveautés, je vous propose de découvrir ce que cette version va changer pour les utilisateurs et intégrateurs de Magento.

Quoi de neuf dans Magento 1.4.0.0 ?

Refonte complète des calculs des prix et des taxes

C’est pour moi l’aspect le plus important dans les changements apportés. La solution a été conçue aux États-Unis, pays où les produits affichent toujours un prix hors taxes, même pour les particuliers. Évidemment, ce n’est pas le cas en Europe où les prix incluent les taxes en BtoC, ce qui inverse de fait tous les calculs de prix.

Jusqu’à présent, Magento faisait sa cuisine en basculant les prix TTC en prix HT, ce qui posait rapidement des soucis de calcul des remises et des taxes. A cela s’ajoutait des arrondis un peu approximatifs… Un point critique très pénalisant pour le développement de Magento en Europe. Il fallait jongler avec des configurations un peu bancales et des modules spécifiques pour patcher les comportements, en fonction du catalogue et du métier du client. Faisable, mais un peu lourd…

J’ai longuement travailler avec Varien sur ce point. Nous avons étudié plusieurs pistes à partir des besoins métiers transmis (un grand merci à Sébastien Lepers, alias SeL qui a joué un rôle essentiel dans cette phase d’étude). Tout me paraissait simple jusqu’à ce que certains pays asiatiques entrent dans la boucle avec des règles fiscales et comptables aussi dingues que les nôtres… mais différentes !

L’équipe de Yoav Kutner (directeur technique de Varien) a donc imaginé un configurateur de calcul suffisamment abstrait pour être adapté à tous les cas. Et ça marche ! La TVA sur les remises est maintenant un vieux cauchemar.

La configuration des calculs dans Magento 1.4.0.0.

L’arrivée des widgets

Oui, Magento gère maintenant les widgets. Rien d’exceptionnel, d’autres applications le font. Sauf que c’est un changement radical à la fois pour les utilisateurs de la plate-forme et pour les développeurs Magento.

Les utilisateurs bénéficient maintenant de petites fonctionnalités intéressantes, exploitables depuis les contenus de pages et de blocs. Par défaut, on a l’insertion de liens vers des pages et des catégories ou encore la liste des nouveaux produits. Ce qui demandait souvent des développements spécifiques est maintenant intégré et configurable par un utilisateur.

Les développeurs, eux, vont se régaler à proposer des mini-fonctionnalités rapidement et simplement. Et au final, de nombreuses extensions actuelles n’auront plus aucun intérêt. Elles seront avantageusement remplacées par des widgets.

Création d’une instance de widget.

Intégration du wysiwyg dans les pages et les blocs CMS

La solution Magento a souventété critiquée pour son absence d’outil d’enrichissement des contenus. C’est maintenant chose faite ! En arrière-plan, c’est TinyMCE qui s’y colle avec les fonctionnalités que nous connaissons déjà.

Le wysiwyg dans une page CMS.

Le wysiwyg s’accompagne d’un navigateur de fichiers qui permet de stocker (dans le dossier media de Magento) des images et des documents. L’utilisateur a donc la main sur le placement de ses ressources et la gestion de sa bibliothèque.

Le navigateur permet de créer des dossiers pour organiser ses fichiers.

Refonte du système d’indexation et de cache

Toute la gestion des index et du cache a été repensée. Jusqu’à présent, les actions n’était pas claires, les résultats pas toujours évidents, ce qui nous obligeait à tout purger dès qu’on touchait à un truc. Résultat catastrophique sur les sites à fort trafic…

Donc maintenant, c’est clair, pratique et efficace. Extensible aussi, on peut ajouter d’autres contenus en cache ou en index (extensions, par exemple).

Gestion du cache.
Gestion des index.

Refonte de l’affichage des erreurs et des statuts HTTP

La gestion de l’affichage des erreurs a été revue. Elle n’est plus limitée aux erreurs fatales (Magento report) et 404 (page non trouvée). Et on peut personnaliser le fond et la forme de chaque page d’erreur.

Clés URL  par vue

Un truc énervant depuis les débuts de Magento : pas de clé URL par vue. Si on avait un site en français et en anglais, il n’offrait qu’une seule clé URL. Par exemple, la catégorie www.example.com/ma-categorie avait la même adresse en français et en anglais. Une catastrophe pour le référencement.

Maintenant, on peut avoir une seule catégorie avec deux adresses : www.example.com/ma-categorie en français et www.example.com/my-category en anglais.

Une clé URL par défaut ou par vue.

Bootstrap contextuel

Le bootstrap de Magento (ce qui permet à Magento de démarrer) a été repensé pour faciliter l’exploitation. On peut maintenant gérer le démarrage de plusieurs sites sans passer par un fichier index.php pour chacun, mais simplement en jouant avec les variables d’environnement. On peut donc démarrer un site via la configuration d’un hôte virtuel dans le serveur web (vhost d’Apache par exemple).

Ajout du genre dans le compte client

Petit détail, mais la question revenait en permanence. Alors Varien a ajouté le genre dans le compte client. On peut enfin faire des offres promotionnelles pour les femmes seulement !

Montée en version de Zend Framework

Zend Framework (qui est à la base de toute l’architecture de Magento) fait un bond important en passant de la version 1.7.2 à la 1.9.6. Ce n’est pas la toute dernière (v. 1.10.1), mais suffisant pour disposer de composants intéressants pour le développement d’extensions (outils Rapid Application Development, cloud computing, Zend_Reflection, Zend_Queue, etc.).

Implémentation de 3D Secure

Magento gère désormais 3D Secure. Et après ? Euh… j’avoue que là, je n’ai pas creusé. Les courageux analyseront le module Mage_Centinel.

Refonte du module Paypal

Le module Paypal a été totalement réécrit. Il offre plus de fonctionnalités, tout en éliminant des bogues un peu pénibles.

Gestion de variables personnalisées

Un petit truc génial ! On se demande même comment on n’a pu faire sans. Grâce à cette nouvelle entrée du menu Système, on peut définir des variables et leur valeur, puis les utiliser dans les contenus de Magento (pages, blocs et e-mails).

Je crée une variable personnalisée dans le menu Système.
J’insère ma variable dans n’importe quel contenu Magento.
Ici la variable est insérée dans un bloc. On reconnaît la syntaxe particulière que Magento utilise pour les données dynamiques.
En affichant le bloc dans une catégorie, je récupère la valeur de la variable personnalisée. Magique !

Refonte de la gestion des thèmes

La gestion des thèmes a été repensée pour faciliter leur maintenance qui devenait un enfer sur des sites Magento un peu anciens… Maintenant, plus le choix : on surcharge le thème de base !

Une version attirante pour les nouveaux entrants…

Au final, Magento prend une excellente direction. Les concepts étaient là dès le début, il fallait seulement les renforcer. Les fonctionnalités sont d’une exceptionnelle richesse pour une solution open source. Côté performances, Magento gagne encore des points.

… mais une mise à jour délicate sur les anciens sites

Le gros problème de Magento 1.4, c’est la profonde modification de son noyau (le core). Certes, c’est bien mieux pour l’avenir. Mais la mise à jour depuis des versions antérieures sera un véritable casse-tête pour ceux qui ne sont pas restés sur les fonctionnalités standard.

Attendre la mise à jour des extensions

Premier point, les 1700 extensions présentes dans Magento Connect vont devoir être mises à jour, testées et publiées. Pour certaines d’entre elles, cela représente des semaines de travail. Heureusement, Varien avait mis à disposition des versions bêta pour que les intégrateurs préparent ce travail.

Cependant, il va sans doute falloir du temps avant d’utiliser des extensions compatibles. Je pense surtout à celles qui sont indispensables : traductions, modes de paiement, modes de livraison, passerelles d’échange de données, etc.

Refactoriser les développements

Certaines classes et méthodes sont dépréciées, des modules ont été déplacés, l’arborescence des fichiers a changé. Résultat : une nécessaire révision des développements spécifiques, suivie d’une phase de tests non négligeable.

Mettre à jour les thèmes

Cette tâche n’est pas nouvelle : à chaque mise à jour de Magento, il faut reporter les modifications apportées au thème par défaut sur son propre thème.

Sauf que là, c’est vraiment différent ! La notion de base de thèmes a été intégrée et le thème par défaut se déleste de 38 fichiers, s’alourdit de 49, tandis que 291 sont modifiés. On n’a pas fini de faire des comparaisons de code…

Remplacer des modules par des widgets

Pour ceux qui auront tenu les quelques semaines de mise à jour vers Magento 1.4.0.0, il reste la transformation de modules en widgets. De nombreux modules ajoutaient des mini-fonctionnalité aux utilisateurs (afficher les meilleures ventes dans une page, par exemple). Désormais, les widgets, plus légers et configurables par l’utilisateur, vont prendre le relais.

Conclusion

Magento 1.4.0.0 est une bien belle version, avec un potentiel qui devient réellement exploitable. Les nouveaux utilisateurs et intégrateurs seront conquis. Les autres vont d’abord s’arracher les cheveux pour la mise à jour, puis goûteront le plaisir d’être à la pointe de l’innovation.

Une dernière chose : je vous conseille de ne jamais mettre à jour Magento via l’interface d’administration de Magento sur un site en production. Cette  action simple et rapide va entraîner une belle dose de stress ! Dupliquez votre site sur un serveur de test et analysez bien les conséquences de la mise à jour sur vos réalisations spécifiques. Magento est un outil professionnel puissant, rigoureux et exigeant. Il faut l’être aussi.

Commentaires

Fabrice

Merci pour cette review qui met l’eau à la bouche.

Hélas comme vous le précisez, la mise à jour d’une version 1.3.2.4 via le magento connect manager est plus qu’un casse tête : MAJ qui plante avec une Fatal error (Varien travail sur un fix) , et site de production corrompu après tentative de mise à jour d’un répertoire de test.

Mais je ne veux pas être négatif. Magento reste pour moi la solution e-commerce la plus abouti, et la version 1.4 enfonce le clou, je crois.

14 février 2010, 9h30 · Répondre

Christophe

@Fabrice
Oui, il restait un bug dans Magento Connect Manager. Varien l’a fixé mais le patch n’est pas encore diffusé.

Sinon, le site de test qui fait planter le site en production, ça ressemble fort à un piège dans lequel nous sommes tous tombés. Si on copie un site de poduction pour en faire un site de test sur le même serveur, il faut faire attention aux chemins stockés dans les variables de PEAR. Sinon, quand on met à jour Magento via l’interface du site de test, les fichiers sont écrits dans les dossiers du site de production !

Je ferai un article détaillé sur les points essentiels à connaître avant de migrer un site Magento (local.xml, pear.ini, table core_config_data, jobs, logs…).

14 février 2010, 11h03 · Répondre

Fabrice

J’ai résolu le problème en supprimant le downloader et en le réinstallant . A partir de là j’ai pu mettre à jour en v1.4.

Il reste un bug la navigation dans les catégories comprenant plus d’une page.
Rien ne s’affiche si elle a plus d’une page (plus de 9 produits dans mon cas)
C’est lié au fichier toolbar.phtml . Car si on remplace ce fichier dans son thème perso par celui issu du dossier base, les catégories qui posaient problèmes s’affichent . Hélas on ne peut pas naviguer de page en page dans ces catégories car le bloc de navigation pager.phtml ne s’affiche pas .

Tu parles de surcharger le template Base , y a -il de la doc expliquant comment modifier un template 1.3 en fonction de cette nouvelle donnne ?

14 février 2010, 21h26 · Répondre

Patricia

Fabrice, effectivement, j’ai résolu le problème des catégories en suivant tes consignes. C’est super ! Mais je ne peux pas ajouter de produits à mon panier : There has been an error processing your request# suivi d’un numéro.
A priori, le problème n’a pas été rencontré, j’ai parcouru les forums. Merci pour l’aide.

17 février 2010, 2h52 · Répondre

Fabrice

Il faut que tu regardes dans le répertoire /var/report/
Il y a un fichier portant le numéro qui s’affiche sur ta page d’erreur. Ouvre le et regarde ce qu’il contient ça te donnera des indications sur ce qui provoque l’erreur.

Perso j’avais une erreur d’ajout au panier, et c’était provoqué par l’extension qui corrige les arrondis de TVA pour la France (elle n’est plus nécessaire sur magento 1.4)
Je l’ai installé et désinstallé dans la foulée pour qu’elle soit proprement supprimée de la 1.4

17 février 2010, 12h55 · Répondre

Tarmax

Pour avoir une url différente par langue pour chaque page c’est très simple : il y a la possibilité de rajouter le nom de la vue dans l’url (configuration -> Web -> Option d’URL -> Ajouter le code du magasin aux URLs)
Du coup :

mondomaine.com/fr/mapage.html pour le français si la vue française a pour code fr

mondomaine.com/en/mapage.html pour l’anglais si la vue anglaise a pour code en

18 février 2010, 18h19 · Répondre

jaouad hammoumi

Merci Christophe pour cet article interessant.
Patricia, si tu a une ancienne version du module de livraison owebia shipping ça peut etre la cause du bug « There has been an error processing your request# suivi d’un numéro. » car je l’ai rencontré moi aussi dans la nouvelle version de magento et je l’ai resolu par l’installation de la version owebia 2 depuis magento connect j’ai modifié aussi la syntaxe d’utilisation des propriétés dans system > Configuration > Mode de livraison voici le lien pour plus de détail :
http://www.owebia.com/contributions/magento/owebia-shipping/fr-documentation.html

22 février 2010, 18h36 · Répondre

jeremie

Bonjour christophe,
merci pour cet article très complet.
Je suis en train de travailler sur un site multiboutique sur magento 1.4.1 et je voudrais avoir plus de détails sur la partie Bootstrap contextuel. Qu’entends tu par les variables d’environnement. Est-ce possible de détailler cette manipulation sans utiliser plusieurs index.php

merci d’avance et bonne continuation

25 février 2010, 11h19 · Répondre

david

Bonjour,
Comment activer les urlkey par vue. dans votre screen il est indiqué par « store view » . moi j’ai « global » je ne peux donc pas choisir une key par vue.
merci

26 février 2010, 9h09 · Répondre

Christophe

@Fabrice et Patricia
A chaque mise à jour de Magento, il faut comparer les templates livrés par défaut et reporter dans votre thème spécifique ce que Varien a changé dans le code par défaut. C’est long et pénible, mais c’est la seule garantie que ça fonctionne !

@Tarmax
Cela ne règle pas le problème du référencement puisque les mots-clés ne sont toujours pas traduits.

@jeremie
Bonne idée d’article, ça ! Les variables d’environnement peuvent être déclarées dans la configuration d’Apache, voir même définies dynamiquement en fonction de l’adresse du site. Magento utilise maintenant des constantes dont la valeur vient de ces variables serveur (MAGE_RUN_CODE et MAGE_RUN_TYPE).

@david
Etrange… Il y a peut-être une option dans la configuration du catalogue, mais je ne me souviens pas avoir changé quelque chose par rapport à l’installation de base.

8 mars 2010, 21h36 · Répondre

Mogalupa

Merci pour ce très bon billet. Ayant suivi Magento depuis la 1.0.0.8 (si je me souviens bien), il faut vraiment saluer le travail de Varien et de la communauté.

En plus des éléments dont tu parles, j’ai remarqué un travail de qualité sur les traductions. La version FR est maintenant beaucoup plus… française 🙂

En revanche, je ne comprends pas très bien l’intérêt de l’évolution du bootstrap. Les configs de virtual host ne sont que rarement accessibles par l’utilisateur du site et le fichier .htaccess fait peur 🙂 Rien de bien grave…

Et sinon, à quand le chantier de l’import/export ?

Je retourne m’arracher les cheveux en attendant le plaisir d’être à la pointe de la technologie.

18 mars 2010, 2h09 · Répondre

Rylook

Bonjour,

Je découvre cet article en même temps que le site, superbe article et excellente initiative.

Le contenu est un véritable complément au site magento et aux sites fr que nous connaissons déjà.

En tant qu’utilisateur magento, je vous dis merci pour ce compte-rendu très bien organisé.

Je ne peux que vous encourager et vous féliciter du travail accompli.

Si vous avez besoin d’aides, vous pouvez compter sur ma participation à faire évoluer ce site pour la communauté francophone de magento.

A très bientôt sur Magentips,

18 mars 2010, 13h49 · Répondre

Christophe

@Mogalupa
Oui, Varien et la communauté travaillent beaucoup pour avoir un outil au top au plus vite. La dernière mise à jour du pack français est un bon exemple.
L’évolution faite sur le bootstrap permet de simplifier le démarrage de plusieurs sites sous la même plate-forme (un seul dossier physique, meilleure gestion des assets), mais aussi et surtout d’y intégrer la contextualisation en fonction des variables d’environnement. Très puissant avec l’explosion des clients mobiles.
Chantier import/export ? Rien de particulier. Il manque toujours l’exportation des commandes dans le backend, mais à part ce détail capital, l’API fait son office.

@Rylook
Voilà un commentaire qui fait plaisir. Merci ! Et cette proposition est un bon moyen de compenser mon manque de temps.

18 mars 2010, 22h09 · Répondre

Rylook

De rien et ce serait avec plaisir d’apporter ma contribution si besoin @Christophe

23 mars 2010, 10h55 · Répondre

Stephane

Incompréhensible : dans la version 1.4.0.1, la regle « Est-ce que les prix saisis par l’administrateur incluent les taxes » ne fonctionne pas !! si on saisi des prix TTC pour les produits et que l’on met TTC dans la configuration de la TVA, le systee rajoute la TVA sur le Front! C’est ca l’evolution pour la prise en compte du systeme français ? Faut il saisir les prix en HT dans les produits (bonjour les arrondis des prix TTC !) ?

8 avril 2010, 11h43 · Répondre

Christophe

@Stephane
Bizarre… Il y a sans doute un soucis avec la configuration. Magento gère très bien l’affichage des prix à partir d’une configuration dont les prix sont TTC.

10 avril 2010, 11h20 · Répondre

Stephane

@Christophe
Le pb venait bien d’un paramètre dans la configuration:
Ventes => Paramètres de livraison=> Origine : mettre France au lieu de Etats Unis

12 avril 2010, 10h50 · Répondre

ader

Salut tout le monde,

Je suis un nouveau membre de la communauté Magento.
j’ai installé avec succès Magento 1.4.0.1 sous Zendserver 5.0 avec mod_rewrite activé dans appache2 et dans admin Magento.
j’ai créé un produit sur Magento puis je l’ai ajouté à une catégorie que j’ai assigné à la catégorie Default.
le problème c’est que dans le home page quand je click sur n’importe quel lien j’ai cette erreur 🙁 :

[b]404 Not Found

The requested URL /magento/catalog/category/view/s/tapis-naturel/id/3/ was not found on this server.[/b]

j’ai trouvé une solution temporaire en désactivant le le rewrite dans admin Magento :
systeme->configuration->web-> search engines optimization : Use Web Server Rewrites No

est ce que quelqu’un à une solution à mon problème?

Je vous remercie d’avance.

à bientôt.

27 avril 2010, 18h03 · Répondre

khalilup

@ader : dans le fichier https.conf change Mine de Allow Override par Allow

@Christophe : merci et continue comme ça

29 avril 2010, 20h12 · Répondre

khalilup

@ader: change None par All dans Allow Override ( post précédent erreur dûe au prediction des mots du clavier de mon tel)

29 avril 2010, 20h42 · Répondre

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *