Шаг 10. Использование вложенных компонентов с внутристрочным редактированием

Компоненты Oracle Content Management внедряются с помощью архитектуры компонента KnockoutJS. Это означает, что если для внедрения компонентов используется KnockoutJS, встроенные компоненты Oracle Content Management можно включить непосредственно в шаблон.

Примечание.:

Так как встроенные компоненты Oracle Content Management могут выполняться только на странице Oracle Content Management. Невозможно использовать вложенные компоненты в случае их рендеринга во встроенной рамке.

Чтобы использовать вложенные компоненты, выполните указанные ниже действия.

  1. Внедрите свой компонент с помощью KnockoutJS.

  2. С помощью RequireJS включите свой компонент и используйте ту же переменную экземпляра Knockout "ko", что создана в Oracle Content Management.

    Это необходимо, поскольку Oracle Content Management расширяет Knockout с помощью компонентов. Эти компоненты недоступны, если используется собственный экземпляр KnockoutJS.

В ходе выполнения этого шага вы узнаете о рендеринге компонентов Oracle Content Management ("Изображение", "Абзац" и "Заголовок") в пользовательском компоненте. Пользователь может редактировать его непосредственно на странице и получить доступ к панели "Настройки" для вложенного компонента.

Чтобы узнать, как эти компоненты включены в ваш шаблон, измените файл render.js и обратите внимание на объект sampleComponentTemplate. Визуализируемый раздел по умолчанию показан здесь:

'<!-- ko if: alignImage() !== \'right\' -->' +
'<div style="display:flex;">' +
'<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
'<scs-image params="{ scsComponent: { \'renderMode\': mode, \'parentId\': id, \'id\': \'imageId\', \'data\': imageData } }"></scs-image>' +
'</div>' +
'<div data-bind="attr: {style: paragraphStyle}">' +
'<scs-title params="{ scsComponent: { \'renderMode\': mode, \'parentId\': id, \'id\': \'titleId\', \'data\': titleData } }"></scs-title>' +
'<scs-paragraph params="{ scsComponent: { \'renderMode\': mode, \'parentId\': id, \'id\': \'paragraphId\', \'data\': paragraphData } }"></scs-paragraph>' +
'</div>' +
'</div>' +
'<!-- /ko -->' +

При просмотре вложенного компонента <scs-image> можно видеть следующую запись:

'<scs-image params="{ scsComponent: { \'renderMode\': mode, \'parentId\': id, \'id\': \'imageId\', \'data\': imageData }}"></scs-image>' +
Данные scsComponent, переданные привязке шаблона params, включают следующее:
  • renderMode: относится к режиму работы Site Builder. Эту возможность можно использовать для включения и отключения функций. Например, при использовании компонента <scs-title> в режиме редактирования edit добавляется редактор форматированного текста.

  • parentId: этот идентификатор указывает, что рендеринг компонента Oracle Content Management осуществляется как рендеринг вложенного компонента. Все изменения вложенного компонента сохраняются в данных пользовательского компонента.

  • id: уникальный идентификатор вложенного компонента. Используется для последующего связывания с пространством имен с помощью идентификатора пользовательского компонента.

  • data: исходные данные для вложенного компонента. Без дальнейших изменений рендеринг компонента будет осуществляться с этими исходными данными.

Значения id и mode со ссылкой передаются пользовательскому компоненту в объекте SampleComponentViewModel. Поэтому для получения этих значений не требуется изменять объект:

// Store the args
self.mode = args.viewMode;
self.id = args.id;

Синтаксис всех остальных поддерживаемых вложенных компонентов соответствует тому же шаблону, что и для <scs-paragraph>; например: <scs-image>, <scs-title>, <scs-button>.

Проверка результатов для шага 10

  1. Обновите страницу на своем сайте, чтобы приложение Site Builder могло отслеживать изменения в компоненте.

  2. Переключите страницу в режим редактирования.

  3. Перетащите свой компонент на страницу.

  4. Нажмите текст As a page author, you can edit. . . в компоненте и обновите описание с помощью редактора форматированного текста.

  5. Переключитесь в режим предварительного просмотра, чтобы просмотреть свое обновление.

  6. Переключитесь обратно в режим редактирования.

  7. Откройте панель "Настройки" для своего компонента.

  8. Перейдите по ссылке Компоненты, которая появляется в этот момент, так как обнаружен вложенный компонент.

  9. Нажмите Абзац — найденный вложенный компонент.

Теперь в своем компоненте можно обновить свойства компонента "Абзац".

Примечание.:

Пока не создан экземпляр компонента, платформе Oracle Content Management не известно ни о каких вложенных компонентах в данном шаблоне. Чтобы сообщить Oracle Content Management о скрытых вложенных компонентах, можно использовать API-интерфейс SitesSDK.setProperty('visibleNestedComponents', []);. Чтобы скрытые вложенные компоненты отображались по умолчанию, необходимо обновить массив "nestedComponents": [] в записи регистрации компонента.

Теперь выполните Шаг 11. Поддержка различных макетов.