We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20394
    • 134 Posts
    Bonjour,
    je souhaitais avoir une sorte de template virtuel qui redirige vers un autre template, ceci afin de changer facilement de template sur un groupe de documents.
    Voici ma solution (à peaufiner) :
    je crée un nouvel événement OnSelectTemplate dans document.parser :
    if(!$this->documentObject['template']) $this->documentContent = "[*content*]"; // use blank template
    	  else {
    	  	$this->invokeEvent("OnSelectTemplate");...

    Puis je le signale dans la table system.eventnames.
    Je crée ensuite le plugin qui va réagir à cet événement :
    $sql = "SELECT * FROM ".$this->getFullTableName("site_templates")." WHERE ".$this->getFullTableName("site_templates").".id = '".$this->documentObject['template']."';";
            $result = $this->dbQuery($sql);
            $rowCount = $this->recordCount($result);
            if($rowCount>1) {
              $this->messageQuit("Incorrect number of templates returned from database", $sql);
            }
            elseif($rowCount==1) {
              $row = $this->fetchRow($result);
    $temp=$row['content'];
    if(strpos($temp,'[[redirect')>-1){
              $matches=array();
          if(preg_match_all('~\[\[redirect\s*(\d+)\s*\]\]~',$temp,$matches)){
              $this->documentObject['template'] = $matches[1][0];
              
                  }
            }
    }
    

    que j’appelle par exemple templateVirtual.
    Ensuite pour essayer tout ceci, je crée un template contenant :
    [[redirect 5]]

    et je suis automatiquement redirigé vers le template 5.
    TODO : gérer les possibles boucles infinies, les erreurs lors de la sélection du template,...

    Remarque sur OnSelectTemplate : j’avais besoin du documentOject, qui n’apparaît qu’après OnWebPageInit, et OnLoadWebDocument vient trop tard car le template est déjà mis dans documentContent.
      • 20394
      • 134 Posts
      L’événement OnSelectTemplate permet également de changer le template en fonction par exemple de la valeur de certaines TVs, de l’heure qu’il est pour varier les plaisirs ... ou encore du statut du visiteur.
        • 11975
        • 2,542 Posts
        salut,

        on peut pas dire que tu sois passif comme membre. grin
        Tu débordes d’idées dis donc smiley

        Bien que cela ne soit pas exactement la même chose, il existe un module pour le chgt groupé de templates.

        @+
        et au plaisir de lire tes pérégrinations dans le core de modx
          Made with MODx : [url=http://www.copadel.com]copadel, fruits et l