Grundlegende H1-Komponente erstellen

Sie können den Großteil des Inhalts in vordefinierten Dateien entfernen, um eine H1-Komponente zu erstellen. Diese zeigt den Überschriftstext an, den Sie beim Erstellen von viewModel vordefinieren. Später können Sie dann Einstellungen und Stile für die Komponente angeben.

So prüfen Sie die Struktur einer lokalen Komponente:

  1. Suchen Sie mit der Oracle Content Management-App für die Desktopsynchronisierung Ihre Komponente, und synchronisieren Sie diese mit dem Dateisystem.

    • Wählen Sie in einer aktuellen Version der Desktopsynchronisierungs-App die Option Synchronisierung starten oder Ordner für Synchronisierung auswählen aus.

    • Wenn Sie nicht über die Desktopsynchronisierungs-App verfügen, können Sie die Komponente auf der Registerkarte Komponenten von Oracle Content Management auswählen und dann einen Drilldown ausführen, um die Dateien anzuzeigen.

  2. In der Liste der Dateien unter der Komponente sehen Sie die folgenden Dateien:

    • Die Komponentendateien im assets-Ordner:

      • render.js

      • settings.html

    • appinfo.json: JSON-Datei mit der Komponentenbeschreibung.

      Siehe Informationen zum Entwickeln von Komponenten.

    • folder_icon.jpg: Symbol, das im Komponentenkatalog angezeigt wird.

So erstellen Sie eine H1-Komponente:

  1. Öffnen Sie die Datei appinfo.json , und ersetzen Sie deren Inhalt durch die folgenden Zeilen:
    {
       "id": "h1-component-id",
    
       "settingsData": {
                 "settingsHeight": 90,
                 "settingsWidth": 300,
                 "settingsRenderOption": "inline",
                 "componentLayouts": [ ],
                 "triggers": [ ],
                 "actions": [ ]
       },
       "initialData": {
                 "componentId": "h1-component-id",
                 "customSettingsData": {
                         "headingText": "Heading 1"
                 },
                 "nestedComponents": [ ]
       }
    }
  2. Öffnen Sie die Datei render.js im assets-Ordner in Ihrem bevorzugten Texteditor.
  3. Ändern Sie den Inhalt von render.js in die folgenden Zeilen:
    /* globals define */
    define(['knockout', 'jquery', 'text!./render.html'], function(ko, $, template) {
      'use strict';
      // ----------------------------------------------
      // Define a Knockout ViewModel for your template
      // ----------------------------------------------
      var SampleComponentViewModel = function(args) {
        var SitesSDK = args.SitesSDK;
        // create the observables -- this allows updated settings to automatically update the HTML on the page
        this.headingText = ko.observable();
    
        //
        // Handle property changes from the Settings panel
        //
        this.updateCustomSettingsData = $.proxy(function(customData) {
          this.headingText(customData && customData.headingText);
        }, this);
        this.updateSettings = function(settings) {
          if (settings.property === 'customSettingsData') {
            this.updateCustomSettingsData(settings.value);
          } 
        };
        // Register your updateSettings listener to recieve SETTINGS_UPDATED events
        SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.SETTINGS_UPDATED, $.proxy(this.updateSettings, this)); 
    
        //
        // Get the initial settings data for the component and apply it
        //
        SitesSDK.getProperty('customSettingsData', this.updateCustomSettingsData);
      };
    
    
      // ----------------------------------------------
      // Create a knockout based component implemention
      // ----------------------------------------------
      var SampleComponentImpl = function(args) {
        // Initialze the custom component
        this.init(args);
      };
      // initialize all the values within the component from the given argument values
      SampleComponentImpl.prototype.init = function(args) {
        this.createViewModel(args);
        this.createTemplate(args);
        this.setupCallbacks();
      };
      // create the viewModel from the initial values
      SampleComponentImpl.prototype.createViewModel = function(args) {
        // create the viewModel
        this.viewModel = new SampleComponentViewModel(args);
      };
      // 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>';      
      };
      //
      // 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) {
          var $container = $(container);
          // add the custom component template to the DOM
          $container.append(this.template);
          // apply the bindings
          ko.applyBindings(this.viewModel, $('#' + this.contentId)[0]);
        }, this);
        //
        // callback - dispose: cleanup after component when it is removed from the page
        //
        this.dispose = $.proxy(function() {
          // nothing required for this sample since knockout disposal will automatically clean up the node
        }, 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;
    });
  4. Erstellen Sie im assets-Ordner die neue Datei render.html als einfache HTML-Vorlage der Komponente.
  5. Verwenden Sie den folgenden Inhalt in der Datei render.html:
    <h1 data-bind="text: headingText()">  
    </h1> 

    Der assets-Ordner der Komponente enthält nun drei Dateien:

    • render.html
    • render.js
    • settings.html

Fügen Sie die neue H1-Komponente Ihrer Seite hinzu (Checkpoint 2).