Thelia 2 est maintenant disponible. Retrouvez toutes les informations ici
Thelia 2 is now available. Find all the information here

Comment créer un module Thelia - partie 2

Le blog TheliaFlux rss


< Thelia 2, où en sommes-nous ? Mémo : Les héritages de Classes Thelia >
2013
4
février

Comment créer un module Thelia - partie 2

par Manuel Raynaud

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 :

PNG - 9.6 ko
modèle commentaire

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 :

  1. public function init()
  2. {
  3.     $query = "CREATE  TABLE IF NOT EXISTS`commentaire` (
  4.  `id` INT NOT NULL AUTO_INCREMENT ,
  5.  `titre` VARCHAR(255) NULL ,
  6.  `message` TEXT NULL ,
  7.  `actif` INT NULL ,
  8.  `produit_id` INT NULL ,
  9.  PRIMARY KEY (`id`) );";
  10.     $this->query($query, true);
  11. }

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 :

  1. <?php
  2. require_once(__DIR__ . '/../../../fonctions/authplugins.php');
  3. autorisation("commentaire");
  4. ?>

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

tags : trucs et astuces


Ajouter un commentaire

Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.

Le forum
Thelia

Aller au forum

Les réseaux
sociaux

Google+

Nos
partenaires



Contactez
Thelia


Pour toutes questions concernant Thelia, vous pouvez nous contacter :

contacter Thelia par téléphone par téléphone au 04 44 05 31 00

Contacter Thelia e-maiol par mail à l'adresse info@thelia.net

April Oséo FEDER