Как использовать пользовательские стили и стили разметки в 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);
Спасибо