つまり、RichHtmlField を使用すると、リボンのドロップダウン リストに表示されるスタイルとマークアップ スタイルをカスタマイズできます。OOTB コンテンツ エディター Web パーツを使用することはできません。
RichHtmlField と CEWP (出力された HTML/JavaScript) を調査/対比した後、実際に JavaScript ソリューションを見つけることができました。
RichHtmlField はページ スクリプトを発行してフィールド コントロールを初期化しますが、CEWP はそのような初期化スクリプトを発行しません。さらに、RichHtmlField は、CEWP よりもはるかに多くの HTML 属性を発行します。そのうちの 2 つはPrefixStyleSheetとStyleSheetです。
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