【发布时间】:2018-06-15 11:42:34
【问题描述】:
我正在 Contentful Delivery API 中运行查询,以根据其 slug 返回特定页面项目。此查询还设置了语言环境,以便它只返回我需要呈现的语言的数据。
不过,我还需要设置页面的 hreflang 标记,以帮助 google 知道该页面也提供其他语言版本。
我从内容内容中得到的表示我的页面的内容项的响应似乎没有任何类型的数组属性,让我可以轻松确定内容可用的其他语言。
我假设这一定是 SEO 的一个非常普遍的要求,所以希望有人能告诉我如何在 Contentful 的响应中得到这个?
这是我的回应示例。我希望看到的是另一个名为 allLocales 的属性,它会列出可以提供此内容的每个语言环境。
更新:
我知道我可以获得空间中所有语言环境的列表,并在我的查询中设置locales=*,但这仍然无济于事。我只需要知道我检索到的给定内容中可用的语言环境子集。例如,一个页面可能只支持 2 个语言环境,但整个空间中可能有 3 个或更多语言环境可用。
Locales=* 没有帮助,因为它包含每个链接项(可能有也可能没有内容)的语言环境,而我需要的是一个数组对象,其中包含父内容项上可能可用的所有语言环境.即使用户没有将内容放在字段中,我也想明确地知道是否已在内容上选择了语言环境。
{
"sys": {
"type": "Array"
},
"total": 1,
"skip": 0,
"limit": 1,
"items": [
{
"sys": {
"space": {
"sys": {
"type": "Link",
"linkType": "Space",
"id": "xuehyxrgb9ri"
}
},
"id": "1MhAzkNYvOSU8GgUQcQKqa",
"type": "Entry",
"createdAt": "2018-01-05T10:48:30.373Z",
"updatedAt": "2018-01-05T12:57:00.066Z",
"revision": 6,
"contentType": {
"sys": {
"type": "Link",
"linkType": "ContentType",
"id": "contentPage"
}
},
"locale": "en-AU"
},
"fields": {
"title": "Test Page",
"slug": "test-page",
"content": [
{
"sys": {
"type": "Link",
"linkType": "Entry",
"id": "Vt4ktGvOE0qoO8mqeCMao"
}
},
{
"sys": {
"type": "Link",
"linkType": "Entry",
"id": "2jY5LUgHWUsaIyMuwKwYe2"
}
}
]
}
}
]
}
【问题讨论】:
-
我是否正确假设您只想显示条目已完全翻译的区域设置的hreflangs?因为没有未翻译的字段。
-
我打算让它比这更严格一些。例如,如果内容编辑器将语言环境添加到内容页面,那么他们明确表示他们希望该页面对每个语言环境都有一个 hreflang 标记,无论他们是否留下了一些未翻译的字段。这意味着,即使他们添加了语言环境并且没有翻译任何字段,它仍然会得到一个 hreflang 标记。在内容编辑器端进行管理似乎比逻辑检查每个字段的特定语言值更简单。
-
这将使内容更容易。它实际上只需要一个属性来列出已添加到条目中的每个区域设置。可以是空间中的每一个语言环境,也可以是一个子集。内容编辑器添加到条目中的任何内容,我都需要知道。
-
不幸的是,这不是语言环境在内容中的工作方式。条目始终存在于所有语言环境中,它只是具有值或不具有值的单个字段。一种解决方法是将此信息添加为条目的字段,基本上是您的建议。只需确保不对字段进行本地化,并使其成为编辑器可以在特定区域准备发布时填写的值列表。
-
嗯,好的。我想我可以做到这一点,只是有点令人沮丧,因为这意味着内容编辑器必须有效地执行两次(一次用于显示和隐藏语言环境的编辑器中的语言环境机制,一次用于我添加的自定义字段具有相同的语言环境)。我是否可以添加一个功能请求,对于返回的任何条目,在响应元中返回所有已激活语言环境的列表?
标签: contentful