On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Bonjour,
    je démarre sur MODx (MODX Revolution 2.5.7-pl)

    Pour me familiariser avec la bête, j’ai créé un répertoire « modx » dans mon dossier de travail pour tout ce qui est du PHP et même du MySQL.

    DossierWeb :
    _ SQLBuddy
    _site-de-test-perso-en-PHP
    _modx

    Ce DossierWeb est pointé par mon serveur local LAMP (PHP Version 5.6.30) tournant sous Docker (je suis sous Linux Mint)

    Donc pour voir la page par défaut j’entre l’url = http://localhost/modx/index.php?id=0

    Dans mon habitude pour faire des pages web, mes sites sont structurés en arborescence.
    Ex :

    Racine du site :
    - index.php
    - pagetruc.php
    - pagebidule.php
    - fruits (dossier)
    -pommes.php
    -poires.php
    -bananes.php
    - villes
    -lyon.php
    -rennes.php

    etc...

    Donc quand on navigue sur mon site on se retrouve avec des urls du genre:
    www.supersite.com/fruits/bananes.php

    et j'utilise intensivement des liens relatifs dans mon site, ce qui donnerai comme lien pour la pagetruc.php un
    href="/fruits/bananes.php"


    Alors, mon premier problème, et j'ai plutôt l'impression de ne plus rien comprendre...

    comment que je lui dis dans une resource que la page x c'est la page pagebidule.php huh
    parce que j'ai beau entrer "pagebidule.php" ou même "pagebidule" dans l'alias de la ressource, impossible de retrouver :

    http://localhost/modx/pagebidule.php (avec ou sans le ".php")

    le seul moyen de retrouver cette page est uniquement avec une url = http://localhost/modx/index.php?id=5..



    Pareil je peux pas mettre un href = "pagetruc.php" dans la page pagebidule.php...


    et pour terminer, j'arrive pas non plus à créer un "répertoire" (ou quelque-chose qui indiquerai une hiérarchie) = "fruits" dans l'interface des ressources, pourtant j'en ai vu sur des vidéo youtube (wayfinder ??)

    alors c'est un peu bloquant pour moi, de ne pas réussir à placer des liens entres mes pages.

    J'ai essayé en activant et désactivant le fichier .httacess, mais ça ne donne rien de différent, et je suis une vraie bille en url rewritting, que j'aimerai éviter d'apprendre dans l'urgence d'avoir un site complet à mettre en ligne avant la fin de la semaine.
    • Bonjour Tom, la bonne methode pour les liens est de saisir les urls de cette façon :

      Pour la ressource id=1234 -> <a href="[[~1234]]" title="some title">Some Page</a>
      Tu dois activer l'option "friendly_urls" dans tes paramètres système.


      Plus d'infos ici :
      https://docs.modx.com/revolution/2.x/administering-your-site/using-friendly-urls


      • Merci pour cette réponse rapide wink

        j'ai mis un peu de temps à trouver ou se gère l'option "friendly_urls" dans l'interface d'admin du site, mais je n'ai par encore eu le temps de tester vraiment.

        en tout cas, c'est une premiere piste pour mes petites difficultés d’apprentissage sur MODx
        • "Paramètres du système & Événements" très pratique, tu pourras y placer tes propres variables globales. à récupérer ainsi $var = $modx->getOption('ma_variable') dans le code php ou [[++ma_variable]] dans ton code HTML.
          https://docs.modx.com/revolution/2.x/administering-your-site/settings

          En gros suivant tes réglages la hiérarchie que tu vas organiser dans tes "Resources" vas se répercuter sur tes urls : "/container/mon-alias.html"

          Pour faire simple et propre :
          Donc ".html" pour l'url. Pour placer du code php tu pourras utiliser les snippets [[!monsnippet]]. A placer en début de resource. Des "placeholders" seront mis dans la partie HTML.
          https://docs.modx.com/revolution/2.x/developing-in-modx/other-development-resources/class-reference/modx/modx.setplaceholder
          https://docs.modx.com/revolution/2.x/developing-in-modx/other-development-resources/class-reference/modx/modx.setplaceholders


          [[!monsnippet]]
          <div>[[+monplaceholder]]</div> 
          


          • Ou la la, ça fait beaucoup d'un coup pour moi.!
            Je n'imaginais pas à quel point MODx pouvait avoir une telle richesse de fonctionnalités...

            J'ai encore du mal à cerner les concepts et leurs noms, et OK, je lire et essayer de comprendre ce que tu indique sur tes liens.

            Mais je vois pas comment on fait pour créer un grouper des ressources, il faut créer un nouveau lien web pour "placer" les ressources dedans ?
            Parce que si j'arrive bien à creer des groupes de ressources et que j'y place des pages, celles ci continuent à s'afficher à la racine du site...


            Sinon, déjà, pour les liens, j'ai bien paramêtré, et j'arrive à m'en servir..
            Il y a juste un truc qui me chiffonne, c'est que je n'arrive pas à placer le titre de la page dans le lien

            exemple de ce qu je souhaiterai avoir :

            <a href="[[~1234]]" title="[[~1234*pagetitle]].title">[[~1234*menutitle]]</a>

            mais j'ai l'impression que c'est pas prévu dans les features... ??

            en tous cas, merci anatole44 pour me répondre, je me sensmoins seul face à MODx, grace à toi ;-)
            • Salut tombook2 et bienvenue avec Modx !

              Bon, c'est vrai que de prime abord le système pour les liens est particulier, mais un fois pigé c'est assez puissant.

              Déjà, oublie les pages php qui s'appellent bidule.php

              De base, pour modx c'est par exemple modx/index.php?id=66 ==> toutes les pages sont appelées par leur id unique. Simple, mais pas joli.
              Pour de la réécriture d'url le friendly_url dans les paramètres + la configuration du .htaccess à la racine c'est la base. Tu suis la doc et tout va bien se passer. Ni plus ni moins.
              Ca c'est pour la partie technique.

              Pour la partie fonctionnelle, je vais tenter de compléter les propos ci-dessus :
              Dans un contexte (web), tu as des pages. Tu créé une page elle se met sous l'autre, au même niveau.
              POur avoir des conteneurs de page (des pages parents puis enfant etc...), tu fais un clic droit sur une page et ajouter une ressource. Ou bien dans une ressource existante, dans l'onglet paramètres, tu peux pointer vers une page parente. Ainsi cette nouvelle ressource deviendra une sous page, page enfant, d'une page parent ou plutôt conteneur. Et ça fonctionne commune une arborescence classique de dossiers imbriqués. Si tu veux qu'une page soit conteneur, tu peux aussi l'indiquer dans l'onglet paramètre de la page en cochant la case conteneur.

              Et enfin, pour maintenant appeler une page, il suffit de faire un lien html sous ce format pour aller à la page 125 :
              <a title="Mon titre" href="[[~125]]">Mon texte</a>


              Pas très dynamique pour les noms de page n'est-ce pas ?

              Alors pour ne pas avoir à réécrire les titres et autres attributs pour chaque lien (s'il y en a plusieurs), il vaut mieux passer par une extention. Par exemple pdoTools contient un snippet pdoResources qui te permettra d'appeler :
              - toutes les pages enfants d'une page déterminée,
              - comme une liste définie manuellement de page
              Mais il fait beaucoup plus que ça. Et le principe est :
              J'appelle le snippet pdoResources et je lui dit : affiche moi toutes les pages enfants de la page 125, et applique leur le gabarit $untel (untel étant un chunk)
              [[pdoResources?
                  &parents=`125`
                  &tpl=`untel`
              ]]


              Et voici le gabarit du chunk untel que je peux utiliser et qui ressemble à ce que tu souhaites obtenir :
              <a href="[[+id]]" title="[[+title]]">[[+longtitle]]</a>


              Ce tpl se répétera autant de fois qu'il y a des sous pages à la page 125. Et tout le remplissage sera automatisé selon le template untel.

              Dans le chunk untel, tu peux ainsi appeler les paramètres des pages selon ce format [[+paramètre]] qui correspond à [[*paramètre]]. Sauf que le dernier ne fonctionne que quand on est dans la page actuelle.

              Si je suis dans la page 1 et j'écris [[*id]] ça donne 1. Si je suis dans la 125 [[*id]] donne 125. Si je suis dans la page 1 et que je veux l'id de la page 125, je peux écrire dans la page 1, ou dans mon modèle par exemple :

              [[pdoResources?
                  &resources=`125`
                  &tpl=`justID`
              ]]

              Et j'ai un chunk qui s'appelle justID et qui contient :
              <-- chunk justID -->
                  [[+id]]
              <!-- fin chunk -->
              


              Et ça m'affiche 125 alors que je suis sur la page 1. Tu comprends qu'on peut faire afficher le titre, le contenu et tous les autres attributs de ta page, même jusqu'au TV (mais là tu verras par la suite).

              J'espère que cet exemple t'auras aidé à mieux comprendre le fonctionnement des pages et rien ne vaut que d'essayer en reprenant cet exemple (s'il n'a pas d'erreurs) simple et en l'adaptant à tes propres noms etc... La documentation de Modx et de pdOTools seront vraiment très utiles aussi. Bon courage.