Monétisez votre workflow avec Joomla!

6218 vues
30 mars 2017
Cyril
seblod-administration

 

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.

Pourquoi utiliser Joomla! pour l'e-commerce ?

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!.

Différentes approches pour l'e-commerce avec 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 :

  • des solutions autonomes complètes qui remplissent les mêmes fonctions qu'une plateforme dédiée à la création de boutiques en lignes (comme Hikashop, RedShop, Virtuemart...)
  • des solutions qui vont se greffer sur le gestionnaire d'articles Joomla! et lui ajouter des fonctions d'e-commerce complètes (J2store, QuickCart...)
  • des solutions pour juste monétiser des contenus numériques (donc en évitant les questions de stocks ou de livraison) comme un abonnement ou l'achat de fichiers dont le téléchargement est payant,
  • des solutions pour ajouter des fonctions de paiement (par exemple des dons) sans livraison même numérique,
  • des solutions pour intégrer d'autres systèmes d'e-commerce au sein du CMS Joomla!, 
  • des solutions e-commerce dédiées ou intégrables à un CCK (Content Construction Kit),
  • des solutions verticales liées à un métier (enchères, restaurant en ligne, vente ou location de véhicules...) 

Besoins d'architectures flexibles

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 :

  • gestion du panier
  • gestion de stock
  • le tunnel d'achat 
  • les moyens de paiements
  • les méthodes de livraison
  • les méthodes d'incitation (coupons, réductions, cadeaux, points de fidélité...)
  • la génération des factures
  • les statistiques de ventes
  • etc...

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 :

  • Fonctionne avec les articles Joomla! natifs
  • Fonctions ajax pour la recherche (moteur de recherche à facettes)
  • Options des produits, caractéristiques et variantes en nombre illimité,
  • Plusieurs images par produit,
  • Effet de zoom sur les images,
  • Multi-devises
  • Support multi vendeurs
  • Utilisable pour les produits en téléchargement et physiques.

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 !

La solution SEBLOD + J2Store

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.

Administration du composant Seblod

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:

  • Une compréhension plus fine des tables J2store
  • la monétisation de la soumission d'un contenu
  • Lancer un script lors du changement d'état d'un produit commercial

L'architecture de J2store

Les cas d'utilisation suivants nécessite la bonne compréhension des tables principales de j2Store:

  • j2store_products : la table qui contient les produits j2store. Chaque produit est relié à un contenu Joomla!
  • j2store_variants: table additionnelle qui contient notamment le(s) prix du produit ainsi que sa désignation commerciale (sku)
  • j2store_orders: les commandes qui fait le lien entre l'acheteur (les users Joomla!) et les produits
  • j2store orderitems: les lignes de la commande qui font le lien entre la commande et les produits 

J2store database

 

 

Monétiser la soumission d'un contenu

 

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:

  • on veut souscrire à un service qui nécessite de renseigner un formulaire. Une fois soumis on passe à une seconde étape qui concerne le paiement et dont le montant dépend des choix qui ont été sélectionnés dans le formulaire.
  • on veut monétiser la soumission d'un contenu sur le site. Par exemple on fait payer le dépot d'une offre ou d'une demande d'emploi.

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:

formulaire creation produit

 

Le champs code contient les lignes suivantes :

code creation produit j2store

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: 

 switch content

 

 

vue contenu j2store

 

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).

code hide j2store

 

Automatiser l'achat d'un produit: achat 1 clic

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 : 

creation commande

 

Lancer un script lors de la confirmation de paiement

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:

  • public function onJ2StoreChangeSubscriptionStatus($subscription_id, $status_code) 
  • public function onJ2StoreAfterOrderstatusUpdate($order, $new_status)

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é. 

Conclusion

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.