曾经有站点地图功能,但已弃用。建议使用分类法作为替代品,但是当我从API请求项目时,分类法元素缺乏层次结构。如何在网站结构中搜索代表父页面的项目?谢谢。
答案 0 :(得分:1)
您仍然可以使用Delivery API进行操作。首先,您需要以与组织站点地图相同的方式来创建和组织分类组。考虑以下站点地图作为示例:
这是Kentico Cloud中分类法的外观:
您需要使用分类元素创建商品模型,以用作站点地图位置选择器。当您从项目中检索此元素时,它将为您提供与该项目相关联的术语列表。如果您在项目中打勾两个词(请联系我们,我们的团队),则该元素将在API中如下所示:
{
"item": {
"system": {
"id": "8a9e7010-c79b-41c5-a0bc-4f20c9c233b8",
"name": "Example item - contact form",
"codename": "example_item___contact_form",
"language": "default",
"type": "example_content_model",
"sitemap_locations": [],
"last_modified": "2019-05-13T08:20:50.3173519Z"
},
"elements": {
"sitemap": {
"type": "taxonomy",
"name": "Sitemap",
"taxonomy_group": "sitemap",
"value": [
{
"name": "Contact Us",
"codename": "contact_us"
},
{
"name": "Our team",
"codename": "our_team"
}
]
}
}
},
"modular_content": {}
}
如您所见,您将获得有关分类法组代号的信息以及每个已勾选术语的名称和代号对的平面列表。要获取层次结构,您需要进行第二次调用以检索分类组,这将产生以下结果:
{
"system": {
"id": "0b4e3da2-8699-4b4d-961c-1fe912c91570",
"name": "Sitemap",
"codename": "sitemap",
"last_modified": "2019-05-13T08:01:34.6109452Z"
},
"terms": [
{
"name": "Home",
"codename": "home",
"terms": []
},
{
"name": "About",
"codename": "about",
"terms": [
{
"name": "Our team",
"codename": "our_team",
"terms": [
{
"name": "Management",
"codename": "management",
"terms": []
},
{
"name": "Contact Us",
"codename": "contact_us",
"terms": []
}
]
},
{
"name": "Mission & Values",
"codename": "mission___values",
"terms": []
}
]
}
]
}
这反映了所需的层次结构。您可以将从项目中获得的代号与分类法术语在组中的位置进行比较-要获取父分类法术语,只需获取父JSON节点即可。如果您需要弄清楚父项本身,则可以再次调用Delivery API,并使用数组过滤器之一来获取所有标有父站点地图位置的项。