2 votes

Boucler les actifs et les entrées ensemble

J'ai réussi à extraire en boucle tout le contenu d'un ContentType spécifique et tout fonctionne bien, sauf que les entrées ne sont pas suivies de leurs actifs spécifiques.

Dans ce cas précis, le résultat est le suivant : Entrée 1 Entrée 2 Entrée 3 Actif 1 Actif 2 Actif 3

Je veux qu'il soit restitué sous la forme suivante Entrée 1 Actif 1, Entrée 2 Actif 2 etc...

Le fait de placer la boucle du tableau d'actifs à l'intérieur de la boucle des champs n'a pas aidé :)

Javascript

client.getEntries({
    include: 1,
    'content_type': 'posts'
})
.then((response) => {

    var template = $('#myEntries').html();
    var html = Mustache.to_html(template, response.toPlainObject());
    $('.result').html(html);

})
.catch((error) => {
    console.log('Error occured')
    console.log(error)
})

HTML

<script id="myEntries" type="text/template">
    {{#items}}
        <h1>{{fields.header}}</h1>
        <p>{{fields.description}}</p>
    {{/items}}

    {{#includes.Asset}}
        <p>File: <img src="https:{{fields.file.url}}?fit=thumb&f=top_left&h=200&w=200" width="100"/></p>
    {{/includes.Asset}}
</script>

<div class="result"></div>

JSON https://jsfiddle.net/pcgn73zf/

J'aimerais beaucoup que vous m'aidiez !

0voto

Tymek Points 1404

Vous flattez JSON avec response.toPlainObject() . Essayez de lire les propriétés requises dans l'ordre souhaité.

Exemple :

var input = {
  entries: [
    {
      text: "Entry 1"
    },
    {
      text: "Entry 2"
    }
  ],
  assets: [
    {
      text: "Asset 1"
    },
    {
      text: "Asset 2"
    }
  ]
};

var i = 0;
while (i < Math.max(input.entries.length, input.assets.length)) {
  if (i < input.entries.length) {
    document.write(input.entries[i].text + ", ");
  }
  if (i < input.assets.length) {
    document.write(input.assets[i].text + ", ");
  }
  i++;
}

0voto

Khaled Garbaya Points 1006

Par exemple, si vous avez un post contentType qui a un champ image, lorsque vous obtenez une entrée, vous pouvez accéder directement aux champs de l'actif. Ainsi, pour obtenir le champ url à partir de l'actif lié que vous venez de demander myEntry.fields.image.fields.file.url . Il n'est pas nécessaire d'en faire la demande. la partie "asset" de votre code devrait être la suivante (en supposant que le champ "asset" s'appelle "image")

 <p>File: <img src="https:{{fields.image.fields.file.url}}?fit=thumb&f=top_left&h=200&w=200" width="100"/></p>

Veuillez noter que la résolution des liens ne fonctionne que lorsque l'on demande le point final de la collection. client.getEntries() Pour plus d'informations, consultez ce README section

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X