We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25420
    • 74 Posts
    Salut tout le monde,

    je cherche un moyen d’obtenir une version XML du contenu de mes documents.

    J’ai vu qu’avec Ditto je pouvais changer le format de sortie et generer de l’XML. Le probleme c’est que je ne cherche pas une liste de documents mais bien un seul document ainsi que les valeurs de ses eventuelles tv. Avec Ditto, je n’ai pas trouve comment recupere les tv d’un document (je ne passe pas par un chunk car je veux de l’XML en sortie) et en plus ca m’oblige a avoir 2 documents: un qui contient mes donnees, l’autre l’appel a Ditto.

    Je n’ai rien trouve non plus du cote du repository. Avez-vous deja vu kkchose qui fasse ca ?

    thanks

    seb
      • 16732
      • 592 Posts
      Pour un document dans "Réglages de la page" tu as "Type de contenu" que tu peux mettre sur texte/xml pour avoir une sortie en xml.

      En ce qui concerne la récupération des infos et tv je pense qu’il faudra créer un snippet qui récupère ce que tu veux et le formate en xml.

      Pour récupérer les infos, utilises documentObject (http://www.modxcms.com/the-document-object.html) et pour les tv les fontions getTemplateVar, getTemplateVarOutput, getTemplateVars... il faudra faire quelques tests pour trouver celle qui te convient car leur description et utilisation n’est pas très explicite dans la doc (http://modxcms.com/api-quick-reference.html)
        • 25420
        • 74 Posts
        Merci pour ta reponse laurent.

        Changer le format de sortie en text/xml ne fait que formater le champ "description" en XML (et changer le content-type de la page); les autres champs (title, longtitle etc) sont zappes.
        De plus, si tu n’as pas de l’XML valide dans ta decription, tu obtiens une erreur (Modx prend le contenu du champ description "tel quel").
        Ce que je cherche a avoir, c’est une sortie du genre:

        <document>
        <title>Mon titre</title>
        <longtitle>Mon long titre</longtitle>
        <description>description</description>
        <content>mon content</content>
        <uneTv>le contenu de ma tv</uneTv>
        ....
        </document>
        



        Par contre je vois une solution avec ton post (peut-etre que c’est exactement ce que tu voulais m’expliquer en fait grin)
        Je vais creer un document, avec text/xml en format de sortie, qui contiendra un snippet, et cette page devra etre appelee avec un param qui sera l’ID du document dont on souhaite retourner les donnees. Le snippet se chargeant de recuperer les donnees + tv du doc et les retourner en xml.

        Merci pour les tuyaux

        seb
          • 11975
          • 2,542 Posts
          Salut,

          as tu regardé le parametres &documents de Ditto ?
          De cette facon tu crées le chunk (tpl) selon tes attentes au pire tu peux mme creer tes propres placeholder et formater les données ou valider leur format avec un extender.

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 16732
            • 592 Posts
            Quote from: roki13 at Apr 24, 2007, 07:00 AM

            Je vais creer un document, avec text/xml en format de sortie, qui contiendra un snippet, et cette page devra etre appelee avec un param qui sera l’ID du document dont on souhaite retourner les donnees. Le snippet se chargeant de recuperer les donnees + tv du doc et les retourner en xml.
            Oui c’est ce que je voulais dire wink
              • 11975
              • 2,542 Posts
              Le snippet se chargeant de recuperer les donnees + tv du doc et les retourner en xml.

              Ca revient a reecrire ditto !!!!

              :-)
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 16732
                • 592 Posts
                Oui peut-être... faut voir la problématique exacte de Roki13
                  • 11975
                  • 2,542 Posts

                  <document>
                  <title>[+pagetitle+]</title>
                  <longtitle>[+longtitle+]</longtitle>
                  <description>[+introtext+]</description>
                  <content>[+content+]</content>
                  <uneTv>[+matv+]</uneTv>
                  ....
                  </document>

                  et dans l’appel ditto

                  &documents=`[*id*]` &format=`xml` &tpl=`chunkCiDessus`

                  ca vaut le coup d’essayer avant de se lancer dans du code

                  :-)
                    Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                    • 25420
                    • 74 Posts
                    ok je vois l’idee, et c’est pas mal smiley
                    Mon seul souci avec ca c’est que tu dois connaitre a l’avance le nom et le nombre de tes TV. Dans mon cas, je vais devoir retourner des documents ayant des templates et par extension des tv differentes. Tu vois un moyen de gerer ca avec un appel ditto ?
                    Au pire, si je n’ai pas bcp de templates a gerer je peux creer un chunk par template mais bon...
                      • 11975
                      • 2,542 Posts
                      Alors c’est jouable sans connaitre le nombre de TVs
                      Tu peux creer un customPlaceholder.
                      [+mesTVsQueJeconnaispasLenombre+]

                      Ensuite tu crees un extender qui va gérer l’output de ce placeholder et ainsi tu peux lui appliquer tes propres règles de creation pour le remplacer par x <matv>contenu ma tv</matv>

                      Bon là ca depend de comment tu decides du nombre de tv, est ce que sont ttes les tvs rattaches au template utilisé par ce document par exemple, etc ...

                      Je dis pas que c’est applicable à 100% dans ton cas puisque je n’ai pas ttes les données mais ditto est vraiment phénoménal, il est plein de ressources cachées.

                      :-)

                        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l