Déclarer des hooks contextuellement dans un plugin

Salut tout est dans le titre.

Je voudrais déclarer des hook uniquement dans le cas d'édition des pagers statiques, articles, catégories.

Voila ce que je fais dans le construct de mon plugin :
[== Indéfini ==]
# Déclarations des hooks
		if(defined('PLX_ADMIN')) {
			$checkadminpage = $_SERVER['REQUEST_URI'];
			if(preg_match('/(article.php\?a=)/', $checkadminpage) ||  preg_match('/(statique.php\?p=)/', $checkadminpage) || preg_match('/(categorie.php\?p=)/', $checkadminpage)) {
				$this->addHook('AdminPrepend', 'AdminPrepend');
				$this->addHook('AdminTopEndHead', 'AdminTopEndHeadVIW');
				$this->addHook('AdminFootEndBody', 'AdminFootEndBody');
			}
		}

Si quelqu'un a mieux je suis preneur.

a+

jéjé

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut Jérôme

    j'aurais fait un truc tout simple pour le test dans le regex
    if(preg_match('/(article|statique|categorie)/', basename($_SERVER['SCRIPT_NAME']))) 
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • mementomemento Member
    Bonsoir,
    si je peux me permettre, je n'aurai pas utiliser une expression régulière pour faire ce type de test car c'est très lent et très gourmand en terme de ressources. La fonction php strpos() fait le même travail beaucoup plus vite et pour un moindre coût.
    [== PHP ==]
    # Déclarations des hooks
    		if(defined('PLX_ADMIN')) {
    			$checkadminpage = basename($_SERVER['SCRIPT_NAME']);
    			if(strpos($checkadminpage, 'article.php?a=') !== false ||  strpos($checkadminpage, 'statique.php?p=') !== false || strpos($checkadminpage, 'categorie.php?p=') !== false) {
    				$this->addHook('AdminPrepend', 'AdminPrepend');
    				$this->addHook('AdminTopEndHead', 'AdminTopEndHeadVIW');
    				$this->addHook('AdminFootEndBody', 'AdminFootEndBody');
    			}
    		}
    
    Cordialement
  • Je vais voir ça. Merci vous deux.
Connectez-vous ou Inscrivez-vous pour répondre.