10

いくつかの機能を追加するために、javascript ファイルの 1 つの動作をオーバーライドして、ユーザー インターフェイス (SiteEdit) の GUI 拡張を行っています。JavaScript ファイルは「/Scripts/Components/ExtComponentField.js」で、ターゲットは「SiteEdit」拡張です。

Tridion.Web.UI.Editors.SiteEdit.Views.Content

すべてが拡張機能でうまく機能し、必要なものはありますが、今は使用しようとしています

設定/カスタム構成/クライアント構成

いくつかの初期化パラメータを使用するための拡張設定のノードですが、JavaScript の$config要素にアクセスする方法がなく、 Tridion.Core.Configuration.Editors["myExt"].configurationが null です。

「ダッシュボード」や「フットプリント」などのさまざまな JavaScript でこのカスタム構成を使用しているのを見てきましたが、「コンテンツ」で使用することは可能ですか? 拡張機能の設定で何か不足していますか?

4

3 に答える 3

3

「コンテンツ」グループに含まれるコードは、公開された Web ページをホストしている IFRAME 内で実行されています。ご想像のとおり、そこに含まれるファイルの量は最小限に抑える必要があるため、かなり多くの機能が利用できません。

私の提案は、メイン ウィンドウでのみ構成を読み取り、必要な設定を IFRAME で実行されているコードに渡すことです (Tridion.Utils.CrossDomainMessaging ユーティリティ クラス ($xdm) を使用)。

于 2012-11-27T12:39:20.210 に答える
3

申し訳ありませんが、これをテストしていませんが、次を使用できるはずです。

Extensions.YourExt.getConfigurationItem = function (itemName, editorName)
{
    var editor = $config.Editors[editorName].configuration;
    if (editor)
    {
        var confXml = $xml.getNewXmlDocument(editor);
        var confObj = $xml.toJson(confXml);

        if (confObj[itemName])
            return confObj[itemName];
        else
            return "";
    }
}

その後、次の方法で使用できます。

$this.getConfigurationItem("YOUR_CONFIG_ITEM_NAME", "YOUR_EDITOR_NAME").toString();

拡張構成 (<theme>ノードの下) で、独自の構成値を入力できます。

<customconfiguration>
  <clientconfiguration xmlns="http://www.sdltridion.com/2009/GUI/Configuration/Merge">
  <YOUR_CONFIG_ITEM_NAME>The value</YOUR_CONFIG_ITEM_NAME>

確認できますか:)

于 2012-11-20T22:09:38.310 に答える
3

私は通常、次のような別の JS ファイルを使用します。

Type.registerNamespace("Extensions.Namespace");

Extensions.Namespace.getEditorConfigSection = function Editor$getEditorConfigSection() {
    if (this._settings === undefined) {
        var editor = $config.Editors["ThisEditorName"];
        if (editor && editor.configuration && !String.isNullOrEmpty(editor.configuration)) {
            var configSectionXmlDoc = $xml.getNewXmlDocument(editor.configuration);
            this._settings = $xml.toJson(configSectionXmlDoc.documentElement);
        }
    }
    return this._settings;
};

構成で、別のグループに追加します。

<cfg:group name="Extensions.Namespace" merge="always">
    <cfg:fileset>
        <cfg:file type="script">/Scripts/Definitions.js</cfg:file>
    </cfg:fileset>
</cfg:group>

次に、必要な場所に次の依存関係を追加できます。

<cfg:dependency>Extensions.Namespace</cfg:dependency>

次に、通常、次のような関数を使用して特定の構成値を取得します。

Extensions.Namespace.Something.prototype._getMyConfigValue = function Something$_getMyConfigValue() {
    var configSection = Extensions.Namespace.getEditorConfigSection();
    if (configSection) {
        return configSection.myconfigvalue;
    }
};
于 2012-11-21T14:30:03.120 に答える