Les hooks

Qu’est-ce qu’un hook ?

Le moteur de plugin de PluXml repose sur un système de hooks (« crochets » en français) permettant d’injecter du code php, html, javascript dans celui de PluXml.

Ces parties sont identifiables dans le code de PluXml par l’appel de la méthode callHook.

Exemple 1 : dans les fichiers core

<?php
  eval($this->plxPlugins->callHook('plxMotorConstruct'));
?>

Exemple 2 : dans les fichiers core

<?php
  if(eval($this->plxMotor->plxPlugins->callHook('plxShowPagination'))) return;
?>

Exemple 3 : dans les fichiers de l’administration

<?php
  eval($plxAdmin->plxPlugins->callHook('AdminTopEndHead'))
?>

Exemple 4 : dans les fichiers thèmes

<?php
  eval($plxShow->callHook('PluginTest')))
?>

Utilisation des hooks

C’est donc la méthode callHook de la classe plxPlugins (fichier core/lib/class.plx.plugins) qui sert à définir les endroits du code de PluXml qui pourront être « hookés ».

La méthode callHook accepte 2 paramètres :

  • le nom du hook appelé (obligatoire).

  • un ou plusieurs paramètres passés à la fonction du hook appelé (option)

Le nom des hooks est normalisé de la façon suivante :

<nom du fichier/classe><nom de la méthode><nom de l’emplacement>

Exemples :

plxShowPagination

Fichier : core/lib/class.plx.show.php
Class : plxShow
Méthode : pagination()

plxMotorConstruct

Fichier : core/lib/class.plx.motor.php
Class : plxMotor
Méthode : __construct()

plxAdminEditUsersUpdate

Fichier : core/lib/class.plx.admin.php
Class : plxAdmin
Méthode : editUsers()
Emplacement : Update, partie de mise à jour des utilisateurs

AdminTopEndHead

Fichier : core/admin/top.php
Méthode : Header du fichier (balises </head>)

Liste des hooks

Cette liste peut être modifiée et complétée en fonction des évolutions de PluXml.

/core/admin/article.php

AdminArticleContent
AdminArticleFoot
AdminArticleInitData
AdminArticleParseData
AdminArticlePostData
AdminArticlePrepend
AdminArticlePreview
AdminArticleSidebar
AdminArticleTop

/core/admin/auth.php

AdminAuthPrepend
AdminAuthEndHead
AdminAuthTop
AdminAuth
AdminAuthEndBody
AdminAuthBegin
AdminAuthTopLostPassword
AdminAuthLostPassword
AdminAuthTopChangePassword
AdminAuthChangePassword
AdminAuthTopChangePasswordError
AdminAuthChangePasswordError

/core/admin/categorie.php

AdminCategoryPrepend
AdminCategoryTop
AdminCategory
AdminCategoryFoot

/core/admin/categories.php

AdminCategoriesPrepend
AdminCategoriesTop
AdminCategoriesFoot

/core/admin/comment.php

AdminCommentPrepend
AdminCommentTop
AdminComment
AdminCommentFoot

/core/admin/comments.php

AdminCommentsPrepend
AdminCommentsTop
AdminCommentsPagination
AdminCommentsFoot
AdminCommentNewPrepend
AdminCommentNewTop
AdminCommentNew
AdminCommentNewList
AdminCommentNewFoot

/core/admin/foot.php

AdminFootEndBody

/core/admin/index.php

AdminIndexPrepend
AdminIndexTop
AdminIndexPagination
AdminIndexFoot

/core/admin/medias.php

AdminMediasPrepend
AdminMediasTop
AdminMediasFoot
AdminMediasUpload

/core/admin/parametres_affichage.php

AdminSettingsDisplayTop
AdminSettingsDisplay
AdminSettingsDisplayFoot

/core/admin/parametres_avances.php

AdminSettingsAdvancedTop
AdminSettingsAdvanced
AdminSettingsAdvancedFoot

/core/admin/parametres_base.php

AdminSettingsBaseTop
AdminSettingsBase
AdminSettingsBaseFoot

/core/admin/parametres_edittpl.php

AdminSettingsEdittplTop
AdminSettingsEdittpl
AdminSettingsEdittplFoot

/core/admin/parametres_infos.php

AdminSettingsInfos

/core/admin/parametres_plugins.php

AdminSettingsPluginsTop
AdminSettingsPluginsFoot

/core/admin/parametres_themes.php

AdminThemesDisplay
AdminThemesDisplayFoot
AdminThemesDisplayTop

/core/admin/parametres_users.php

AdminSettingsUsersTop
AdminSettingsUsersFoot

/core/admin/prepend.php

AdminPrepend

/core/admin/profil.php

AdminProfilPrepend
AdminProfilTop
AdminProfil
AdminProfilFoot

/core/admin/statique.php

AdminStaticPrepend
AdminStaticTop
AdminStatic
AdminStaticFoot

/core/admin/statiques.php

AdminStaticsPrepend
AdminStaticsTop
AdminStaticsFoot

/core/admin/top.php

AdminTopEndHead
AdminTopMenus
AdminTopBottom

/core/admin/user.php

AdminUserPrepend
AdminUserTop
AdminUser
AdminUserFoot

/core/lib/class.plx.admin.php

plxAdminConstruct
plxAdminEditConfiguration
plxAdminHtaccess
plxAdminEditProfil *
plxAdminEditProfilXml
plxAdminEditUsersUpdate
plxAdminEditUsersXml
plxAdminEditUser
plxAdminEditCategoriesNew
plxAdminEditCategoriesUpdate
plxAdminEditCategoriesXml
plxAdminEditCategorie
plxAdminEditStatiquesUpdate
plxAdminEditStatiquesXml
plxAdminEditStatique
plxAdminEditArticle *
plxAdminEditArticleXml
plxAdminDelArticle */core/lib/class.plxfeed.php
plxFeedConstruct
plxFeedPreChauffageBegin *
plxFeedPreChauffageEnd
plxFeedDemarrageBegin *
plxFeedDemarrageEnd
plxFeedRssArticlesXml
plxFeedRssCommentsXml
plxFeedAdminCommentsXml

/core/lib/class.plx.motor.php

plxMotorConstruct
plxMotorPreChauffageBegin *
plxMotorPreChauffageEnd
plxMotorDemarrageBegin *
plxMotorDemarrageEnd
plxMotorDemarrageNewCommentaire
plxMotorDemarrageCommentSessionMessage
plxMotorGetCategories
plxMotorGetStatiques
plxMotorGetUsers
plxMotorParseArticle
plxMotorParseCommentaire
plxMotorRedir301
plxMotorNewCommentaire *
plxMotorAddCommentaire *
plxMotorAddCommentaireXml
plxMotorSendDownload *

/core/lib/class.plx.show.php

plxShowConstruct
plxShowPageTitle *
plxShowMeta *
plxShowLastCatList *
plxShowArtTags *
plxShowArtFeed *
plxShowLastArtList *
plxShowComFeed *
plxShowLastComList *
plxShowStaticListBegin *
plxShowStaticListEnd *
plxShowStaticContentBegin*
plxShowStaticContent
plxShowStaticInclude *
plxShowPagination *
plxShowTagList *
plxShowArchList *plxShowPageBlog *
plxShowTagFeed *
plxShowTemplateCss *
plxShowCapchaQ *
plxShowCapchaR *

/index.php

Index
IndexBegin
IndexEnd

/sitemap.php

SitemapStatics
SitemapCategories
SitemapArticles
SitemapBegin
SitemapEnd

/feed.php

FeedBegin
FeedEnd

Hooks des thèmes

ThemeEndHead
ThemeEndBody

* Hooks acceptant une valeur de retour permettant d’interrompre l’exécution du code suivant l’appel du hook. Voir chapitre « Interrompre une fonction de PluXml ».

Création d’un hook

Ajouter un hook

L’ajout d’un hook se fait par l’instruction

$this->addHook

Exemple :

$this->addHook('AdminTopEndHead', 'AdminTopEndHead');
  • 1er paramètre : nom du hook tel qu’il est défini dans la liste des hooks disponibles.

  • 2ième paramètre : nom de la méthode à exécuter lorsque le hook est appelé. Cette méthode fait partie de la classe du plugin.

Exemple :

<?php
    class test extends plxPlugin {
        public function __construct($default_lang) {
            # Appel du constructeur de la classe plxPlugin (obligatoire)
            parent::__construct($default_lang);
            # Déclaration des hooks
            $this->addHook('AdminTopEndHead', 'AdminTopEndHead');
        }
        public function AdminTopHead() {
            echo '<script src="'.PLX_PLUGINS.'test/test.js"></script>';
        }
    }
?>

Dans cet exemple, le hook va ajouter dans le fichier core/admin/top.php le code suivant avant la balise </head>

<script src="../../plugins/test/test.js"></script>

Note

Il est conseillé de nommer la méthode avec même nom que le hook.