0

TridionにImageフィールド(leadImageという名前)を持つ埋め込みコンポーネントがあります。カスタマイズされたポップアップを使用して、この画像フィールド(leadImage)の画像をリンクしたいと思います。出来ますか?これは、コンポーネントの「保存」イベントをクリックして実行する必要があります。したがって、主にjquery/javascriptをクリックします。

リンクする画像はすでにCMSシステムにあります。カスタマイズされたポップアップで他のアクションを実行することにより、デフォルトで作成されます。画像のtcmid/画像名などを取得します。

これを達成するのに役立つAnguillaApiに関する多くのドキュメントを見つけることができません。

4

3 に答える 3

6

はい、Anguillaフレームワークを使用して、SDLTridionGUIの[コンポーネントの挿入]ボタンをオーバーライドすることができます。

anquillaフレームワークについてはたくさんの投稿があります...私はこれをお勧めしますhttp://albertromkes.com/2012/01/30/tridion-gui-extensions-how-to-load-a-javascript- without-showing-a-gui-element /は、独自のJavaScriptを特定の「ビュー」に挿入する方法を示します。

コンポーネントの挿入ボタンをオーバーライドするには、イベントハンドラーを削除するだけです。

// remove the default insert behavior which is to open up the item select dialog
$log.message("Removing handlers for the insert event");
$evt.removeAllEventHandlers(fieldBuilder, "insert");

次に、独自のイベントハンドラーを追加することで、独自の機能をそこに配置できます。

// add our own insert behavior
$log.message("Adding a custom handler for the insert event");
$evt.addEventHandler(fieldBuilder, "insert", function(event) {
  // whatever it is you wish to do :)
}

お役に立てれば!

于 2013-01-31T00:07:44.557 に答える
0

「埋め込みコンポーネント」は、(スキーマフィールドオプションで)Component Link許可Multimedia Linksまたは場合によってはそれ自体であると想定します。Multimedia Link

すぐに使用できるスキーマフィールドのデフォルト

「カスタマイズされたポップアップで他のアクション」を使用して画像を作成し、デフォルトのリンクされたコンポーネントを設定しているという事実を除いて、次のことができます。

  1. Default Valueスキーマフィールドのリンクされたアイテムにを設定します
  2. Defaultテンプレートまたはレンダリングロジックを設定します

関係

それ以外の場合は、さまざまなアプローチのいずれかを使用して、画像間の関係を作成します。

  • 手動でキュレートされたリスト(「リンクリスト」または「コンテナ」コンポーネント)
  • 「構成」コンポーネント(キーと値のペア)
  • 組織アイテム-特定のフォルダー内のアイテム
  • 命名規則-類似した名前のアイテムは一緒にレンダリングされます
  • カテゴリとキーワード(分類分類)

作成者は、リンク先の画像を制御したり、レンダリング用に自動的に追加したりできることを期待しています。必ずしもコンポーネントに含まれている必要はありません。

変更とBluePrinting

特定のフィールドの拡張は確かに可能ですが、特定のスキーマフィールドの特定のフィールドに対してこれを作成することにはリスクがあります。新しいコンポーネント、新しいロジック、およびスキーマの変更に対してアプローチが機能することを確認してください。

を追加するプログラム要件がある場合は、leadimageこれをテンプレートロジックに配置して、各コンポーネントに再度アクセスすることなく、すべてのコンポーネントプレゼンテーションで、パブリケーション間で簡単に変更できるようにすることを検討してください。また、コンポーネントIDが、これらのコンポーネントが作成される場所に正しいパブリケーションIDを使用していることを確認してください。

たとえば、tcm-idが020コンテンツパブリケーションよりも下位のパブリケーションからのものであるローカライズされたバージョンを処理する必要があります。

興味深い要件のように聞こえますが、他のアクションが何をすべきかについてコメントを残してください。

于 2013-01-31T00:41:13.607 に答える
0

迅速な対応をしてくれたジョンに感謝します。これは私が探していたものと一致しています。

私のフィールドビルダーには多くのフィールドがあるので、次のようにコードを変更しました。

var imageField = fieldBuilder.getField("lead_image"); // Where lead_image is the name for ImageField in this component

// remove the default insert behavior which is to open up the item select dialog
$log.message("Removing handlers for the insert event");
$evt.removeAllEventHandlers(imageField "insert");

// add our own insert behavior
$log.message("Adding a custom handler for the insert event");
$evt.addEventHandler(imageField , "insert", function(event) {
}

addeventhandlerで、必要に応じてTitleとImageIconを設定できますか?AnquillaApiまたは他の場所でそれを見つけることができません。

于 2013-01-31T10:09:02.637 に答える