3

カスタムaspxページに「コンポーネントプレゼンテーションの挿入」機能を導入することを想定しています(「CPの挿入」ボタンをクリックするとポップアップします)

  1. カスタムボタン「CP挿入」を作成(完了)
  2. ユーザーがリッチ テキスト ボックスから任意のテキストを選択してボタンをクリックすると、ユーザーがコンポーネントとコンポーネント テンプレートを選択できるウィンドウを開く必要があります。

ユーザーがコンポーネントとコンポーネントテンプレートを選択できるウィンドウを表示する方法を提案/アイデアを与えることができますか (ユーザーがページを開いてコンポーネントプレゼンテーションタブに移動し、「挿入」ボタンをクリックすると、同じ機能がComponent Rich Text ボックスから見ています。)

4

2 に答える 2

10

ポップアップを開くためにこれを行う ComponentPresentations.js を見てください。

Tridion.Cme.ComponentPresentationsTab.prototype.onInsertClick = 
             function ComponentPresentationsTab$onInsertClick()
{
    var p = this.properties;
    if (p.insertDialog.isOpen())
    {
        p.insertDialog.focus();
    }
    else
    {
        p.insertDialog.open();
    }
};

もちろん、その前にp.insertDialogが適切に初期化されていることを確認する必要があります。これは_initializeInsertDialogメソッドで行います。そのためのコードはここでは再現しません。調べることができ、著作権で保護された素材であるためです (上記のスニペットを再現するだけでもフェアユースに該当すると考えます)。


:この回答は次の方法で得ました:

  1. ページ ポップアップの [Component Presentations] タブの [Insert] ボタンを右クリック
  2. 「要素を検査」を選択
  3. 要素の ID を記録する (buttonComponentInsertこの場合)
  4. web\WebUITridion インストール フォルダのサブディレクトリでその値を検索する

これにより、ComponentPresentations.js というファイルで単一のヒットが発生しました。

buttons.Insert = $controls.getControl($("#buttonComponentInsert"),
                                      "Tridion.Controls.Button");

ここで HTML のボタンが機能的なコントロールに変換されるため、あとは ComponentPresentation.js 内でそのボタンに何が起こるかを追うだけです。

于 2012-07-31T15:06:19.060 に答える
2

問題の根本に関する詳細情報を提供するには: ニーズに基づいて、ほとんどの場合、コンテンツ配信パーツでコンポーネント リンクをレンダリングするときに、コンポーネント テンプレート パーツを実際に参照する必要はありません。

コンテンツ配信中にそれらをレンダリングするときのコンポーネント テンプレート パーツは、Web サイトで異なるコンポーネント テンプレートで同じコンポーネントを使用している場合にのみ必要です。はい、コンテンツ配信 API にはコンポーネント テンプレートの引数/パラメーターがありますが、このような場合にのみ使用されます。

異なるページの異なるコンポーネント テンプレートで同じコンポーネントを使用する場合でも、コンポーネント テンプレートを直接参照するよりも、コンポーネント テンプレートの優先順位を正しく設定することをお勧めします。テンプレートの優先度の詳細については、Tridion のドキュメントを参照してください。

結論: ほとんどの場合、コンポーネント URI を使用してコンポーネント リンクを作成するだけで済みます。Tridion のドキュメントで優先順位のリンクについて詳しくお読みください。

于 2012-08-01T08:58:09.090 に答える