Introduction
Je suppose que vous connaissez dotclear 2, et évidemment que vous connaissez php. L'écriture d'un plugin a le gros avantage de pouvoir ajouter des fonctionnalités sans toucher au coeur de l'application.
Dans dotclear, les plugins vivent dans le répertoire plugins de l'application, à savoir dans le répertoire dotclear/plugins (répertoire défini par la constante DC_PLUGIN_ROOT située dans le fichier de configuration inc/config)si vous n'avez pas renommer le répertoire d'installation.
On va donc créer un sous répertoire dans ce répertoire que l'on appelera aboutPage. Désormais, tous les fichiers ou répertoires que nous ajouterons seront dans ce répertoire aboutPage.
Déclaration du plugin
La déclaration du plugin auprès de dotclear va se faire à travers un fichier _define.php. On retrouve ce même fichier de déclaration dans les thèmes. Il a la structure suivante:
<?php
$this->registerModule(
"aboutPage",
"Gestion de la page about",
"Nicolas",
'0.0.1',
'usage,contentadmin'
);
?>
On retrouve en premier paramètre de la méthode registerModule , le nom du plugin (le nom du répertoire pour faire simple même si ce n'est pas lié), en deuxième paramètre un bref descriptif qui apparaîtra sur la page listant les modules installés, en troisième l'auteur, en quatrième la version et pour terminer les permissions (les permissions définies ici signifie que le plugin sera chargé par n'importe quel utilisateur pouvant se connecter sur l'interface d'administration). En fait il y a un cinquième argument qui est la priorité mais que l'on va oublier pour le moment. Et c'est tout. Si on va sur la page listant les plugins, on va voir apparaître le plugin avec son nom, sa version et sa brève description. Facile, non ?
Interface publique
Pour le moment, le plugin ne fait absolument rien! Nous allons déclarer la page about, de la même manière que les pages post, tags ou category. Cette déclaration se fait dans un fichier _public.php.
<?php
$core->url->register('about','about','^about','aboutCallBack');
function aboutCallBack($args) {
echo "A propos";
exit();
}
?>
Ce code est un peu plus complexe mais reste encore assez simple ! La méthode register de l'object $core->url attend 4 paramètres qui sont respectivement l'identifiant unique de l'url, la forme de base de l'url, une expression régulière permettant de reconnaître l'url (ici elle est simple car on n'attend aucun paramètre, juste about) et pour terminer la fonction (fonction dite de callBack) à appeler si l'url est reconnue.
Mais pour que cette page soit déclarée "proprement" avec les autres (post, search, tags,...) et bénéficient des autres méthodes de l'application, on va définir une classe qui va hériter de la classe dcUrlHandlers. Pour pouvoir utiliser une méthode de callback au lieu d'une fonction, on utilise un tableau. Pour le reste cela ne change rien:
<?php
$core->url->register('about','about','^about',array('urlAboutpage','about'));
class urlAboutpage extends dcUrlHandlers
{
public static function about($args) {
echo "A propos";
exit();
}
}
?>
En pièce jointe, vous trouverez une archive contenant les deux fichiers crées (_define.php et _public.php)
1 De Moe -
Tu sais qu'il existe déjà un guide pour créer un plugin ? http://doc.dotclear.net/2.0/resourc...
2 De Nicolas -
Oui je sais mais il faut quand même avouer que ce n'est pas très complet ! J'ai l'intention d'écrire plusieurs article pour arriver à couvrir l'ensemble de la création de mon plugin.
3 De fabrice -
Bonne initiative, ce tutoriel !!!
Et merci pour ton premier plugin, vite adopté !!
4 De Nicolas -
@fabrice: merci. Si tu as des idées pour améliorer le plugin, je suis ouvert.
Concernant le tutoriel, j'espère pouvoir écrire une deuxième partie ce weekend!!