Ce billet, abordé dans la formation sur les solutions e-commerce pour Joomla!, illustre le grand potentiel de Joomla! pour la conception de sites et applications web métier avec paiement.
La réponse à cette première question peut être multiple. On peut d'ores et déjà lister :
un CMS est plus efficace pour la mise en forme et le partage de contenus éditoriaux qui sont des pages nécessaires pour le référencement d'un site même e-commerce. Les solutions 100% dédiées e-commerce n'ont par définition pas la richesse fonctionnelle des CMS phares sur ce terrain.
une fois que vous avez investi dans un outil et une chaîne de production professionnelle, et bien sûr à condition de choisir les bonnes extensions, il est souvent plus rapide et plus efficace d'exploiter à fond le CMS que de découvrir un nouvel outil
En ce qui concerne Joomla! la richesse des approches pour la question de l'e-commerce est si imposante que sauf dans des cas très spécifiques la solution CMS vaut largement d'être étudiée
Car en effet l'approche traditionnelle de Joomla! consiste à proposer une architecture de base aux développeurs tiers qui développent de véritables applications très complètes (les composants) là où d'autres CMS vont multiplier les plugins.
Ainsi un rapide coup d’il sur la JED (Joomla Extension Directory) affiche pas moins de 220 extensions rien que pour l'e-commerce. Toutes ne sont pas du même niveau de qualité mais toutes vous permettent de monétiser d'une façon ou d'une autre vos produits sur votre site Joomla!.
Comme toujours avec Joomla! la très grande liberté d'action ouvre la voie à des approches radicalement différentes pour répondre à la problématique de l'e-commerce.
On distingue donc dans les extensions proposées :
Nous nous intéressons aujourd'hui aux solutions qui peuvent fonctionner avec un CCK et/ou celles qui s'appuient sur le gestionnaire d'articles standards. Ces approches nous semblent d'une part moins connues et d'autre part elles présentent l'avantage d'une plus grande ouverture et souplesse comme nous allons essayer de le montrer.
Un des soucis principaux qu'on peut reprocher aux composants autonomes est qu'ils cloisonnent votre boutique e-commerce du reste du site web. D'un côté ces solutions d'e-commerce très complètes couvrent l'intégralité de vos besoins et peuvent faire au moins aussi bien qu'un prestashop mais d'un autre coté il n'est pas aussi évident de lier des articles standards du site avec des articles selon des règles automatiques. Les fonctions transverses (sur les produits et sur les articles) comme la réécriture d'URL, la recherche ou la géolocalisation peuvent aussi s'avérer compliquées sans des extensions d'extensions qui complexifient et alourdissent la solution globale.
C'est pour cela que certains développeurs ont eu l'idée astucieuse de s'appuyer sur le gestionnaire d'articles Joomla! et d'y ajouter des fonctions purement d'e-commerce comme :
Dans ces solutions les articles joomla! standards sont les produits commercialisés ce qui permet de les traiter, afficher, rechercher etc comme n'importe quel autre contenu du site web.
Dans cette catégorie on peut citer j2STORE et QUICK2CART. On apprécie particulièrement la flexibilité, la documentation et le support de J2STORE qui rende ce produit des plus performants et flexible.
Parmi les caractéristiques de J2Store, notons :
Ce ne sont que quelques avantages de ce composant; la liste complète de ces caractéristiques est beaucoup plus longue. Essayez-le pour votre e-boutique, vous ne regretterez pas ce choix !
Les CCKs (Kits de Construction de Contenus en Français) sont ces extensions dont la philosophie est issue du monde Drupal (le terme CCK était le nom de l'extension initiale) et qui transforment radicalement la façon de travailler avec Joomla!
L'approche "classique" avec un CMS (Joomla! ou un autre) consiste en effet à empiler des extensions hétéroclites qui ne couvrent qu'imparfaitement le cahier des charges du projet et avec des interfaces différentes. Il en résulte que 80% des besoins sont rapidement couverts par cette méthode mais que les 20% restant sont très difficiles à obtenir ou requiert des contorsions de code (hacks qui empêchent les mises à jour de sécurité futures).??
Aussi les fonctions transverses (SEO, recherche, géolocalisation...) nécessitent des plugins d'extension pas toujours compatibles entres eux et qui de toutes façons ajoutent de la lourdeur et de l'instabilité à la solution complète.
De plus les interfaces de chacune de ces extensions, développées par des équipes différentes, sont hétérogènes ce qui nuit à la prise en main du produit final.
Travailler avec un CCK revient à travailler avec des pièces de légo modulaires, élémentaires, qui sont en fait les champs des types de contenus. Là où précédemment le webmaster travaillait avec des articles monolithiques et donc pas personnalisables, il travaille maintenant avec des éléments plus petits - les champs - qui lui permettent de reconstruire tout type de contenu.
Or certains CCKs proposent des intégrations avec des solutions de plugins e-commerce. Ainsi K2, Cobalt ou Zoo utilisent Quick2Cart pour construire leur propre expérience e-commerce.
D'autres comme Seblod ou FlexiContent utilisent J2store car tous les deux fonctionnent sur la base d'articles Joomla! standards.
Le grand intérêt de l'approche Seblod, Content Builder, Form2Content et FlexiContent réside en effet dans le fait que ces CCKs étendent les articles Joomla! plutôt que de les remplacer. Ayant testé l'ensemble de ces solutions ma préférence va nettement vers Seblod pour tout un tas de raisons que j'ai déjà exposées (https://www.pulsar-informatique.com/creation-site-internet/comment-creer-un-site-internet/quelle-technologie-choisir/cms-open-source/expert-cms-joomla/developpements-cck-pour-joomla/cck-seblod-pour-joomla).
Dans ce cas le couple Seblod + J2store est un de ceux qui donnent le plus de flexibilité. De l'avis même des développeurs de J2store, la meilleure exploitation de leur composant est avec un CCK. On trouve un tutoriel de l'intégration sur le site de J2store (https://www.j2store.org/support/user-guide/seblod.html).
Avec le CCK SEBLOD on peut très facilement construire sa page détail (en disposant les champs) selon une disposition personnalisée. Le fait que J2store soit un champ comme un autre permet donc d'ajouter des fonctions de panier à tout type de contenu selon l'interface souhaitée sans même écrire une ligne de code.
La flexibilité fournie par le couple CCK + plugin e-commerce permet, par exemple, de monétiser tout type de contenu (produit physique, numérique, abonnement, etc...) selon des interfaces dédiées à chaque fois. Il nous est ainsi déjà arrivé de monétiser des CVs dans un JobBoard ou de créer à la volée des produits commerciaux dont le prix dépend des options choisies en temps réel par l'internaute.
J'ai déjà décrit dans ce premier billet comment intégrer facilement J2Store dans un contenu SEBLOD. Cette fois je montre comment aller plus loin avec notamment:
Les cas d'utilisation suivants nécessite la bonne compréhension des tables principales de j2Store:
Dans certains cas on ne veut pas juste utiliser des contenus Joomla! (ou SEBLOD, c'est la même chose pour ceux qui ne l'auraient toujours pas compris) payants. On a quelque fois besoin de monétiser la soumission d'un formulaire. Voici deux exemples:
Dans tous ces cas on utilise la très grande flexibilité de J2store et de SEBLOD.
La première étape consiste à placer un champ code APRES LA SAUVEGARDE dans la vue formulaire (en général en front) du contenu à créer:
Le champs code contient les lignes suivantes :
Une fois que le formulaire est soumis il faut basculer vers la vue contenu qui affiche le champ j2store pour présenter à l'utilisateur le bouton de mise au panier avec le bon montant.
Pour cela dans la config du formulaire on précise qu'on bascule vers la vue contenu avec un message d'explication:
Un champ code (avant le rendu) masque ou affiche le bouton de mise au panier selon que le produit est déjà acheté (en vérifiant que la commande est véritablement confirmée et payée quand on réédite le contenu) ou si il ne l'est pas encore (à la première soumission).
Dans certains cas on veut non seulement créer un produit commercial à la volée (voir ci-dessus) mais aussi automatiser l'achat et la confirmation d'achat. Par exemple dans le cas d'un client abonné qui n'a pas besoin de passer par tout le processus de tunnel de paiement on peut faire en sorte que l'acte d'achat soit totalement transparent pour le client. C'est ce qu'on appelle l'achat 1 clic.
Dans le champs APRES la sauvegarde dans le formulaire de soumission on pourra écrire :
On a souvent besoin de lancer un script qui modifie un champ SEBLOD d'un compte utilisateur ou d'un contenu une fois qu'une commande est validée.
Pour cela il suffit de placer un petit script dans un plugin j2store à écrire. Nous avons donc écrit un plugin J2Store plg_j2store_pulsar_j2storeevents.zip qui contient au moins deux méthodes:
La première fonction est appelée à chaque fois qu'un produit j2store de type abonnement (subscription) change d'état (abonné, desabonné ...). La seconde fonction est appelée quand une commande change d'état (notamment quand elle passe dans l'état confirmé.
il ne s'agit ici que de quelques exemples de ce qu'il est possible de programmer avec le trio Joomla/SEBLOD/J2Store tant cette architecture est riche et flexible. Le CCK SEBLOD permet d'intervenir à différentes étapes de la vie d'un contenu (workflow) alors que J2Store permet de monétiser un formulaire ou un contenu.
Dans un prochain billet j'illustrerai cette puissance par quelques exemples concrets de sites et applications web que nous avons réalisées.