단계 10: 인라인 편집과 함께 중첩 구성요소 사용

Oracle Content Management 구성요소는 KnockoutJS 구성요소 구조를 사용하여 구현됩니다. 즉, KnockoutJS를 사용하여 구성요소를 구현하는 경우 템플리트에 직접 Oracle Content Management 내장 구성요소를 포함할 수 있습니다.

주:

Oracle Content Management 내장 구성요소는 Oracle Content Management 페이지에서만 실행할 수 있으므로 구성요소가 인라인 프레임으로 렌더링된 경우 중첩 구성요소를 사용할 수 없습니다.

중첩 구성요소를 활용하려면 다음과 같이 하십시오.

  1. KnockoutJS를 사용하여 구성요소를 구현합니다.

  2. RequireJS를 사용하여 구성요소를 포함하고 Oracle Content Management에서 생성된 동일한 Knockout "ko" 인스턴스 변수를 사용합니다.

    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>' +
params 템플리트 바인딩에 전달된 scsComponent 데이터에는 다음이 포함됩니다.
  • renderMode: 사이트 작성기가 있는 모드를 나타납니다. 이를 통해 기능을 사용 및 사용 안함으로 설정할 수 있습니다. 예를 들어, <scs-title> 구성요소에서 사용될 경우 edit 모드로 실행할 때 서식 있는 텍스트 편집기를 추가합니다.

  • parentId: Oracle Content Management 구성요소가 중첩 구성요소로 렌더링되고 있음을 인지하려면 이 속성이 필요합니다. 중첩 구성요소의 모든 변경사항은 사용자정의 구성요소의 데이터에 저장됩니다.

  • id: 중첩 구성요소의 고유 ID입니다. 사용자정의 구성요소의 ID에 따라 추가 네임스페이스가 지정됩니다.

  • data: 중첩 구성요소의 초기 데이터입니다. 구성요소가 더 수정되지 않으면 이 초기 데이터로 렌더링됩니다.

참조된 idmode 값은 SampleComponentViewModel 객체의 사용자정의 구성요소에 전달되므로 이 값을 가져오도록 객체를 수정할 필요가 없습니다.

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

그 밖에 모든 지원되는 중첩 구성요소의 구문은 <scs-paragraph>와 동일한 패턴을 따릅니다. 예: <scs-image>, <scs-title>, <scs-button>.

단계 10의 결과 확인

  1. 사이트 작성기가 구성요소의 변경사항을 가져올 수 있도록 사이트의 페이지를 새로고침합니다.

  2. 페이지를 편집 모드로 전환합니다.

  3. 구성요소를 페이지 위에 끌어 놓습니다.

  4. 구성요소의 As a page author, you can edit. . . 텍스트를 누르고 서식 있는 텍스트 편집기를 사용하여 설명을 업데이트합니다.

  5. 미리보기 모드로 전환하여 업데이트를 확인합니다.

  6. 편집 모드로 다시 전환합니다.

  7. 구성요소에 대해 설정 패널을 불러옵니다.

  8. 중첩 구성요소를 찾았으므로 지금 나타나는 구성요소 링크를 누릅니다.

  9. 발견한 중첩 구성요소인 단락을 누릅니다.

이제 구성요소 내의 단락 구성요소에 대해 속성을 업데이트할 수 있습니다.

주:

구성요소가 인스턴스화될 때까지 Oracle Content Management는 어떤 중첩 구성요소가 템플리트에 존재하는지 모릅니다. Oracle Content Management에 숨겨진 중첩 구성요소를 알리려면 SitesSDK.setProperty('visibleNestedComponents', []); API를 사용할 수 있습니다. 숨겨진 중첩 구성요소를 기본적으로 표시하려면 구성요소 등록에서 "nestedComponents": [] 배열을 업데이트해야 합니다.

단계 11: 다양한 레이아웃 지원을 계속합니다.