Utiliser staticInclude dans le moteur

Je vous copie-colle un tweet que j'ai envoyé à pluxml et je vous détaille le pq du comment.

--- le hook 'plxShowStaticInclude ' est dans la fct staticInclude de plx.show mais celle ci n'est jamais utilisée ? :( ---

J'ai croisé ici et là sur le forum (et après réponse à mon tweet) que cette fonction était faite uniquement pour les développeurs de thèmes afin d'inclure une page statique prédéfinie.

Mais voilà le hook prévu dedans pourrait être très pratique pour le développement de plugins.
Cela nous permettrait de capturer certains id de pages statiques et les utiliser pour lancer des fonctionnalités/une page dédiée des plugins.

En l'occurence j'avais avant une page de recherche en tant que page statique (cfr le wiki), on pourrait décider que si l'id de la page == 999 alors il redirige sur la page de recherche integrée au plugin, sans obliger l'installation d'une page statique en plus.


Si je suis pas clair où que vous avez la moindre question, n'hésitez pas ;)

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    La fonction staticInclude est disponible pour celui qui en a besoin.
    Elle permet en effet d'afficher le contenu d'un page statique dans un coin de son site (la sidebar par exemple).
    Le hook plxShowStaticInclude (comme tout les hooks) permet de faire de nombreuses choses, tout dépend de la visibilité de la fonction au moment où elle est appelée. Elle permet (en autre) d'acceder aux variables de la classe plxMotor.
    Sinon l''exemple que tu cites (id page==999) ne pose aucun problème à faire. le hook est fait pour ce genre de chose.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Oui, mais ce n'est pas la fonction qui est utilisée par le moteur qui permet l'utilisation du hook concerné justement.
    Et créer un plugin (dans mon cas) de recherche et devoir qd mm créer une page statique faisant appel à la bonne fonction pour avoir le hook qui permet la fonctionnalité me parait être un peu à l'opposé du principe d'un plugin.

    Et le hook actuellement en place dans la fonction utilisée par le moteur ne permet pas d'interrompre le traitement de la fonction.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    return true;
    
    dans le code de ton plugin permet d'interrompre la fonction de PluXml à partir du hook plxShowStaticInclude.
    cf la doc sur les plugins pour interrompre une fonction

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • J'ai lu la doc, la fonctionnalité pour bloquer je l'utilise ailleurs, c'est juste que le hook en question, ne permet pas ce blocage. il n'y a pas de if() return autour de l'eval. et de plus celui là ne reçoit pas l'id de la page statique en paramètre
  • StéphaneStéphane Member, Former PluXml Project Manager
    	public function staticInclude($id) {
    		# Hook Plugins
    		if(eval($this->plxMotor->plxPlugins->callHook('plxShowStaticInclude'))) return ;
    		# On génère un nouvel objet plxGlob
    		$plxGlob_stats = plxGlob::getInstance(PLX_ROOT.$this->plxMotor->aConf['racine_statiques']);
    		if($files = $plxGlob_stats->query('/^'.str_pad($id,3,'0',STR_PAD_LEFT).'.[a-z0-9-]+.php$/')) {
    			include(PLX_ROOT.$this->plxMotor->aConf['racine_statiques'].$files[0]);
    		}
    	}
    

    il y a bien le if
    		# Hook Plugins
    		if(eval($this->plxMotor->plxPlugins->callHook('plxShowStaticInclude'))) return ;
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    et l'id de la page est bien accessible
    si à partir de ton plugin tu fais
    echo "<?php echo $id; die; ?>";
    
    tu verras que l'id de la page passée en paramètre de la fonction staticInclude est affiché

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • oui mais ce n'est pas cette fonction qui est utilisée par le moteur!
  • StéphaneStéphane Member, Former PluXml Project Manager
    Ben oui elle a été développée pour ça, c'est le but aussi de PlxShow qui s'occupe de l'affichage. Les fonctions de cette classe ne sont pas utilisées par le core de PluXml, mais c'est l'inverse. Et si je reprend tes premieres questions, j'ai déjà répondu: tout ce que tu veux faire est faisable, que staticInclude soit utilisée ou non pas le core. Je crois que tu cherches compliqué alors que cela ne l'est pas

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • lgnaplgnap Member
    novembre 2012 modifié
    Ok, si tu le dis ;) merci pr tes réponses en tt cas
Connectez-vous ou Inscrivez-vous pour répondre.