API страницы DotCMS не возвращает поле «макет» - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу использовать функцию Layout-as-a-Service (LaaS) в DotCMS. Этот подход задокументирован в https://dotcms.com/blog/post/more-than-a-headless-cms-layout-as-a-service-in-dotcms, а также в https://github.com/fmontes/dotcms-page.

Обе статьи предполагают, что API страницы DotCMS должен возвращать поле с именем "layout" в ответе, например, на http://localhost: 8080 / api / v1 / page / json / test-page

test-page - это страница, которая использует стандартный шаблон. Под стандартным шаблоном я подразумеваю шаблон, созданный с помощью «Дизайнера шаблонов», с боковой панелью 20% слева, одним столбцом шириной 100%, оба из которых содержат «Пустой контейнер».

Независимо от того, что я пробую, " поле "макет" никогда не является частью ответа. Все, что я получаю, это:

{
  "errors": [],
  "entity": {
    "canCreateTemplate": true,
    "containers": ...,
    "numberContents": 2,
    "page": ...,
    "site": ...,
    "template": ...,
    "viewAs": ...  },
  "messages": [],
  "i18nMessagesMap": {},
  "permissions": []
}

Я попробовал DotCMS версии 5.2.0, а также 5.2.3. Возможно, это функция только для Enterprise Edition?

Редактировать: Что я ожидаю:

{
  "errors": [],
  "entity": {
    "canCreateTemplate": true,
    "containers": ...,
    "layout": {
      "width": "responsive",
      "title": "mytemplate1",
      "header": true,
      "footer": true,
      "body": {
        "rows": [
          {
            "columns": [
              {
                "containers": [
                  {
                    "identifier": "b5ea1513-7653-4602-a729-97cd8dd099b6",
                    "uuid": "1582123997023"
                  }
                ],
                "widthPercent": 100,
                "leftOffset": 1,
                "styleClass": null,
                "preview": false,
                "width": 12,
                "left": 0
              }
            ],
            "styleClass": null
          }
        ]
      },
      "sidebar": {
        "containers": [
          {
            "identifier": "b5ea1513-7653-4602-a729-97cd8dd099b6",
            "uuid": "1582123991866"
          }
        ],
        "location": "left",
        "width": "small",
        "widthPercent": 20,
        "preview": false
      }
    }
    ...

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Неважно, я сам нашел ответ.

Я проверил исходный код. В com.dotmarketing.portlets.htmlpageasset.business.render.page.HTMLPageAssetRenderedBuilder#build есть следующий фрагмент кода:

        final TemplateLayout layout = template != null && template.isDrawed() && !LicenseManager.getInstance().isCommunity()
                ? DotTemplateTool.themeLayout(template.getInode()) : null;

Поэтому ответ таков: вы можете использовать LaaS, продвигаемый DotCMS, только если у вас есть лицензия, не принадлежащая сообществу.

0 голосов
/ 20 февраля 2020

Ваша страница должна использовать «шаблон макета» для извлечения макета из dotCMS - использование расширенного шаблона не будет работать.

Кроме того, макеты являются частью корпоративной версии. Убедитесь, что у вас есть лицензия для использования менеджера по расположению.

...