Как использовать пользовательские стили и стили разметки в CEWP SharePoint 2010 (100% решение JavaScript)

Вкратце, с помощью RichHtmlField мы можем настроить, какие стили и стили разметки будут отображаться в раскрывающихся списках на ленте. С помощью веб-части OOTB Content Editor мы не можем.

После опроса / противопоставления RichHtmlField и CEWP (испускаемый HTML/JavaScript) я действительно смог найти решение JavaScript.

В то время как RichHtmlField генерирует Page Script для инициализации элемента управления полем, CEWP не генерирует такой сценарий инициализации. Кроме того, RichHtmlField испускает значительно большее количество атрибутов HTML, чем CEWP, и два из этих атрибутов - PrefixStyleSheet и StyleSheet.

PrefixStyleSheet определяет префикс таблицы стилей, используемый в раскрывающемся меню.StyleSheet - это относительный URL-адрес сервера к фирменному файлу CSS.

Итак, при всем этом, мы должны быть в состоянии инициализировать CEWP с помощью фирменной таблицы стилей, используя jQuery:

<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

1 ответ

Хотите верьте, хотите нет 4 года спустя этот пост был полезным!

Чтобы заставить это работать, я должен был изменить это:

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

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

Спасибо

Другие вопросы по тегам