<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hook — Forum de PluXml</title>
        <link>https://forum.pluxml.org/index.php?p=/</link>
        <pubDate>Mon, 18 May 2026 18:35:03 +0000</pubDate>
        <language>fr</language>
            <description>hook — Forum de PluXml</description>
    <atom:link href="https://forum.pluxml.org/index.php?p=/discussions/tagged/hook/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>[résolu][plugins] plugin et hook à partir d'un thème sans passer par la case installation.</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7366/resolu-plugins-plugin-et-hook-a-partir-dun-theme-sans-passer-par-la-case-installation</link>
        <pubDate>Thu, 16 Feb 2023 21:54:01 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7366@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour,</p>

<p>Quelle serait la méthode pour ajouter un plugin "<sup>virtuel ou non</sup>"  à la liste des plugins actifs de Pluxml  à partir d'un template du thème actif ou d'une page statique pour un usage ponctuel ?</p>

<p>L'idée ici est par exemple de se servir du hook <code>plxShowPagination</code> de façon à pouvoir remplacer la structure HTML produite par la fonction $plxShow-&gt;pagination() .</p>

<p>Cela permettrais par exemple d'utiliser des snippet HTML de framework tel que bootstrap (structure ou class) ,  utiliser les icones de fontawesome à la place du code servit par PluXml et uniquement pour un thème donné.</p>

<p>Cette fonction ne dispose pas d'une variable $format comme on peut trouver dans d'autre fonction mais elle dispose d'un hook <img src="https://forum.pluxml.org/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>Pour le moment j'ai  <code>$plxShow-&gt;plxMotor-&gt;plxPlugins-&gt;aHooks['plxShowPagination'][] =  array( 'class' =&gt; 'MyTheme', 'method' =&gt; 'plxShowPagination');</code>  qui ne me sert pas à grand chose .  La class Mytheme n'existe pas et elle devrait quand même être construite sur plxPlugin. Suffirait-il de la créer dans un fichier annexe au thème et de l'inclure au chargement de la page ?</p>

<p>Cdt</p>
]]>
        </description>
    </item>
    <item>
        <title>[RESOLU]intégration plugin comme page statique bénéficiant de la variable $format</title>
        <link>https://forum.pluxml.org/index.php?p=/discussion/7134/resolu-integration-plugin-comme-page-statique-beneficiant-de-la-variable-format</link>
        <pubDate>Wed, 09 Feb 2022 22:09:50 +0000</pubDate>
        <category>Entraide</category>
        <dc:creator>gcyrillus-nomade</dc:creator>
        <guid isPermaLink="false">7134@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Bonjour,</p>

<p>De nombreux plugin se servent du hook <code>plxShowStaticListEnd</code> pour injecter une page .</p>

<p>Cela fonctionne bien mais reste rigide car cela ne permet pas d'appliquer la variable $format de façon a ce que l'affichage soit cohérent avec celui des autres liens de pages statique si l'on veut coller a un thème spécifique ou l’intégrer ailleurs que dans le menu. Le seul <em>format</em> affichage possible est celui que l'on met en dur dans le hook a dans le deuxiéme <em>echo</em>  : <br />
</p><details>

<p><summary> &gt;exemple du code de Stephane F. dans  mySearch $lt; <strong>cliquer pour voir le code</strong> </summary></p>

<pre><code>    /**
     * Méthode de traitement du hook plxShowStaticListEnd
     *
     * @return  stdio
     * @author  Stephane F
     **/
    public function plxShowStaticListEnd() {

        # ajout du menu pour accèder à la page de recherche
        if($this-&gt;getParam('mnuDisplay')) {
            echo "&lt;?php \$status = \$this-&gt;plxMotor-&gt;mode=='".$this-&gt;url."'?'active':'noactive'; ?&gt;";
            echo "&lt;?php array_splice(\$menus, ".($this-&gt;getParam('mnuPos')-1).", 0, '&lt;li class=\"static menu '.\$status.'\" id=\"static-search\"&gt;&lt;a href=\"'.\$this-&gt;plxMotor-&gt;urlRewrite('?".$this-&gt;lang.$this-&gt;url."').'\" title=\"".$this-&gt;getParam('mnuName_'.$this-&gt;default_lang)."\"&gt;".$this-&gt;getParam('mnuName_'.$this-&gt;default_lang)."&lt;/a&gt;&lt;/li&gt;'); ?&gt;";
        }
    }

</code></pre>

<p></p></details>

<p>Si l'on veut un autre affichage , (pas de list , insérer une class, une icône, autre,... )  il faut modifier cette partie directement dans le plugin.</p>

<p>J'ai donc tenter d'ajouter cette page en amont à partir du hook <code>plxShowStaticListBegin</code>.</p>

<p>Avec une petite astuce <sup><sub>( <code>../</code></sub></sup> , cela fonctionne ...sauf que ... <strong>uniquement si l'urlrwriting est activé</strong>.</p>

<p>Voici en la fonction que j'utilise pour ajouter une page statique à la liste:<br />
</p><details> <br />
<summary> &gt;hook plxShowStaticListBegin&lt; <strong>cliquer pour voir le code</strong> </summary>

<pre><code>public function plxShowStaticListBegin() {
        #ajout de la page du plugin dans la liste des pages statiques
        // TODO  voir si  boucle pour enlever stats inactive est necessaire pour correspondre totalement à la position configurée
        # Si affichage requis 
        if($this-&gt;getParam('mnuDisplay')) { 
            global $plxMotor;
            // on lui donne un numéros compatible avec ceux existants des pages satiques déjà referencées
            $max = max(array_keys($plxMotor-&gt;aStats));
            $max++;
            $max= str_pad($max, 3, "0", STR_PAD_LEFT);
            // on alimente les données spécifiques à cette nouvelle page statique.
            $newStats[$max]['group'] = '';// pas de groupe // maybe todo voir si option ajout à groupe existant est pertinent
            $newStats[$max]['name'] = $this-&gt;getParam('mnuName');
            if($plxAdmin-&gt;aConf['urlrewriting']=='oui') {
            $newStats[$max]['url'] = '../'.$this-&gt;getParam('url'); // gestion URL spécifique.
            }
            else { // pas d'url rewriting
            $newStats[$max]['url'] = $this-&gt;getParam('url'); // gestion URL spécifique.     
                       // c'est ici que ça coince, car l'url générée n'est pas compatible. 
                       // + en tapant l'url compatible à la main, le  fichier du plugin du plugin est introuvable 
            }
            $newStats[$max]['active'] = '1';
            $newStats[$max]['menu'] = 'oui';
            $newStats[$max]['ordre'] = $this-&gt;getParam('mnuPos') - 1;
            $newStats[$max]['template'] = $this-&gt;getParam('template');
            $newStats[$max]['title_htmltag'] = $this-&gt;getParam('mnuName');
            $newStats[$max]['meta_description'] = 'plug plug';
            $newStats[$max]['meta_keywords'] = 'eplug';
            $newStats[$max]['date_creation'] = date('YmdHi');
            $newStats[$max]['date_update'] = date('YmdHi');
            array_splice($plxMotor-&gt;aStats,$this-&gt;getParam('mnuPos') - 1,0,$newStats);          
        }       
    }

</code></pre>

<p></p></details>

<p>Je tente alors de voir, à partir du hook initial éprouvé de Stéphane, si il y a moyen encore d’accéder à la variable $format . Je n'y arrive pas et j'ai le droit à  <strong><code>&lt;b&gt;Notice&lt;/b&gt;:  Undefined variable: format in</code></strong> . <br />
L'idée était de tenter de se servir de cette variable pour reconstruire le lien à injecter au format par défaut ou celui demandé à partir du thème avec <code>$plxShow-&gt;catList()</code> .</p>

<p>Je coince et je ne sais plus quelle approche avoir,</p>

<ul>
<li>l'idée d'inclure une page a aStats est une fausse bonne idée car on ne peut pas modifier l'url finale a ce stade du script.</li>
<li>Surtout, je n'arrive pas a comprendre comment récupérer  $format au niveau du second HOOK pour le preserver et l'appliquer aussi aux liens des pages ajoutées.</li>
</ul>

<p>Quelqu'un peut-il m'orienter ?</p>
]]>
        </description>
    </item>
   </channel>
</rss>
