Le site Atopic & Pictogram (A&P) a été conçu de façon statique par Philippe Letranchant. Il est actuellement hébergé par OVH sous l'URL http://www.atopictogram.com.
Il comporte une ébauche de formulaire de commande, actuellement inactif. Il va falloir effectuer quelques transformations pour l'exploiter dynamiquement.
La conception du site se fait en plusieurs étapes :
La conception du site marchand s'appuie sur ma pratique avec Zen Cart, basé sur osCommerce,
logiciels d'e-commerce très complets.
Il ne s'agit pas de reconstituer les fonctionnalités complexes de ces programmes versatiles,
conçus pour répondre à presque tous les cas de figure de commerces très différents,
mais de capturer une pratique bien au point et de l'adapter au cas précis de A&P
pour répondre rapidement aux attentes du commanditaire.
Le site sera réalisé en PHP. Pour améliorer son évolutivité, la structure des pages sera découpée en plusieurs parties :
Cette structure permet de modifier une partie sans avoir à éditer une douzaine de fichiers, voire plus. Elle permettra de plus de bénéficier d'une traduction de l'interface et des textes, qui seront indépendants de la structure de la page : il sera possible de modifier l'aspect du site sans avoir à changer chaque page dans chaque langue.
J'ai cherché un bon « framework » PHP pour encadrer le codage du site et encourager
le découplage modèle / vue / contrôleur (MVC)
facilitant l'évolutivité et la maintenance du site.
Ce ne fut pas chose aisée. Il y a des dizaines de telles superstructures d'applications, rendant le choix délicat.
Parmi les critères de choix, il y avait la contrainte de rester à PHP4 (plus portable),
d'utiliser un moteur de template léger et efficace (pas Smarty !),
d'avoir une documentation suffisante et un suivi correct (versions récentes),
d'être assez léger pour convenir à un projet de cette ampleur, sinon je risque de passer plus de temps
à apprendre le framework qu'à coder l'application,
tout en offrant une palette de possibilités permettant d'avoir rapidement des fonctionnalités complètes
(identification, abstraction base de données, internationalisation, sécurité).
Mon choix s'est porté sur Seagull, qui combine toutes ces qualités. Peut-être encore un peu jeune, mais se reposant largement sur la bibliothèque PHP standard Pear, il offre de bonnes fonctionnalités et semble relativement stable tout en restant d'une taille facilitant l'apprentissage.
La base de donnée MySQL se base sur les tables Zen Cart, simplifiées pour correspondre aux besoins de A&P : pas de catégories, pas de fabriquants, une seule devise, etc.
Le visiteur n'a pas à s'identifier pour parcourir le site. En fait, il peut même mettre des articles
dans son panier en restant anonyme. Ce panier durera le temps de la session (tant qu'il ne sort pas
du site), voire plus longtemps si le client accepte les cookies : on enregistre chez lui un identifiant
permettant de retrouver le contenu du panier stocké sur le serveur.
Ce panier n'aura qu'une durée de vie limitée (réglable par l'administrateur) et sera détruit si le client
ne revient pas sur le site. Les paniers de clients identifiés ont une durée de vie illimité a priori,
mais l'administrateur peut les lister, voire les détruire.
À noter que les articles dans les paniers ne sont pas retirés du stock : en fin de stock, le premier
client à passer commande aura l'article.
Le client peut voir le contenu de son panier, retourner à la fiche produit, modifier les quantités,
voire supprimer des articles de son panier (avec confirmation).
À plus long terme, il aura une option pour estimer les frais d'envoi en fonction du pays de destination
de la livraison.
Pour passer commande, le client doit s'identifier.
S'il a déjà un compte, il saisit son e-mail et son mot de passe et il retrouve son panier et ses préférences.
S'il a les cookies activés, il peut aussi choisir d'être identifié automatiquement sur son poste habituel.
Si le client n'a pas de compte, il peut en créer un en saisissant ses coordonnées :
Les champs et leur caractère obligatoire (étoile) peuvent être désactivés dans la configuration. Il est aussi possible de définir une taille minimum (chiffre suivant l'étoile), voire un certain format (adresse e-mail). La taille maximale des champs est définie dans la base de données.
Une fois identifié, le client peut valider son panier pour passer sa commande.
Le processus se fait en plusieurs étapes :
Au cours des trois étapes, le client peut taper aussi un commentaire destiné au gérant de la boutique.
Si le client a choisi de payer par carte bleue, il suit le processus de paiement et si tout va bien,
la commande est validée.
Sinon, on l'avise que la commande ne sera envoyée que sur réception du paiement (chèque, virement...).
Le client identifié peut voir sur son compte le statut de sa (ses) commande(s) :
Ces statuts sont modifiables et déterminés par l'administrateur au fur et à mesure de l'avancement de la commande. L'administrateur peut accompagner chaque changement de statut d'un commentaire. À l'avenir, ces modifications et commentaires pourront être envoyés par e-mail au client.
Le paramétrage du site est divisé en deux parties :
une partie succeptible de peu changer, comme la liste des statuts ou le choix des champs d'inscription,
qui sera stockée dans des fichiers PHP à éditer à la main ;
et une partie plus « vivante », comme la modification de la liste des produits,
les rapports sur les clients ou les ventes,
Pour accéder à la partie administration, il faut saisir un identifiant et un mot de passe. Un tableau de bord permet de voir les derniers clients et les dernières commandes avec leur statut, et un menu permet de choisir les fonctions d'administration :
Cette liste n'est pas figée, mais offre déjà une bonne palette de fonctionnalités de base.