Компоненты Oracle Content Management внедряются с помощью архитектуры компонента KnockoutJS. Это означает, что если для внедрения компонентов используется KnockoutJS, встроенные компоненты Oracle Content Management можно включить непосредственно в шаблон.
Примечание.:
Так как встроенные компоненты Oracle Content Management могут выполняться только на странице Oracle Content Management. Невозможно использовать вложенные компоненты в случае их рендеринга во встроенной рамке.Чтобы использовать вложенные компоненты, выполните указанные ниже действия.
Внедрите свой компонент с помощью KnockoutJS.
С помощью 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
Обновите страницу на своем сайте, чтобы приложение Site Builder могло отслеживать изменения в компоненте.
Переключите страницу в режим редактирования.
Перетащите свой компонент на страницу.
Нажмите текст As a page author, you can edit. . .
в компоненте и обновите описание с помощью редактора форматированного текста.
Переключитесь в режим предварительного просмотра, чтобы просмотреть свое обновление.
Переключитесь обратно в режим редактирования.
Откройте панель "Настройки" для своего компонента.
Перейдите по ссылке Компоненты, которая появляется в этот момент, так как обнаружен вложенный компонент.
Нажмите Абзац — найденный вложенный компонент.
Теперь в своем компоненте можно обновить свойства компонента "Абзац".
Примечание.:
Пока не создан экземпляр компонента, платформе Oracle Content Management не известно ни о каких вложенных компонентах в данном шаблоне. Чтобы сообщить Oracle Content Management о скрытых вложенных компонентах, можно использовать API-интерфейсSitesSDK.setProperty('visibleNestedComponents', []);
. Чтобы скрытые вложенные компоненты отображались по умолчанию, необходимо обновить массив "nestedComponents": []
в записи регистрации компонента.Теперь выполните Шаг 11. Поддержка различных макетов.