... < 3 4 5 6 7 8 9 10 11 > ...
Bonjour Damien, pouvez-vous vous présenter et présenter votre activité ?
Bonjour, je suis Damien Lamadon gérant de La Bonne Pointure.
labonnepointure.fr est un site de vente de chaussures généralistes pour hommes, femmes et enfants.
Toutes les gammes sont proposées, du 1er prix au moyen de gamme +.
Le site a été mis en ligne en février 2007, presque 6 ans jours pour jours.
La vente de chaussures est une histoire de famille : mon grand-père vendait des chaussures sur les marchés et foires de la région, mon père a ensuite ouvert des grandes surfaces spécialisées (Chauss’63 à Riom, Mozac, Vichy, Ussel et Issoire). Après mes études, j’ai eu envie de tenter l’aventure sur le web.
J’ai suivi en 2005 une licence Marketing et Internet à Paris. C’est à cette époque que le marché de la chaussure sur internet à vu arriver de gros acteurs. J’ai alors commencé mon étude de marché.
En 2006, j’ai créé mon Business Plan, monté la société La Bonne Pointure puis j’ai lancé le site.
Au lancement du site, on proposait une centaine de produits. A ce moment, je travaillais tout seul, chez moi. Je m’occupais de la gestion des produits, des photos, des commandes, des envois, du SAV... de tout !
Puis un an après, lors des premières soldes d’hiver, il y eu un pic d’activité, je ne pouvais plus travailler tout seul.
Je me suis donc installé dans les locaux de Chauss 63’ et j’ai embauché ma première collaboratrice, qui travaille toujours avec moi aujourd’hui (nous sommes maintenant 3 personnes).
Vous êtes-vous fait aider pour lancer votre activité, ? Avez-vous fait appel à des organismes ?
J’ai bénéficié d’un prêt d’honneur par l’Association Riom Combrailles Initiative. Ce prêt est attribué dans le cadre de la création et du développement d’entreprises à Riom. Il m’a permis de financer une partie l’investissement matériel et la création du site.
Concernant la création du site, qu’avez-vous fait en interne et qu’avez-vous fait faire par des prestataires extérieurs ?
Le site a été réalisé par la société Octolys à Clermont-Ferrand (NDLR : maintenant OpenStudio), ils venaient tout juste de développer Thelia. J’ai donc vu toutes les évolutions du logiciel !
L’identité visuelle de labonnepointure.fr a été créée par la société Scopika, avec qui travaillait l’équipe d’Octolys.
J’ai aussi fait appel à Référencement Manuel pour tout le référencement.
De mon côté, j’ai fait toutes les photos, les descriptions produit, la logistique, la gestion des retours et des échanges...
Le fait d’utiliser Thelia m’a rendu immédiatement autonome quant à la gestion de mon site. J’ajoutais facilement les produits via le back office.
Aujourd’hui, comment gérez-vous la logistique ? Le SAV ?
Tout est fait en interne.
Au niveau du SAV, nous proposons sur le site le retour et l’échange gratuit dès 60 € d’achat. C’est un bon atout commercial.Le client remplit un bon de retour sur le site, imprime le bordereau Colissimo automatiquement généré et n’a plus qu’à nous envoyer son colis.
Le stock de la Bonne Pointure est le même que celui de 2 de nos magasins ainsi que d’un entrepôt. Cela simplifie la gestion et le stockage des chaussures, mais il a été nécessaire de lier la gestion des stocks du site à l’ERP du magasin.
Quel ERP est utilisé ? Comment fonctionne l’interfaçage entre Thelia et cet outil ?
Nous utilisons l’ERP LCV Multimédia, c’est un outil de gestion de stock et d’encaissement. Cette solution est assez « fermée » et ne permet malheureusement pas d’échanger les données en temps réel avec le site.
Tous les jours, 1 à 2 fois par jour, nous exportons la liste des produits (stocks et pointures disponibles) et nous l’importons dans Thelia.
Votre site a-t-il beaucoup évolué depuis son lancement en 2007 ?
Oui ! Il y a des évolutions tous les ans sur le site, à la fois techniques (mise à jour de Thelia, ajout de fonctionnalités) et visuelles.
Quels sont vos outils de promotion et de fidélisation clients ?
Nous avons plusieurs actions :
le parrainage, utilisé par quelques clients adeptent des réductions qu’il leur rapporte
les crédits fidélité : pour chaque commande le client reçoit une somme à déduire de sa prochaine commande ou à cumuler.
les codes promos
l’e-mailing avec une offre promotionnelle. Pour ça je travaille avec un prestataire de service qui s’occupe de la création graphique et de l’envoi. J’aimerais en faire un par mois mais c’est long à mettre en place, j’en fais plutôt 1 par trimestre en fonction des grands événements
Qu’est-ce qui est le plus difficile pour vous aujourd’hui ? Quels obstacles rencontrez-vous ?
Le plus difficile pour moi est d’avoir une bonne rentabilité, d’autant que l’investissement pour perdurer sur le net doit être constant et important.
Et qu’est-ce qui vous procure la plus grande satisfaction ?
J’ai d’excellents retours clients : je dispose de l’outil Fianet, et la note globale des clients est toujours entre 9,5 et 9,9 / 10 depuis 6 ans. C’est très positif sachant que ce qui est jugé c’est la qualité du service clients, la qualité des produits, la livraison etc...
Quel est votre objectif pour cette année ?
Tout simplement continuer ma croissance, et développer de nouveaux axes de vente.
Quels conseils voudriez-vous donner à une personne qui souhaite se lancer dans l’aventure e-commerce ?
Je dirai qu’il ne faut pas sous estimer le temps nécessaire au service client ni le service après vente.
Il est important aussi d’établir une vraie stratégie Internet et ne pas croire qu’une fois son site en ligne les ventes arriveront sans effort. Pour cela prévoir les investissements financiers nécessaires sur le long terme me paraît indispensable.
Dans cette nouvelle partie nous allons apprendre la mécanique des boucles et mettre en place celles de notre plugin.
Pour rappel, vous pouvez consulter la partie 1, partie 2, partie 3 du tuto.
La dernière partie du tuto est disponible : partie 5
Les boucles sont la particularité de Thelia, qui le différencie des autres CMS du marché. Ces boucles facilitent grandement l’intégration.
Thelia est livré avec les boucles nécessaires pour faire fonctionner une boutique en ligne, mais il est bien souvent nécessaire, pour coller aux demandes spécifiques, de créer de nouvelles boucles. Les plugins sont donc là pour ça !
Comment fonctionne une boucle ?
Les boucles Thelia vont tout simplement répéter une portion de code autant de fois que nécessaire. Une boucle est bien sûr paramétrable et retourne différentes informations.
Les paramètres d’entrée sont les variables passées dans la boucle, permettant de construire la requête qui ira chercher les informations demandées.
Les paramètres de sortie sont les substitutions que vous connaissez sous la forme #QUELQUECHOSE.
Si vous faites votre propre boucle, vous pourrez définir vos paramètres d’entrée ainsi que les informations retournées.
Une boucle récupère le texte et toutes les informations de mise en forme contenues entre l’ouverture et la fermeture de la boucle. Si la boucle ressort des résultats, elle effectuera les substitutions présentes, sinon elle retournera une chaîne vide.
Pour créer votre propre boucle il faut d’abord créer la méthode boucle dans la classe de votre plugin. Elle a la signature suivante :
$texte contient la partie du template qui se situe entre l’ouverture de la boucle et sa fermeture
$args contient les paramètres d’entrée de la boucle
Pour lire les paramètres d’entrée, il faut utiliser la méthode lireTag qui prend en paramètre la variable dans laquelle doivent être recherchés les paramètres (donc dans le cas d’une boucle la variable $args), leurs noms et leurs types (int, string, etc).
Avec tous ces éléments, faisons maintenant notre boucle.
Elle aura en paramètre entrant l’id d’un produit et en paramètre de sortie l’id du commentaire, le titre et le message. Le paramètre entrant va nous permettre de construire la requête qui ira interroger la table commentaire du plugin. Si le paramètre id est vide, une chaine vide est retournée :
Comme vous l’avez remarqué, nous passons par une variable temporaire, le temps de faire les substitutions. Cela permet de ne pas perdre le texte original sans substitutions, sinon au deuxième tour de boucle les paramètres #QUELQUECHOSE ne seront plus présents.
La méthode query_liste est une autre méthode permettant de communiquer avec la base de données, elle prend en paramètre la requête et retourne un tableau. Chaque entrée du tableau représente une ligne de la table, sous forme d’objet. Il est possible de spécifier en deuxième paramètre le nom d’une classe à instancier et peupler avec les résultats.
Nous aurions donc pu passer "Commentaire" en second paramètre mais cela s’avère inutile dans notre cas, nous n’avons en effet pas l’utilité d’utiliser cette classe.
Nous pouvons à présent commencer à compléter notre fichier readme du plugin expliquant le fonctionnement de la boucle.
A vous de le faire et d’intégrer la boucle dans votre template !
Dans la prochaine partie, qui sera la dernière, nous verrons comment packager et soumettre un plugin sur l’espace de contribution. Nous verrons aussi quelques fonctions utiles que nous n’avons pas encore utilisées.
N’oubliez pas, vous pouvez vous aider du plugin sur github : https://github.com/thelia/commentaire
_
Beaucoup de marchands et d’agences utilisent Thelia, mais nous les connaissons peu.
C’est pourquoi nous avons choisi d’interviewer ces utilisateurs, de présenter leur boutique ou leur structure, et d’avoir leur retour d’expérience sur Thelia, leur activité, la gestion de leur boutique...
Si vous aussi vous souhaitez être interviewé contactez Stéphanie.
Bonjour Jérôme ! Tout d’abord pouvez-vous présenter votre agence ?
_
Bonjour ! L’agence web Meedle, se situe à Cormeilles-en-Parisis, à quelques kilomètres de Paris, elle est spécialisée dans la création de sites internet, de boutiques en ligne et de développements spécifiques (modules pour le ecommerce, systèmes de réservation, comparateurs de devis, etc.) mais aussi le marketing web avec notamment la création de pages Facebook, la gestion de communauté et tout ce qui touche aux réseaux sociaux (Twitter, Pinterest, Google+, etc.), l’optimisation pour le référencement naturel ainsi que les campagnes de mots-clés payants.
L’agence propose également la création de logos, chartes graphiques, et divers produits imprimés (du marque-pages aux affiches grand format).
Meedle existe depuis janvier 2007 et travaille en grande partie avec Thelia.
Sur quels types de projets travaillez-vous ?
Nous travaillons principalement sur la création de sites marchands, en général de A à Z. Mais le développement d’applications web spécifiques fait de plus en plus partie de notre quotidien. Tous nos projets web sont « Responsives » (Conception de sites web adaptatifs).
Quel est le profil des personnes de votre structure (infographiste / intégrateur / développeur) ?
Il y a 3 profils différents au sein de l’agence :
Jérôme : Chef de projet marketing / Réseaux sociaux / Patron
Anthony : Développeur
Kristelle : Webdesigner / Intégratrice
Depuis quand utilisez-vous Thelia ?
Nous utilisons Thelia depuis 2006, nous cherchions un CMS capable de nous laisser la liberté de créer notre propre html.
Comment avez-vous connu Thelia et pourquoi avoir choisi Thelia ?
Nous avons connu Thelia grâce à un ami, Mathieu Pasquini d’inlibroveritas.net(toujours à l’affût des nouveautés à tester dans le domaine du libre), nous avons testé et le test est toujours concluant ;)
Pourquoi Thelia ? La souplesse d’utilisation pour le client final, la facilité de créer des templates html pour le webdesigner, les possibilités quasi-infinies de développement de modules pour le développeur.
Qu’est-ce que cela vous apporte ?
Avez-vous suivi une formation Thelia ?
Nous avons « appris » à utiliser Thelia au fur et à mesure de son évolution sans passer par l’étape formation, car en lien étroit avec l’équipe de développement.
Utilisez-vous d’autres CMS ? Lesquels et pourquoi ?
Nous utilisons également Wordpress en complément de Thelia, soit pour mettre en place des blogs, CMS pour lequel Wordpress est au top, soit pour des petits sites basés sur des templates.
Pouvez-vous citer quelques unes de vos références ?
Différentes références (boutiques en ligne, sites internet, systèmes de réservation et comparateurs de devis) :
Chatelles, une marque de slippers pour femmes : www.mychatelles.com
Quai N°6, vente en ligne de meubles et décorations du monde : www.quai-no6.com
Arcs Freeride, réservation en ligne de matériel de ski : www.arcsfreeride.com
Transbahuter, comparateur de devis de déménageurs pour les particuliers : www.transbahuter.com
Quels sont vos projets à court et moyen terme ?
Les projets à court terme se portent sur des développements spécifiques sur lesquels nous aurons l’occasion de reparler (Sites de mariage, comparateurs de pièces automobiles, sites de pliages et découpages, etc.).
Sur le moyen terme, développer l’aspect réservations en ligne dont nous commençons à avoir une sérieuse expertise, notamment dans le domaine de l’aviation, le transport de personnes, la location de ski et la réservation de chambres d’hôtes.
Sur l’aspect plutôt « Marketing », nous allons continuer à développer, toujours à moyen terme le côté réseau social et gestion de communauté.
Merci Jérôme pour cette interview !
Pour en savoir plus sur Meedle rendez-vous sur www.meedle.fr.
Peu à peu nous allons migrer notre outil de versionning de sourceforge vers github. Sont déjà présents : l’admin en bootstrap, le modèle de Thelia 2 ainsi que le plugin servant de modèle pour le tuto
Le but de cet article n’est pas de vous apprendre à vous servir de git, il existe de très bonnes ressources pour cela comme sur le site du zéro ou bien pro git.
Le dépôt de Thelia sur github est à l’adresse suivante : https://github.com/thelia/
Quelle est la manière la plus efficace pour nous remonter des corrections, modifications, améliorations sur nos dépôts ?
Le plus simple et le plus efficace est de faire un fork du dépôt concerné, vous faites ainsi les modifications sur votre compte et vous nous proposez vos modifications grâce à la fonction Pull Request de github. Pour plus de détails, la documentation de github : https://help.github.com/
Pourquoi utiliser github plutôt que subversion ?
La principale raison est la possibilité de pouvoir contribuer simplement, comme détaillé ci-dessus. De cette manière, chacun peut nous faire remonter librement du code avec une intégration plus facile par rapport à ce qu’il est possible de faire actuellement sur subversion.
Le code actuel de Thelia sera-t-il migré sur github ?
Il n’est pas prévu pour l’instant de mettre le code sur github. En effet, nous avons mis en place un processus interne de développement qui ne nous force pas à migrer sur github.
Un répertoire dédié aux plugins verra-t-il le jour sur github ?
Il est possible que ce répertoire soit créé, en attendant rien ne vous empêche de mettre le code de vos plugins sur votre répertoire plugins.
Dans cette partie nous allons travailler sur la validation du formulaire précédemment créé, et voir de manière générale comment interagir avec les actions de l’admin.
Rappel partie 1 partie 2 Parties suivantes : partie 4 et partie 5
Le principal intérêt de développer un plugin est de pouvoir étendre les fonctionnalités du moteur de Thelia et de communiquer avec lui, sans toucher au code même de Thelia. De cette façon, pas de mauvaises surprises lors des mises à jours de Thelia, aucune modification ne risque d’être écrasée.
Une API est donc mise à disposition pour que le module interagisse avec le moteur. Nous allons voir ici quelles sont les interactions concernant le back-office.
Lors de la partie 2 vous avez réalisé un formulaire permettant de rajouter un commentaire à un produit. Dans la classe principale du plugin nous allons implémenter la méthode modprod, appelée à chaque fois qu’un produit est modifié. La méthode modprod reçoit en paramètre l’instance de la classe Produit qui vient d’être modifiée.
Vous pouvez consulter une liste des méthodes appelées lors d’action dans le back-office ici.
Il existe aussi des helpers permettant de récupérer les paramètres de la requête HTTP passés en méthode GET, POST ou les deux. Ils permettent de sécuriser les paramètres rentrants en les filtrant grâce à la librairie HTMLPurifier. Il s’agit de la fonction lireParam et voici sa définition :
$param est le nom de l’input recherché.
$filtre est le type du paramètre attendu (int, float, string, etc). Bien qu’optionnel, il est très fortement recommandé de l’utiliser.
$méthode est la méthode HTTP (GET, POST). Si non précisé la fonction ira chercher dans les deux tableaux GET et POST.
$purifier permet d’activer ou non le filtrage via HTMLPurifier. Par défaut il est activé et je vous déconseille vivement de le désactiver.
Avant de pouvoir enregistrer nos commentaires, il ne nous reste plus qu’à indiquer au moteur de Thelia le nom et les champs de notre table.
Pour cela nous allons nous servir des propriétés :
chaque champs de la table est une propriété de la classe
la propriété bddvars est un tableau contenant tous les champs de la table (ça fait un peu double emploi mais c’est nécessaire au bon fonctionnement du plugin)
la propriété $table qui contient le nom de la table.
Nous voilà prêts pour enregistrer nos commentaires :
Nous vérifions donc qu’un commentaire a été renseigné et si c’est le cas nous l’enregistrons. Si vous souhaitez faire d’autres contrôles je vous invite à le faire.
Il ne vous reste aujourd’hui plus qu’à lister les commentaires existants sur la fiche produit et gérer l’activation et la suppression. A vous de jouer ;-)
La semaine prochaine nous réaliserons la boucle qui affichera en front-office les commentaires validés.
Voici une liste non exhaustive des méthodes qui sont appelés lors d’action dans le back-office :
modprod(Produit $produit) appelé après la modification d’un produit.
modrub(Rubrique $rubrique) appelé après la modification d’une rubrique. Instance de la classe Rubrique modifiée passée en paramètre.
moddos(Dossier $dossier) appelé après la modification d’un dossier. instance de la class Dossier modifiée passée en paramètre.
modcont(Contenu $contenu) appelé après la modification d’un contenu. Instance la class Contenu modifiée passée en paramètre.
ajoutprod(Produit $produit) appelé après l’enregistrement d’un nouveau produit. L’instance de la classe Produit nouvellement créée est passée en paramètre
ajoutrub(Rubrique $rubrique) appelé après l’enregistrement d’une nouvelle rubrique. L’instance de la classe Rubrique nouvellement créée est passée en paramètre.
ajoutcont(Contenu $contenu) appelé après l’enregistrement d’un nouveau contenu. L’instance de la classe Contenu nouvellement créée est passée en paramètre.
ajoutdos(Dossier $dossier) appelé après l’enregistrement d’un nouveau dossier. L’instance de la classe Dossier nouvellement créée est passée en paramètre.
supprod(Produit $produit) appelé après la suppression d’un produit. L’instance de la classe Produit supprimée est passée en paramètre.
suprub(Rubrique $rubrique) appelé après la suppression d’une rubrique. L’instance de la classe Rubrique supprimée est passée en paramètre.
supcont(Contenu $contenu) appelé après la suppression d’un contenu. L’instance de la classe Contenu supprimée est passée en paramètre.
supdos(Dossier $dossier) appelé après la suppression d’un nouveau dossier. L’instance de la classe Dossier supprimée est passée en paramètre.
ajoutpromo(Promo $promo) appelé lors de l’enregistrement d’un code promo. L’instance de la classe Promo nouvellement créée est passée en paramètre.
majpromo(Promo $promo) appelé lors de la modification d’un code promo. L’instance de la classe Promo modifiée est passée en paramètre.
suppromo(Promo $promo) appelé lors de la suppression d’un code promo. L’instance de la classe Promo supprimée est passée en paramètre.
addvariable(Variable $variable) appelée lors de l’enregistrement d’une variable. L’instance de la classe Variable enregistrée est passée en paramètre.
modvariable(Variable $variable) appelée lors de la modification d’une variable. L’instance de la classe Variable modifiée est passée en paramètre.
delvariable(Variable $variable) appelée lors de la suppression d’une variable. L’instance de la classe Variable supprimée est passée en paramètre.
ajcaracteristique(Caracteristique $caracteristique) appelée lors de l’ajout d’une nouvelle caracteristique.
modcaracteristique(Caracteristique $caracteristique) appelée lors de la modification d’une caracteristique.
suppcaracteristique(Caracteristique $caracteristique) appelée lors de la suppression d’une caracteristique.
ajcaracdisp(Caracdisp $caracdisp) appelée lors de l’enregistrement d’une nouvelle caracdisp.
modcaracdisp(Caracdisp $caracdisp) appelée lors de la modification d’une caracdisp.
suppcaracdisp(Caracdisp $caracdisp) appelée lors de la suppression d’une caracdisp.
ajcaracteristique(Declinaison $declinaison) appelée lors de l’ajout d’une nouvelle déclinaison.
modcaracteristique(Declinaison $declinaison) appelée lors de la modification d’une declinaison.
suppcaracteristique(Declinaison $declinaison) appelée lors de la suppression d’une declinaison.
ajcaracdisp(Declidisp $declidisp) appelée lors de l’enregistrement d’une nouvelle declidisp.
modcaracdisp(Declidisp $declidisp) appelée lors de la modification d’une declidisp.
suppcaracdisp(Declidisp $declidisp) appelée lors de la suppression d’une declidisp.
ajoutdevise(Devise $devise) appelée lors de l’enregistrement d’une nouvelle devise.
moddevise(Devise $devise) appelée lors de la modification d’une devise.
suppdevise(Devise $devise) appelée lors de la suppression d’une devise.
ajoutclient(Client $client) appelée lors de la création d’un client.
modcli(Client $client) appelée lors de la modification d’un client.
supcli(Client $client) appelée lors de la suppression d’un client.
aprescommande(Commande $commande) appelée lors de la création d’une commande.
statut(Commande $commande, $ancienStatut) appelée lors du changement de statut d’un commande. Sont passés en paramètre la commande concernée ainsi que le code de l’ancien statut (le nouveau statut est dans l’instance de la classe Commande).
Il n’y a pas de suppression de commande, elles passent simplement au statut annulé.
Vous pouvez retrouver cette liste de points d’entrée sur le wiki
Grâce à tous ces points d’entrées vous allez pouvoir intéragir avec le back-office de Thelia de manière simple.
N’oubliez pas, en cas de soucis vous pouvez toujours vous aidez du plugin sur GitHub, enrichi à chaque partie du tuto : https://github.com/thelia/commentaire
Nous n’avons encore jamais pris position publiquement concernant la politique que nous appliquons aux licences des plugins réalisés par la communauté de Thelia.
Cette semaine, certains développeurs nous ont demandé si il était possible de réaliser des plugins pour Thelia mais de ne pas les placer sous licence GPL (ou compatible GPL).
Avant tout, nous souhaitons qu’un maximum de personnes utilise Thelia.
Nous aimerions bien sûr que les modules développés par la communauté respectent la licence initiale de Thelia, c’est à dire la licence GPL ou une licence compatible GPL.
Cependant si une personne ne souhaite pas le faire, il n’a jamais été question, et ce depuis la création de Thelia, d’organiser une chasse aux sorcières pour poursuivre les personnes qui n’utilisent pas la licence GPL.
Quand on nous demande sous quelle licence doit être un plugin fraîchement réalisé, nous répondons naturellement qu’il doit être sous licence GPL. Cependant, comme expliqué au-dessus, nous n’obligeons personne à le faire.
Pour clarifier la situation, nous avons décidé que les plugins proposés sur l’espace de contribution de Thelia devront tous être accompagnés d’une licence GPL. Si le plugin n’est pas sous licence GPL il devra être hébergé par la personne qui l’a développé.
Nous ne faisons que clarifier un point qui existe déjà, car oui il existe des plugins qui ne sont pas diffusés via le site thelia.net, et oui il existe des plugins pour Thelia qui ne sont pas sous licence GPL.
Nous souhaitons à tous un excellent développement, en espérant que vous aurez beaucoup de plaisir à travailler sur Thelia !
Dans le cadre des tutos "Créer un module pour Thelia" voici un mémo sur l’héritage des Classes Thelia.
Dans cette partie nous allons automatiser l’installation du plugin et mettre en place les premières interfaces dans l’admin.
Rappel partie 1 Parties suivantes : partie 3 , partie 4 et partie 5
Lors de l’activation d’un plugin, il peut être intéressant d’automatiser certaines actions comme : la création d’une ou plusieurs tables liées au plugin, l’enregistrement de données dans les tables existantes de Thelia ou encore la création de dossiers.
Pour réaliser ces actions, Thelia doit exécuter la méthode init présente dans la classe du plugin.
Dans le cadre du plugin en cours de développement, nous devons créer une table pour enregistrer les commentaires. Cette table aura la structure suivante :
Si vous utilisez des outils comme mysql workbench, vous pouvez directement exporter le SQL permettant la création de la table. Pour cela créez la méthode init et initialisez une variable avec l’instruction SQL :
La classe PluginsClassiques hérite des classes Cnx et Requete, qui permettent de réaliser des opérations sur la base de données.
La méthode query utilisée précédemment fait partie de ces méthodes et permet d’exécuter une instruction SQL. Le second paramètre à true va permettre de soulever une exception si une erreur est rencontrée lors de l’exécution de la requête.
La méthode équivalente existe pour la désactivation d’un plugin. Il s’agit de la méthode destroy qui permet d’automatiser des traitements. Il est donc possible de prévoir la suppression de la table créée lors de la désactivation du plugin.
J’ai pris pour habitude de ne pas le faire, pour plusieurs raisons et la principale est qu’il arrive souvent qu’un commerçant désactive un plugin puis le réactive, les données ayant donc disparues. A vous de voir donc ce que vous souhaitez faire.
Ensuite, activez votre plugin et vérifiez que la table est bien présente dans votre base MySQL.
Nous pouvons à présent créer les écrans dans l’interface d’administration. Le back-office de Thelia n’est pas fait sous forme de templates. Pour rajouter des interfaces dans l’admin, il existe des hooks, points d’entrée permettant d’inclure des fichiers à des endroits précis dans l’admin. Il faut créer un fichier pour chaque hook.
Comment utiliser ces hooks ?
C’est assez facile, il suffit de respecter une règle de nommage pour tous les fichiers de votre plugin :
nomplugin_admin.php sera inclus dans la partie "Modules" de l’admin.
nomplugin_admin_produitmodifier.php sera intégré dans la fiche produit.
nomplugin_admin_rubriquemodifier.php sera inclus sur une fiche rubrique.
Vous trouverez la liste exhaustive des hooks (points d’entrées) sur le wiki
Maintenant que nous savons comment nommer les différents fichiers et quels seront les éléments à intégrer, revenons à la création du plugin et passons à l’ajout du formulaire de commentaire sur la fiche produit. Il nous faut d’abord créer le fichier commentaire_admin_produitmodifier.php.
Ensuite, avant même d’intégrer le formulaire, nous allons régler les autorisations pour chaque administrateur. Ainsi, vous pourrez autoriser tout ou partie des administrateurs à accéder à ce module.
Le premier code à intégrer est donc le suivant :
Notez qu’il n’est pas nécessaire de redéclarer la balise form, le plugin sera inclus dans le form général de la fiche de modification du produit.
Je vous laisse maintenant intégrer le formulaire de commentaire dans votre fichier commentaire_admin_produitmodifier.php, et vous rendre compte par vous-même de l’inclusion sur la fiche produit.
La semaine prochaine, nous verrons comment intégrer la validation du formulaire.
Si vous rencontrez des soucis, aidez-vous du plugin sur GitHub, il est enrichi à chaque partie du tuto : https://github.com/thelia/commentaire
Pour lire la suite, rendez-vous sur la partie 3 du tuto
Nous vous avons annoncé en septembre la création de Thelia 2. Il est temps de faire aujourd’hui un premier retour sur l’avancement.
Après une phase de réflexion et d’analyse, nous pouvons dressé un premier bilan de ce que sera Thelia 2 et de sa structure.
Comme vous avez pu le remarquer dans l’article annonçant la version 2 de Thelia, nous allons nous appuyer sur des briques logiciels existantes, stables et éprouvées.
Voici une première liste de ces composants :
Symfony http-kernel
Symfony http-foundation
Symfony dependency-injection
Symfony event-dispatcher
Propel ORM (v 1.6)
Cette liste de composants est loin d’être figée et évoluera.
Nous avons aussi fait le choix de suivre les bonnes pratiques mises en places par le php-fig, pas forcément à la lettre mais en grande partie. Le logger actuel de Thelia est intégré dans Thelia 2 et compatible avec la PSR3
Le choix de la gestion de la base de données n’a pas été simple à prendre. Plusieurs solutions ce sont présentées à nous. Nous avons finalement opté pour Propel qui nous semble activement maintenu et son utilisation est appropriée avec Thelia.
Le modèle de Thelia ainsi que l’utilisation que nous allons en faire via Propel est publié sur notre compte GitHub : https://github.com/thelia/model. Je vous invite donc à installer mysql workbench ainsi que PropelUtility pour voir les behaviour de Propel utilisés.
Concernant la publication du code de Thelia 2 en lui même, il est prévu de le mettre sur GitHub le plus vite possible, mais nous n’avons pas encore de date à communiquer.
Nous vous proposons désormais l’espace Contributeurs : soumettez vous-même vos plugins et gérez leurs évolutions !
Nous avons choisi de simplifier le système de soumission de plugins et de le rendre plus complet. L’objectif étant d’avoir des informations précises pour chacun des plugins, et de gérer le suivi des mises à jour.
Pour soumettre un module il suffit de se créer un compte utilisateur, de compléter les informations relatives au module, et d’envoyer le dossier.
Attention, le format du fichier plugin.xml a changé et est désormais obligatoire. La documentation est sur notre wiki.
La maintenance des plugins se fait directement via votre interface de contribution. Vous pourrez mettre à jour vous-même vos modules, les descriptions, compatibilités...
N’hésitez pas à vous inscrire sur notre espace de contribution et à envoyer vos plugins !