您可以在「Oracle Content Management 元件目錄」中建立新的本機元件,然後透過在 assets 資料夾中新增及變更檔案來建置 HTML 元件。
HTML Component。
mustache.min.js 檔案至 HTML 元件的 assets 資料夾。assets 資料夾中建立一個名為 render.html 的新檔案,其中包含元件主體的 HTML。就本範例來說,建立包含以下內容的 render.html 檔案:
<ul class="wrapper">
<li class="box">
<h1 class="title">One</h1>
<p class="text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</li>
<li class="box">
<h1 class="title">Two</h1>
<p class="text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</li>
<li class="box">
<h1 class="title">Three</h1>
<p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua./p>
</li>
<li class="box">
<h1 class="title">Four</h1>
<p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</li>
</ul>assets 資料夾中建立一個名為 design.css 的新檔案,此為元件的 CSS。就本範例來說,新增下列命令行以作為 design.css 檔案的內容:
.wrapper {
text-align: center;
}
.box {
display: inline-block;
position: relative;
width: 200px;
height: 200px;
padding:0px 10px 10px 10px;
background: transparent;
border-width:1px;
border-style:solid;
border-radius: 5px;
border-color:#CCCCCC;
z-index: 0;
margin: 2px 2px 2px 2px;
transition: all .15s ease-in-out;
}
.box:hover {
background: #9CC;
z-index: 100;
transform: scale(1.2,1.2);
box-shadow: 0 5px 10px 0 rgba(0,0,0,.2);
}
.title {
color:red;
}
.text {
color:#555555;
}assets 資料夾中的 render.js 檔案,將其內容變更如下。不論在前面步驟使用的 HTML和 CSS 為何,下列 render.js 檔案都會將 HTML 和 CSS 呈現為頁面:
/* globals define */
define(['jquery', './mustache.min', 'text!./render.html', 'css!./design.css'], function($, Mustache, template, css) {
'use strict';
// ----------------------------------------------
// Create a Mustache-based component implemention
// ----------------------------------------------
var SampleComponentImpl = function(args) {
this.SitesSDK = args.SitesSDK;
// Initialze the custom component
this.createTemplate(args);
this.setupCallbacks();
};
// create the template based on the initial values
SampleComponentImpl.prototype.createTemplate = function(args) {
// create a unique ID for the div to add, this will be passed to the callback
this.contentId = args.id + '_content_' + args.viewMode;
// create a hidden custom component template that can be added to the DOM
this.template = '<div id="' + this.contentid + '">' +
template +
'</div>';
};
SampleComponentImpl.prototype.updateSettings = function(settings) {
if (settings.property === 'customSettingsData') {
this.update(settings.value);
}
};
SampleComponentImpl.prototype.update = function(data) {
this.data = data;
this.container.html(Mustache.to_html(this.template, this.data));
};
//
// SDK Callbacks
// setup the callbacks expected by the SDK API
//
SampleComponentImpl.prototype.setupCallbacks = function() {
//
// callback - render: add the component into the page
//
this.render = $.proxy(function(container) {
this.container = $(container);
this.SitesSDK.getProperty('customSettingsData', $.proxy(this.update, this));
}, this);
//
// callback - SETTINGS_UPDATED: retrive new custom data and re-render the component
//
this.SitesSDK.subscribe(this.SitesSDK.MESSAGE_TYPES.SETTINGS_UPDATED, $.proxy(this.updateSettings, this));
//
// callback - dispose: cleanup after component when it is removed from the page
//
this.dispose = $.proxy(function() {
// nothing required
}, this);
};
// ----------------------------------------------
// Create the factory object for your component
// ----------------------------------------------
var sampleComponentFactory = {
createComponent: function(args, callback) {
// return a new instance of the component
return callback(new SampleComponentImpl(args));
}
};
return sampleComponentFactory;
});確認已建置 HTML 元件 (檢查點 1):
確認元件的 assets 資料夾中包含以下五個檔案。
將新的 HTML 元件加到測試網站的頁面中。在編輯器中,您應該會在「編輯」和「預覽」模式看到頁面中的元件以下列方式呈現。
「編輯」模式

「預覽」模式
