3

つまり、RichHtmlField を使用すると、リボンのドロップダウン リストに表示されるスタイルとマークアップ スタイルをカスタマイズできます。OOTB コンテンツ エディター Web パーツを使用することはできません。

RichHtmlField と CEWP (出力された HTML/JavaScript) を調査/対比した後、実際に JavaScript ソリューションを見つけることができました。

RichHtmlField はページ スクリプトを発行してフィールド コントロールを初期化しますが、CEWP はそのような初期化スクリプトを発行しません。さらに、RichHtmlField は、CEWP よりもはるかに多くの HTML 属性を発行します。そのうちの 2 つはPrefixStyleSheetStyleSheetです。

PrefixStyleSheetは、ドロップダウン メニューで使用されているスタイル シートのプレフィックスを識別します。 StyleSheetは、ブランド化された css ファイルへのサーバー相対 URL です。

したがって、これらすべてが当てはまる場合、jQuery を使用して、ブランド化されたスタイルシートで CEWP を初期化できるはずです。

<script type="text/javascript">
 ExecuteOrDelayUntilScriptLoaded(function() {

 // window.setTimeout(function() {

 $("div[RteRedirect]").each(function() {

    var id = $(this).attr("RteRedirect"),
        editSettings = $("#" + id);

    if(editSettings.length > 0 && editSettings[0].PrefixStyleSheet != 'yourcustom-rte') {
       editSettings[0]['PrefixStyleSheet'] = 'yourcustom-rte';
       editSettings[0]['StyleSheet'] = '\u002fStyle Library\u002fen-US\u002fThemable\u002fCore Styles\u002f<somecustomstylesheet>.css';
       RTE.Canvas.fixRegion(id, false);
    }

 });

// }, 2000);

}, "sp.ribbon.js");

</script>

これが誰かに役立つことを願っています。このコードは、さまざまな方向に進む可能性があります。基本的なことを紹介しているだけです。これを EditModePanel 内のマスター ページに追加すると、クロス サイトで機能します。

スクリプトをロードする順序によっては、実行後に何かが混乱する可能性があるため、そこにはタイマーがあります。これがうまくいくか、うまくいかないか教えてください。

この問題の解決策をどこかに記録しておくとよいでしょう。

乾杯、

M

4

1 に答える 1

2

信じられないかもしれませんが、この投稿は役に立ちました。

それを機能させるには、これを変更する必要がありました:

 $("td[RteRedirect]").each(function() {

    var id = $(this).attr("RteRedirect"); 
        editSettings = $("#" + id);

ありがとうございました

于 2016-05-19T15:33:51.593 に答える