ในขั้นตอนนี้ เราจะมาดูโครงสร้างของไฟล์ดีฟอลต์ที่สร้างขึ้นสำหรับองค์ประกอบในระบบ
สำหรับตัวอย่าง Hello World แบบง่าย ออบเจกต์ JavaScript สี่รายการและรหัสหลายบรรทัดอาจดูมากเกินไป แต่วิธีนี้เป็นการช่วยให้คุณมีเกณฑ์สำหรับการสร้างองค์ประกอบที่ซับซ้อนยิ่งขึ้น รวมถึงการจัดการกับการโต้ตอบกับรอบการใช้งานของเพจ Oracle Cloud Sites Service
ในการตรวจสอบโครงสร้างขององค์ประกอบในระบบ ให้ทำดังนี้
บนโฮมเพจ Oracle Content Management ให้คลิก ผู้พัฒนา
ระบบจะแสดงเพจ ผู้พัฒนา
คลิก ดูองค์ประกอบทั้งหมด
จากเมนู เลือก สร้างองค์ประกอบในระบบ
ป้อนชื่อสำหรับองค์ประกอบ ตัวอย่างเช่น A_Local_Component
ป้อนคำอธิบายที่เลือกระบุได้
คลิก สร้าง
หลังจากที่คุณดำเนินการเสร็จสิ้นแล้ว คุณจะเห็นองค์ประกอบที่ชื่อ A_Local_Component ในลิสต์องค์ประกอบของคุณ
ค้นหาองค์ประกอบของคุณและซิงโครไนซ์กับระบบไฟล์ โดยใช้ไคลเอนต์การซิงโครไนซ์บนเดสก์ท็อปของ Oracle Content Management
หากคุณไม่มีเดสก์ท็อปไคลเอนต์ คุณสามารถดูองค์ประกอบทั้งหมดและเลือกองค์ประกอบในเพจองค์ประกอบของอินเตอร์เฟซ Oracle Content Management จากนั้นดริลล์ดาวน์เพื่อดูไฟล์ต่างๆ
ถ้าคุณแสดงไฟล์ภายใต้องค์ประกอบ คุณจะเห็นไฟล์เหล่านี้
assets
render.js
settings.html
appinfo.json
_folder_icon.jpgเปิดไฟล์ render.js ภายใต้ไดเรคทอรี /assets
render.js มีดังนี้:
มีการจัดโครงสร้างเป็นโมดูล JavaScript AMD เพื่อให้สามารถ “กำหนดให้ต้องมี” ในเพจ
นอกจากนี้ยังมีการอ้างอิงไปยัง KnockoutJS และ JQuery ที่ได้รับการโหลดเป็นส่วนหนึ่งของเพจ Oracle Content Management อยู่แล้ว
พิจารณาโครงสร้างของไฟล์ render.js
ในเนื้อหาของไฟล์ render.js จะมีออบเจกต์ JavaScript สองรายการที่จะใช้งาน API องค์ประกอบ Oracle Content Management: sampleComponentFactory และ SampleComponentImpl ออบเจกต์เหล่านี้เป็นตัวอย่างของการใช้งานสำหรับการสร้างองค์ประกอบที่ใช้ KnockoutJS ใดๆ การใช้งานออบเจกต์เหล่านี้จะเปลี่ยนไปตามเทคโนโลยีที่คุณใช้
sampleComponentFactory
ออบเจกต์นี้แสดงโดยโมดูล AMD render.js
นี่เป็นออบเจกต์แฟคตอรีแบบง่ายมาก และใช้งานอินเตอร์เฟซ createComponent() เดียว
การใช้งานที่ซับซ้อนยิ่งขึ้นอาจใช้ค่า args ที่ระบุเพื่อแสดงการใช้งานอื่นขององค์ประกอบตามพารามิเตอร์ viewMode วิธีนี้ช่วยให้คุณมีการใช้งานองค์ประกอบที่เบาลงอย่างมากสำหรับรันไทม์เทียบกับตัวสร้างไซต์
SampleComponentImpl
ฟังก์ชันหลักภายในออบเจกต์นี้คือฟังก์ชัน render ซึ่งใช้เพื่อแสดงผลองค์ประกอบลงในเพจ
ในการแสดงผลองค์ประกอบ Knockout ลงในเพจ ฟังก์ชัน render จะเพิ่มเทมเพลทลงในเพจแบบไดนามิก จากนั้นจะใช้การเชื่อมโยง viewModel กับเทมเพลท
ส่วนที่เหลือของการใช้งานจะเกี่ยวข้องกับการเริ่มต้นของพารามิเตอร์และเทมเพลท viewModel และเกี่ยวข้องกับการจัดการการรับส่งข้อความระหว่างเพจและองค์ประกอบ
ออบเจกต์สองรายการสุดท้ายในไฟล์ render.js ได้แก่ sampleComponentTemplate และ SampleComponentViewModel จะให้การใช้งานที่กำหนดเองสำหรับองค์ประกอบ การใช้งานรายการเหล่านี้จะต่างกันไปตามความต้องการของคุณ
sampleComponentTemplate
ออบเจกต์นี้จะให้การสร้างเทมเพลท KnockoutJS โดยจะรอจนกว่าองค์ประกอบมีข้อมูลทั้งหมดที่เริ่มต้นก่อนพยายามแสดงทุกสิ่ง
SampleComponentViewModel
viewModel จะดึงข้อมูลที่จัดเก็บไว้โดย Oracle Content Management ในนามขององค์ประกอบ แล้วเลือกวิธีจัดเลย์เอาต์องค์ประกอบตามข้อมูลนั้นอย่างเหมาะสม
รายการที่สังเกตเห็นได้ของ Knockout ทั่วไปที่ใช้โดยเทมเพลทเพื่อจัดการการเข้าใช้เมตะดาต้าที่จัดเก็บในนามขององค์ประกอบ:
self.imageWidth = ko.observable('200px');
self.alignImage = ko.observable();
self.layout = ko.observable();
self.showTopLayout = ko.observable();
self.showStoryLayout = ko.observable();การทำงานร่วมกันของทริกเกอร์และการดำเนินการ:
ทริกเกอร์: ฟังก์ชันเพื่อเรียกทริกเกอร์ Oracle Content Management จากองค์ประกอบที่สามารถเชื่อมโยงกับการดำเนินการขององค์ประกอบอื่นบนเพจ
self.imageClicked = function (data, event) {
self.raiseTrigger("imageClicked"); // matches appinfo.json
};
การดำเนินการ: ฟังก์ชันในการจัดการการเรียกกลับสำหรับกรณีที่องค์ประกอบต้องรันการดำเนินการด้วยเพย์โหลดที่ระบุ
self.executeActionsListener = function (args) {
// get action and payload
var payload = args.payload,
action = args.action;
// handle 'setImageWidth' actions
if (action && action.actionName === 'setImageWidth') {
$.each(payload, function(index, data) {
if (data.name === 'imageWidth') {
self.imageWidth(data.value);
}
});
}
};
การเรียกกลับ เพื่อรันการดำเนินการที่รีจิสเตอร์ใดๆ เมื่อต้องการ
SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.EXECUTE_ACTION, $.proxy(self.executeActionsListener, self));
การสมัครรอบการใช้งานขององค์ประกอบ:
การเริ่มต้นองค์ประกอบ: ตรวจสอบให้แน่ใจว่าองค์ประกอบไม่แสดงผลจนกว่าจะมีการดึงข้อมูลทั้งหมดแล้ว การดำเนินการนี้จะได้รับการจัดการผ่านรายการที่สังเกตเห็นได้ของ Knockout
self.componentLayoutInitialized = ko.observable(false); self.customSettingsDataInitialized = ko.observable(false);
เรียกค่าเริ่มต้นสำหรับคุณสมบัติที่จำเป็นใดๆ การทำงานนี้จัดการโดยการเรียกกลับเพื่อดึงข้อมูล
SitesSDK.getProperty('componentLayout', self.updateComponentLayout);
SitesSDK.getProperty('customSettingsData', self.updateCustomSettingsData);การอัปเดตเมตะดาต้า: เรียกกลับเมื่อใดก็ตามที่มีการเปลี่ยนแปลงเมตะดาต้าขององค์ประกอบที่จัดเก็บในนามขององค์ประกอบ ตัวอย่างเช่น เมื่อผู้ใช้เรียกใช้แผงการตั้งค่าและอัปเดตข้อมูล
SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.SETTINGS_UPDATED, $.proxy(self.updateSettings, self));
หมายเหตุ:
เนื่องจากเซิร์ฟเวอร์ Oracle Content Management ตั้งค่า mime-type สำหรับไฟล์.html เสมอ คุณจะไม่สามารถอัปโหลดไฟล์ .html และใช้ปลั๊กอินที่จำเป็น "text!" เพื่อโหลดได้ ดังนั้นสำหรับเทมเพลท คุณต้องใช้ส่วนขยายอื่นเพื่อโหลดโดยใช้ "text!" หรือโหลดแบบอินไลน์ใน JavaScript โดยตรงตามที่แสดงในข้อมูลที่มีให้เลือกตรวจสอบผลลัพธ์สำหรับขั้นตอนที่ 2
ตอนนี้คุณควรทราบภาพรวมสำหรับวิธีการสร้างโครงสร้างของตัวแสดงผลองค์ประกอบที่กำหนดเองแล้ว ในการตรวจสอบว่าใช้งานได้ ให้ทำดังนี้
อัปเดตออบเจกต์ sampleComponentTemplate ในไฟล์ render.js เพื่อเปลี่ยนแปลงรายการต่อไปนี้ เปลี่ยนรหัสนี้:
'<!-- ko if: initialized -->'+
ใช้รหัสนี้แทน:
'<!-- ko if: initialized -->'+ '<div data-bind="text:\'image width is: \' + imageWidth()"></div>' +
ซิงโครไนซ์หรืออัปโหลดองค์ประกอบไปยังเซิร์ฟเวอร์อินสแตนซ์ Oracle Content Management
แก้ไขเพจภายในไซต์ แล้ววางในองค์ประกอบที่กำหนดเอง A_Local_Component บนเพจ
ที่จุดนี้ คุณควรเห็น ความกว้างของภาพคือ: 260px ในองค์ประกอบ
เปิดแผงการตั้งค่า และคลิกปุ่ม การตั้งค่าที่กำหนดเอง
เปลี่ยนฟิลด์ ความกว้างของภาพ เป็น 300px
ภาพดีฟอลต์จะขยายขนาดจาก 260px เป็น 300px
ข้อความที่คุณเพิ่มจะอัปเดตเป็น ความกว้างของภาพคือ 300px
ดำเนินการต่อไปยัง ขั้นตอนที่ 3: ตรวจสอบโครงสร้างของการตั้งค่าองค์ประกอบในระบบ