11

ボタンがクリックされたときに特定の html を RTF に挿入する Tridion で GUI 拡張機能を作成しようとしています。ユーザーに通知するツールバー ボタンとポップアップがあります。しかし、HTML「</div><div class='Page'>」を挿入するときにポップアップで [OK] をクリックすると、「<div class='Page'/>」が挿入されます。

applyHTML メソッドは、挿入されているものを変更するものであることがわかりました。私が示したものを正確に挿入する他の関数/メソッドはありますか?つまり、終了タグまたは開始タグが欠落している無効なhtmlを意味しますか?

4

2 に答える 2

6

無効なマークアップを作成する必要がある場合は、プレーン テキスト フィールドを検討してください。これが既存の拡張機能とコンテンツ モデルをどの程度変更するかはわかりませんが、何らかの「分割」または分割プレースホルダーと思われるものを含め、プレーン テキスト フィールドに何でも入力できます。

</div><div class='Page'>

リッチ テキスト機能を保持し、いくつかの一般的な Tridion の慣例に従うには、次のいずれかを検討してください。

一度にすべてのマークアップの変更を完了する

選択したリッチ テキストのセット全体を拡張機能でラップすることを考慮して、最終的なマークアップに open<div>とClosing があると仮定します。</div>プロセス中およびコンポーネントを更新する前に、作成者が「分割」の場所を選択し、更新全体を RTF に保存できるようにします。

埋め込まれたスキーマとテンプレート コードを使用して「分割」を作成する

埋め込みスキーマ フィールドは、コンテンツを分割するためのはるかに簡単な方法です。作成者は埋め込みフィールドの新しいセットを作成し、テンプレート コードはそれをタブ、段落、または場合によってはページ (ページネーション?) に変更できます。

私が理解しているように、「段落」埋め込みスキーマはこのユースケースを処理できます。

<!-- TemplateBeginRepeat name="Component.Fields.Paragraph" -->
<div class='Page'>
<!-- author-entered content -->
</div>
<!-- TemplateEndRepeat -->

これ</div><div class='Page'>により、埋め込みフィールドの中間セットが作成されます。また、拡張機能を変更せずに、将来クラスとタグを変更することもできます。

代わりに HTML 以外の「差し込み項目」を挿入する

リッチ テキスト フィールドのカスタム タグについて書いた投稿のオプションを参照してください。

  • などの Content Manager Explorer の CSS クラスclass="page-split"。これを特定の方法で (たとえば、視覚的に<hr/>) スタイルを設定してから、最終的なマークアップで必要なものにテンプレート化することもできます。
  • [[end-page]][[start-page]「 」などのフィールド プレースホルダー タグをマージする
  • 必要に応じて、カスタム HTML5 ノード

拡張機能を使用してこれらのいずれかを挿入し、オプションでスタイルを設定して、CME で特定の方法で表示することができます。

リッチ テキスト フィールド内に機能を挿入する簡単な方法を作成者に提供するのが好きですが、特定の HTML、特に無効な HTML をコンポーネントに挿入する際の問題は、この機能をコンテンツにハードコーディングすることにあります。移行と設計変更で問題が発生します。

Tridion がデザインをコンテンツから分離する方法を活用することを検討してください。

于 2013-01-03T03:10:30.760 に答える
0

おそらくあなたが言うとき: </div><div class='Page'>、あなたは意味し<div class='Page'></div>ます。その場合、XML tidying を直接制御できない限り、残っている唯一のアプローチ (IMO) は、div に何らかのコンテンツがあることを確認することです。これを行う最も一般的な方法は、非改行スペースを挿入することです。

<div class='Page'>&#160;</div>
于 2013-01-02T16:45:50.983 に答える