We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 27582
    • 57 Posts
    Bonjour,

    Je voudrais pouvoir ajouter un élément [tt]<link>[/tt] à une page lors de sa génération. Et je ne sais pas comment faire.

    C’est pour tenter de résoudre un un problème qui ressemble à celui qu’évoque Perrine dans A la recherche d’un snippet pour associer des documents entre eux: J’envisage de mettre de cours en ligne sur notre site, et je voudrais associer chaque cours à un ou plusieurs mots-clés. Et bien sûr pouvoir retrouver les cours de domaines identiques.

    J’aimerai bien que la déclaration des mots-clés se fasse directement dans le corps du document à la manère d’un Wiki. Ca me semble plus simple que la méthode qui consiste à passer par la "gestion de mots clés". En gros, je voudrais que mon document ressemble à ça:
    <h3>A quoi sert NFS?</h3>
    Blah blah blah
    Blah blah blah
    
    [!CCategory? name=`reseau|nfs|protocoles` !]
    


    J’envisage de stocker ces étiquettes dans une table séparée des mots clés. Par contre, je voudrais que lors de la génération de ma page, un élément link contenant ces étiquettes soit quand même inséré dans l’en-tête de mon document html. Mais je ne sais pas comment modifier l’en-tête par programme...

    D’avance merci,
    Sylvain.
      Jeune dipl
      • 23050
      • 1,842 Posts
      Salut Sylvain,

      Je vais pas pouvoir te filer de solution car je n’en ai pas... mais une piste de recherche serait de regarder comment sont insérés les keywords ou encore les fichiers .css ou .js à partir des snippets.

      Tu dois pouvoir ensuite modifier la ligne complète à insérer ?
        • 18219
        • 826 Posts
        As tu pensé regarder le fonctionnement de ditto, voir de l’utiliser pour résoudre ce que tu recherche ?
          Marc
          I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
          • 27582
          • 57 Posts
          Excellente idée!

          Après une rapide recherche à coup de [tt]fgrep[/tt] dans mon install de MODx, je suis tombé sur le bout de code suivant extrait de la fonction [tt]efRegisterStartupBlock[/tt] de [tt]eForm[/tt]:
                          if ( $type=='css' )
                                  $modx->regClientCSS($src);
                          elseif ( $type == 'javascript' )
                                  $modx->regClientStartupScript($src);
                          else
                                  $modx->regClientStartupHTMLBlock($src);
          


          Visiblement, il existe des méthodes [tt]regXXX[/tt] pour enregistrer les éléments générés dynamiquement. En cherchant dans la doc et sur le wiki j’ai trouvé:

          • [tt]regClientCSS[/tt] qui permet d’inclure un élément <style> dans l’en-tête (d’après les docs) ou un lien (<link>) vers une feuille de style (d’après les sources)
          • [tt]regClientStartupScript[/tt] qui permet d’inclure un élément <script> dans l’en-tête (soit en indiquant un fichier [tt].js[/tt], soit en fournissant directement le code JavaScript)
          • [tt]regClientScript[/tt] comme le précédent, mais cette fois l’élément <script> est inclus à la fin de fichier XHTML

          Malheureusement, pas de doc sur [tt]regClientStartupHTMLBlock[/tt]. Mais en examinant les sources de MODx, on découvre qu’en fait [tt]regClientStartupHTMLBlock[/tt] est juste un wrapper autour de [tt]regClientStartupScript[/tt]:
          # Registers Client-side Startup HTML block
          function regClientStartupHTMLBlock($html) {
                $this->regClientStartupScript($html, true);
          }
          

          J’en conclus qu’on peut utiliser [tt]regClientStartupHTMLBlock[/tt] pour inclure n’importe quel type d’élément dans l’en-tête. Aller, demain je teste ça!

          En tous cas, merci de m’avoir montré la piste.
          Sylvain.
            Jeune dipl
            • 27582
            • 57 Posts
            @Marc:

            As tu pensé regarder le fonctionnement de ditto, voir de l’utiliser pour résoudre ce que tu recherche ?
            En fait, ce que j’explique plus haut n’est que la première phase de ce que je voudrais: j’envisage de pouvoir créer une hiérarchie d’étiquettes (je crois qu’on appelle ça une taxonomie). En prenant comme exemple la hiérarchie suivante:
            <br />reseau<br />    transfert de fichiers<br />        nfs<br />        ftp<br />    telnet<br />

            Un cours étiqueté [tt]nfs[/tt] serait trouvable dans la catégorie [tt]nfs[/tt] bien entendu, mais aussi dans [tt]transfert de fichiers[/tt] ou [tt]reseau[/tt].

            Bon, ceci dit, ce n’est encore qu’à l’état d’ébauche: il faut que j’y réfléchisse un peu plus sérieusement! Et puis, il faut aussi que j’arrive àconvaincre mes collègues que ce serait une bonne idée d’avoir au moins quelques cours en ligne...

            Sylvain
              Jeune dipl
              • 18219
              • 826 Posts
              Bon courage

              Je pars en congé quelques jours. Je reviendrais après mon retour voir l’évolution de ce poste wink
                Marc
                I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink