Creación del componente básico H1

Puede eliminar la mayoría de los contenidos en los archivos predefinidos para crear un componente H1. Este muestra el texto de cabecera que incluye al crear viewModel. Posteriormente, puede proporcionar la configuración y los estilos para el componente.

Para revisar la estructura del componente local:

  1. Mediante la aplicación de sincronización de escritorio de Oracle Content Management, localice el componente y sincronícelo con el sistema de archivos.

    • En una versión reciente de la aplicación de sincronización de escritorio, seleccione la opción Iniciar sincronización o Seleccionar carpetas para sincronización.

    • Si no tiene la aplicación de sincronización de escritorio, puede seleccionar el componente en el separador Componentes de Oracle Content Management y, a continuación, aumentar el detalle para ver los archivos.

  2. Si muestra los archivos del componente, podrá ver los siguientes archivos:

    • Archivos del componente en la carpeta assets:

      • render.js

      • settings.html

    • appinfo.json: archivo JSON con la descripción del componente.

      Consulte Acerca del desarrollo de componentes.

    • folder_icon.jpg: icono que se muestra en el Catálogo de componentes.

Para crear un componente H1:

  1. Abra el archivo appinfo.json y sustituya su contenido por las siguientes líneas:
    {
       "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. Abra el archivo render.js de la carpeta assets en su editor de texto favorito.
  3. Cambie el contenido de render.js a las siguientes líneas:
    /* 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. En la carpeta assets, cree un nuevo archivo, render.html, para que sea la plantilla HTML simple del componente.
  5. Utilice el siguiente contenido en el archivo render.html:
    <h1 data-bind="text: headingText()">  
    </h1> 

    La carpeta assets del componente contiene ahora tres archivos.

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

Agregue el nuevo componente H1 a la página (punto de control 2).