ขั้นตอนที่ 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: ค่านี้อ้างอิงโหมดที่ตัวสร้างไซต์ทำงานอยู่ คุณสามารถใช้ค่านี้เพื่อใช้งานและเลิกใช้คุณสมบัติ ตัวอย่างเช่น เมื่อใช้งานโดยองค์ประกอบ <scs-title> จะเพิ่มโปรแกรมแก้ไขข้อความที่มีรูปแบบขณะที่รันอยู่ในโหมด แก้ไข

  • parentId: ค่านี้เป็นค่าที่จำเป็นเพื่อให้องค์ประกอบของ Oracle Content Management ทราบว่ากำลังแสดงเป็นองค์ประกอบที่ซ้อนกัน ระบบจะบันทึกการเปลี่ยนแปลงทั้งหมดขององค์ประกอบที่ซ้อนกันเป็นข้อมูลสำหรับองค์ประกอบที่กำหนดเอง

  • id: ID ที่ไม่ซ้ำกันสำหรับองค์ประกอบที่ซ้อนกัน ซึ่งจะได้รับการกำหนดเนมสเปซเพิ่มเติ่มตาม 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. รีเฟรชเพจของคุณในไซต์ของคุณเพื่อให้ตัวสร้างไซต์สามารถนำการเปลี่ยนแปลงไปใช้กับองค์ประกอบได้

  2. กำหนดให้เพจอยู่ในโหมดแก้ไข

  3. ลากและวางองค์ประกอบของคุณลงในเพจ

  4. คลิกที่ข้อความ ในฐานะผู้จัดทำเพจ คุณสามารถแก้ไข. . . ในองค์ประกอบของคุณ แล้วอัปเดตคำอธิบายโดยใช้โปรแกรมแก้ไขข้อความที่มีรูปแบบ

  5. สลับไปที่โหมดดูตัวอย่างเพื่อดูการอัปเดตของคุณ

  6. สลับกลับไปที่โหมดแก้ไข

  7. เปิดแผงการตั้งค่ากับองค์ประกอบของคุณ

  8. คลิกที่ลิงค์ องค์ประกอบ ที่ปรากฏขึ้นในขณะนี้ เนื่องจากพบองค์ประกอบที่ซ้อนกันของคุณ

  9. คลิกที่ ย่อหน้า ซึ่งเป็นองค์ประกอบที่ซ้อนกันที่พบ

คุณสามารถอัปเดตคุณสมบัติขององค์ประกอบย่อหน้าภายในองค์ประกอบของคุณได้

หมายเหตุ:

Oracle Content Management จะไม่ทราบข้อมูลเกี่ยวกับองค์ประกอบที่ซ้อนกันใดๆ ที่อาจอยู่ในเทมเพลท จนกว่าองค์ประกอบจะได้รับการเริ่มต้นอินสแตนซ์แล้ว ในการแจ้ง Oracle Content Management ให้รู้เกี่ยวกับองค์ประกอบที่ซ้อนกันที่ซ่อนอยู่ คุณสามารถใช้ API SitesSDK.setProperty('visibleNestedComponents', []); ได้ หากต้องการให้องค์ประกอบที่ซ้อนกันที่ซ่อนอยู่ปรากฏตามค่าดีฟอลต์ คุณต้องอัปเดตอาเรย์ "nestedComponents": [] ในการรีจิสเตอร์องค์ประกอบ

ดำเนินการต่อไปยัง ขั้นตอนที่ 11: รองรับเลย์เอาต์ที่แตกต่างกัน