1

曾经有站点地图功能,但已被弃用。建议使用分类法作为替代,但是当我从 API 请求项目时,分类法元素缺少层次结构。如何在网站结构中搜索代表父页面的项目?谢谢你。

4

1 回答 1

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 并使用数组过滤器之一来获取所有标有父站点地图位置的项目。

于 2019-05-13T13:19:04.103 回答