Temel H1 Bileşenini Oluşturma

H1 bileşeni oluşturmak için önceden temel verili hale getirilmiş dosyalardaki içeriğin çoğunu kaldırabilirsiniz. viewModel oluştururken önceden temel verili hale getirdiğiniz başlık metnini görüntüler. Daha sonra bileşen için ayarları ve stilleri sağlayabilirsiniz.

Yerel bileşeninizin yapısını gözden geçirmek için:

  1. Oracle Content Management Masaüstü Senkronizasyonu Uygulamasını kullanarak bileşeninizi bulun ve dosya sistemiyle eşzamanlı kılın.

    • Masaüstü Senkronizasyonu Uygulamasının yakın tarihli bir sürümünde Senkronizasyonu Başlat veya Senkronize Edilecek Dosyaları Seç seçeneğini kullanın.

    • Masaüstü Senkronizasyonu Uygulamanız yoksa Oracle Content Management'in Bileşenler sekmesinde bileşeni seçin ve dosyaları görmek için detaya gidin.

  2. Bileşen altındaki dosyaları listelerseniz şu dosyaları görebilirsiniz:

    • assets klasöründeki bileşen dosyaları:

      • render.js

      • settings.html

    • appinfo.json: Bileşen açıklamasını içeren JSON dosyası.

      Bkz. Bileşen Geliştirme Hakkında.

    • folder_icon.jpg: Bileşen Kataloğunda görüntülenen simge.

H1 Bileşeni oluşturmak için:

  1. Appinfo.json dosyasını açın ve dosyanın içeriğini şu satırlarla değiştirin:
    {
       "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. assets klasöründeki render.js dosyasını istediğiniz bir metin düzenleyicisinde açın.
  3. Render.js dosyasının içeriğini şu satırlarla değiştirin:
    /* 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. assets klasöründe, bileşenin basit HTML şablonu olacak yeni bir dosya (render.html) oluşturun.
  5. Render.html dosyasında şu içeriği kullanın:
    <h1 data-bind="text: headingText()">  
    </h1> 

    Bileşenin assets klasörü şimdi üç dosya içerir.

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

Yeni H1 bileşenini sayfanıza ekleyin (Denetim Noktası 2).