hook IndexBegin

danielsandanielsan Member
mars 2014 modifié dans Entraide
Bonjour à vous,

j'ai un petit caillou dans ma chaussure là ...
je faisais des trucs avant qui marchaient mais vu les changements, je suis perdu !

Je souhaite analyser la présence d'un cookie (entre autres) avant le chargement d'une page (n'importe laquelle).
Je fais donc mon analyse via le hook IndexBegin.
Mais voilà que ça ne marche pas !

Voir un truc tout simple :

dans l'index.php à la racine du site avant le $output;:
[== PHP ==]
$montest = "ok";
var_dump($montest);
me donne bien
string(2) "ok"

puis dans le header.php du thème :
[== PHP ==]
<?php var_dump($montest);?>
me donne
NULL

même ça ça bug ... comprend pas, et vous ?

Merci pour votre aide.

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    PluXml joue beaucoup avec le buffer de sortie de PHP.
    Dans index.php, la page est prête à expédier, il manque juste le ruban du paquet cadeau.
    Mieux vaut détecter la présence du cookie dans ton template.
    Si tu utilises un plugin perso, utilises peut-être le hook IndexBegin.
  • hello et merci pour ta réponse.

    j'utilises en effet un plugin perso.
    il y a un truc que j'ai du mal à différencier.
    Des fois, via les plugins, on va écrire
    [== PHP ==]
    echo $test;
    
    ou
    [== PHP ==]
    $string ='
    echo $test;
    ';
    echo $string
    
    ou encore
    [== PHP ==]
    $string ='
    <?php
    echo $test;
    ?>
    ';
    echo $string
    
    voir
    [== PHP ==]
    $string ='
    <?php
    echo \$test;
    ?>
    ';
    echo $string
    

    comment savoir quoi écrire où ?

    Pour revenir à mon pb,
    la détection d'un cookie n'a, à mon sens, rien à faire dans le template.
    Cela doit se faire avant ...

    Merci, @+
  • Jerry WhamJerry Wham Member
    mars 2014 modifié
    Hey Daniel ! Tu es revenu de tes sommets ??? :D

    Pour répondre à ta question, il est normal que ton exemple ne t'affiche rien dans le header de ton thème car il n'y a pas de variable transmise entre l'index et le header.
    Pour cela, il faut utiliser les hooks qui injectent du code (ce qui n'est pas exactement la même chose).

    Et j'aurais plutôt utiliser plxMotorPreChauffageBegin qui intervient véritablement avant tout affichage (ce qui est mieux pour tester les cookies).
    danielsan a écrit:
    hello et merci pour ta réponse.

    j'utilises en effet un plugin perso.
    il y a un truc que j'ai du mal à différencier.
    Des fois, via les plugins, on va écrire
    [== PHP ==]
    echo $test;
    
    Tu affiches en faisant ça, la valeur de la variable $test que tu as définie préalablement dans ton plugin.
    danielsan a écrit:
    ou
    [== PHP ==]
    $string ='
    echo $test;
    ';
    echo $string
    
    Je ne crois pas que cela te retourne grand chose mise à part une erreur de syntaxe.
    danielsan a écrit:
    ou encore
    [== PHP ==]
    $string ='
    <?php
    echo $test;
    ?>
    ';
    echo $string
    
    Ici, $test est une variable définie dans pluxml et pas dans le plugin. En écrivant cela, tu affiches la valeur déterminée par le script d'origine (et pas par ton plugin).
    danielsan a écrit:
    voir
    [== PHP ==]
    $string ='
    <?php
    echo \$test;
    ?>
    ';
    echo $string
    
    Généralement, on écrit cela avec des doubles quotes et pas des simples. Je pense que cet exemple devrait retourner une erreur de syntaxe.
    danielsan a écrit:
    comment savoir quoi écrire où ?

    Pour revenir à mon pb,
    la détection d'un cookie n'a, à mon sens, rien à faire dans le template.
    Cela doit se faire avant ...

    Merci, @+

    Je suis d'accord. D'où l'utilisation de plxMotorPreChauffageBegin.
Connectez-vous ou Inscrivez-vous pour répondre.