Плагин Experience Builder в CMS Studio

В этой статье вы узнаете, как разработать ваш собственный плагин для панели Experience Builder в CMS Studio.

Создание плагина

Панель Experience Builder (XB) в CMS Studio располагается справа и становится доступной при переходе в режим редактирования (иконка карандаша) или режим перемещения (иконка двух вертикальных многоточий) в верхней части CMS Studio. В этой статье мы рассмотрим, как создать плагин для панели Experience Builder в CMS Studio, используя проект с именем"My Editorial", основанный на шаблоне “Web Blog”.

Изображение статьи

Панель Experience Builder в CMS Studio

1. Для начала создадим структуру папок, где будет располагаться JavaScript-файл нашего плагина. Мы будем придерживаться структуры, описанной  здесь. В нашем случае, CATEGORY  будет experiencebuilder, а NAME - test-experiencebuilder.

В локальной папке создайте файл описания с именем cms-plugin.yaml, установив в ru.dc.cms.plugin.experiencebuilder значение plugin.id, а затем создайте следующую структуру папок:

<plugin-folder>/
 cms-plugin.yaml
  authoring/
    static-assets/
      plugins/
        ru/
          dc/
cms/ plugin/ experiencebuilder/ experiencebuilder/ test-experiencebuilder/
Copy-icon

Мы разместим JS-файл, реализующий плагин панели инструментов, в папке test-experiencebuilder. Для нашего примера <plugin-folder> расположен по пути /users/myuser/myplugins/experiencebuilder-plugin.

2. Создайте файл index.js. В папке test-experiencebuilder создайте два новых пустых файла с именами index.css и script.js, затем переместите файл index.js в эту папку.

3. Чтобы настроить наш плагин для автоматической интеграции в соответствующий конфигурационный файл в CMS Studio (в случае с Experience Builder это файл конфигурации пользовательского интерфейса) при установке, добавьте следующую информацию в ваш файл описания cms-plugin.yaml:

installation:

  - type: preview-app

    parentXpath: //widget[@id='cms.components.ICEToolsPanel']

    testXpath: //plugin[@id='ru.dc.cms.plugin.experience.builder']

    element:

      name: configuration

      children:

      - name: widgets

        children:

        - name: widget

          attributes:

          - name: id

            value: ru.dc.cms.sampleComponentLibraryPlugin.components.reactComponent

          children:

          - name: plugin

            attributes:

            - name: id

              value: ru.dc.cms.plugin

            - name: type

              value: experiencebuilder

            - name: name

              value: test-experiencebuilder

            - name: file

              value: index.js

Copy-icon

Не забудьте использовать то же значение, что и в plugin.id (находится в верхней части файла описания) для раздела установки plugin.id, который в нашем примере называется ru.dc.cms.plugin.

4. После того как вы разместили файлы вашего плагина и настроили автоматическое связывание (auto-wiring), вы можете приступить к установке плагина для тестирования или отладки. Это можно сделать с помощью cms-cli команды copy-plugin. Для того чтобы убедиться, что команды cms-cli работают правильно, необходимо установить соединение с DC CMS с помощью команды add-environment. После установки соединения вы сможете установить плагин в проект с именем my-editorial, запустив следующее:

./cms-cli copy-plugin -e local -s my-editorial --path /users/myuser/myplugins/experiencebuilder-plugin

Copy-icon

5. Чтобы помотреть на наш плагин в действии, нажмите на значок карандаша в правом верхнем углу, чтобы открыть панель Experience Builder.

Изображение статьи

Вот раздел автоматического связывания в конфигурации после установки плагина:

<siteUi>

  ...

  <widget id="cms.components.ICEToolsPanel">

    <configuration>

      <widgets>

        <widget id="cms.components.ToolsPanelPageButton">

          <configuration>

            <target id="icePanel"/>

            <title id="previewSearchPanel.title" defaultMessage="Search"/>

            <icon id="@mui/icons-material/SearchRounded"/>

            <widgets>

              <widget id="cms.components.PreviewSearchPanel"/>

            </widgets>

          </configuration>

        </widget>

        ...

        <widget id="ru.dc.cms.sampleExperienceBuilderPlugin.components.reactComponent">

          <plugin id="ru.dc.cms.plugin"

                  type="experiencebuilder"

                  name="test-experiencebuilder"

                  file="index.js"/>

        </widget>

       </widgets>

    </configuration>

   </widget>

   ...

Copy-icon