Les modules ProcessWire vous permettent d'étendre les fonctionnalités de l'administrateur du système de gestion de contenu, d'ajouter de nouvelles intégrations d'API et, en général, de surpucher votre site. Je me retrouve souvent à chercher la page des modules ProcessWire (PW) pour voir s’il existe une solution préconfigurée à mon problème actuel; et généralement la réponse est oui!
Cependant, lorsque vous devez créer quelque chose de nouveau, PW, comme ses modèles, vous donne la puissance de son API avec PHP..
Dans ce didacticiel, nous allons apprendre à créer et à installer des modules, à examiner leurs exigences et à expliquer comment utiliser des points d'ancrage PW pour ajouter des fonctionnalités à d'autres fonctions de votre site..
Il est important de savoir comment installer un module si ce n'est déjà fait. En suivant cette procédure, vous verrez où les informations et la configuration de votre module s'afficheront, comment désinstaller ce module et quels modules installés pourraient être étendus..
/ site / modules /
.Commençons par créer un nouveau module. PW n'a besoin que de quelques éléments de votre module:
getModuleInfo ()
méthode, ou un fichier “ModuleName.info.php” ou un “ModuleName.info.json” dans votre dossier de module. Cette méthode offre des informations sur votre module à afficher dans l'admin.class HelloUserYouSaved étend WireData implémente le module fonction statique publique getModuleInfo ()
À travers le étend WireData
J'ai donné à mon nouveau module l'accès à l'API PW et aux méthodes héritées de WireData.
Notre module est assez ennuyeux en ce moment, ajoutons quelques informations sur le module afin que les autres utilisateurs puissent voir ce qu'il fait..
class HelloUserYouSaved étend WireData implémente le module public static function getModuleInfo () return array ('title' => "HelloUserYouSaved", 'version' => "0.0.1", 'summary' => "HelloUserYouSaved affiche les messages après les actions dans PW ", 'author' =>" Ben Byford ", 'href' =>" https://github.com/benbyford/PW-starter-modules/tree/master/HelloUserYouSaved ", 'icon' =>" cloche ", // utilise autoload si le module doit être appelé à chaque chargement, s'il est uniquement nécessaire de configurer quelque chose défini sur false 'autoload' => true, 'singular' => false, 'require' => "ProcessWire> = 2.5", )
Pour une liste complète des options, voir la référence du module. résumé
, version
et Titre
sont obligatoires, mais il est également conseillé d'ajouter les exigences de votre module, singulier (true si true, une seule copie de ce module est autorisée par installation PW), et autoload (true pour appeler le module à chaque requête)..
Pour tous les modules (même les modules de base) dans PW, vous pouvez créer des fonctions pouvant être raccordées pour permettre le déclenchement d'autres méthodes de module lors de leur utilisation. Par exemple, nous pouvons créer un hook qui déclenche une nouvelle méthode ___helloMessage
chaque fois qu'une page est enregistrée avec PW. Vous pouvez savoir quelles méthodes sont utilisables, car elles ont trois caractères de soulignement avant leur nom, ce qui signifie que notre nouvelle méthode est également utilisable par d'autres modules..
public function init () // ajoute un raccord dans la classe et pointe vers la fonction personnalisée helloMessage $ this-> addHookAfter ("Pages :: save", $ this, "helloMessage"); Parent :: init (); public function ___ helloMessage ($ event) // Obtient l'objet de page à enregistrer prochainement à partir de l'événement donné $ page = $ event-> arguments [0]; // utilise message () pour envoyer une alerte à PW // une alerte sera affichée après l'enregistrement de la page d'administration. $ this-> message ("Bonjour $ this-> utilisateur-> nom! Vous avez enregistré $ page-> nom.");
Dans le code ci-dessus, vous pouvez voir comment nous ajoutons un raccord au module central Pages qui se déclenche après la méthode save, qui appelle notre ___helloMessage
méthode. Nous avons la possibilité d’ajouter des hooks avant ou après l’utilisation de la méthode: $ this-> addHookBefore ()
et $ this-> addHookAfter ()
respectivement. Comme nous allons envoyer un message à l'utilisateur une fois la page enregistrée, nous utilisons le crochet après variation.
Les points d'ancrage sont partout dans PW, et une fois que vous avez réussi à vous en servir, vous pouvez vous accrocher à la plupart des parties du système pour modifier le comportement par défaut ou en créer un nouveau. Voici une liste des modules de base et leurs méthodes d'accrochage.
Le code source complet de notre module «HelloUserYouSaved» est disponible sur GitHub..
Vous pouvez également utiliser des modules pour exporter des données ou des balises dans vos modèles. Toute fonction publique disponible dans votre module peut être appelée dans les modèles pour générer un résultat. Par exemple, le module MarkupTwitterFeed peut être utilisé pour générer des tweets en ajoutant ce code à votre modèle:
$ t = $ modules-> getModule ('MarkupTwitterFeed'); echo $ t-> render ();
Le code ci-dessus utilise le getModule ()
méthode et stocke l'objet de sorte que le rendre()
fonction peut être utilisé.
Dans ce second module “FrontEndRender” une fonction nommée rendre()
est mis en œuvre que nous pouvons utiliser plus tard dans nos modèles pour retourner Bonjour et une variable protégée $ name
.
La classe FrontEndRender étend WireData implémente le module public static function getModuleInfo () return array ('title' => 'FrontEndRender', 'version' => 0.1, 'summary' => "Génère des variables html et statiques vers frontend", "author '=>' Ben Byford ',' singular '=> vrai,' href '=>' https://github.com/benbyford/PW-starter-modules '); // Variable protégée accessible uniquement dans le module protected $ name = 'Ben'; fonction publique render () return "Hello". $ this-> name;
Nous pouvons reproduire le résultat n'importe où dans notre code de modèle (notre fichier «_main.php», par exemple) en utilisant:
$ FrontEndRender = $ modules-> getModule ('FrontEndRender'); écho ''. $ FrontEndRender-> render (). '
';
Le code source complet pour notre “FrontEndRender ”peut être trouvé sur GitHub.
Dans ce didacticiel, nous avons examiné l’installation et la création de modules simples dans ProcessWire. Nous avons également implémenté un hook et rendu le contenu sur le front-end en utilisant nos modules personnalisés..
Il y a beaucoup plus à dire sur les modules alors restez à l'écoute pour plus de tutoriels sur la fabrication de modules PW, et trouvez plus d'informations sur les modules dans les ressources ci-dessous.