将资产和条目循环在一起

Looping assets and entries together

我已经设法从特定的 ContentType 中循环出所有内容并且一切正常,除了条目后面没有其特定资产。

在这种特定情况下,它呈现为: 条目 1 条目 2 条目 3 资产 1 资产 2 资产 3

我希望它呈现为:条目 1 资产 1、条目 2 资产 2 等...

将资产数组循环放在字段循环中没有帮助:)

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/

希望得到你的帮助!

你在用 response.toPlainObject() 奉承 JSON。尝试按所需顺序阅读所需的属性。

示例:

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++;
}

您好,也许您在文档中遗漏了它,但是 contentful js SDK 已经完成 link 解析,例如,如果您有一个包含图像字段的 contentType post,当您得到一个entry 您可以直接访问资产的字段。因此,要从 linked 资产中获取 url,您只需请求 myEntry.fields.image.fields.file.url。无需请求它的形式包括。 您代码中的资产部分应该是(假设资产字段称为图像)

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

请注意,link 解析仅在请求收集端点时有效 client.getEntries() 有关更多信息,请查看此自述文件 section