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

    Je post ici pour essayer de trouver une solution a une question de developpement à laquelle je m'attelle:
    Réaliser des blocs modulables sous modx un peu à la manières de ce que l'on trouve sur ces créateurs de code basé sur bootstrap : https://mobirise.com/fr/

    cela me permettrait de gèrer des modules et leur aspect en css sans devoir être perturber par du code annexe
    de faire évoluer ses modules facilement, d'en extraire les codes commun pour les regrouper... me faciliter la vie quoi

    ce qui me taraude c'est que certain codes sont à déposer dans le head du document comme les prises en charge de css spécifique et code javascript alors que d'autre nécéssite un code à déposer en fin de document au plus proche de la balise </html>

    je pensais faire une ressource conteneur avec un modèle qui parserait les ressource contenue avec leur tv pour créer les differents blocs.
    pour ce qui est des code d'appel de javascript je pensais les inclures dans des TV dédiées visibles uniquement par les developpeurs, un parsage serait fait pour récupèrer toutes ses variables répartie en en tête ou en fin de document selon leur nom de TV.

    Bref. n'étant pas super actif sur le forum je suis en train de ratrapper les anciens post pour voir si quelque chose peut m'aider, des pistes ou snippet de siou que je ne connaitrais pas. Pour le reste je viendrais poster ici mon avancement sur la chose religieusement, ça m'obligera a détailler ma procédure ce qui est pas plus mal.
      • 35999
      • 16 Posts
      Je pense avoir trouver une tres bonne piste de départ :
      https://docs.modx.com/revolution/2.x/developing-in-modx/basic-development/snippets/adding-css-and-js-to-your-pages-through-snippets
      n'étant pas encore familier avec l'écriture des snipet je vais tester
        • 38314
        • 45 Posts
        Hey !

        j'imagines que tu as déjà vu, tu as aussi ça dans les output modifiers pour du chunk :

        • cssToHead Put a < link > element into < head >, where the input value is placed inside the href attribute.
          Uses modX.regClientCSS. [[+cssTV:cssToHead]]
        • htmlToHead Insert a block of HTML code in the header of the page, before < / head >.
          Uses modX.regClientStartupHTMLBlock [[+htmlTV:htmlToHead]]

        • htmlToBottom Insert HTML code at the end of the page, before < / body >.
          Uses modX.regClientHTMLBlock. [[+htmlTV:htmlToBottom]]
        • jsToHead Insert JS code (or a link) in the header of the page, before < / head >.
          Uses modX.regClientStartupScript. [[+jsTV:jsToHead]]
        • jsToBottom Insert JS code (or a link) at the end of the page, before < / body >.
          Uses modX.regClientScript. [[+jsTV:jsToBottom]]

        source : https://docs.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/input-and-output-filters-(output-modifiers)
          • 35999
          • 16 Posts
          haaa mais non je ne connaissais pas !

          Je m'en vais tester ça de suite ! un grand MERCI !
            • 28432
            • 372 Posts
            Salut,

            Tu peux vraiment facilement à partir d'un snippet envoyer du code dans le HEAD ou juste avant la fermeture de la balise BODY comme il est expliqué dans la page que tu as trouvé ICI.

            Mais tu peux faire même plus si par exemple tu veux que ce soit plus dynamique...

            Dans un chunk :
            <script type="text/javascript">
                monscript.init({
                    "lang": "[[+lang]]",
                    "scriptUrl": "[[+scriptUrl]]",
                });
            </script>


            Dans mon snippet :
            $lang = 'fr';
            $scriptUrl = 'MyUrl';
            $baseScript = $modx->getChunk('baseScript',array(
                'lang'                      => $lang,
                'scriptUrl'                 => $scriptUrl,
            ));
            
            $modx->regClientStartupHTMLBlock($baseScript);
            


            Tu peux aussi passer un paramètre dans le snippet pour décider si tu le met dans le HEAD ou avant la fermeture du BODY :

            [[monsnippet? &addingBeforeBodyEnd=`1`]]


            $addingBeforeBodyEnd		= (bool) 	$modx->getOption('addingBeforeBodyEnd', $scriptProperties, false); // default false
            if($addingBeforeBodyEnd == false){
            	$modx->regClientStartupHTMLBlock($output);
            }elseif($addingBeforeBodyEnd == true){
            	$modx->regClientHTMLBlock($output);
            }