Методы альтернативного стиля (CSS) в SAP Portal?

Я переопределяю многие функции портала SAP в моем текущем проекте. Мне нужно создать настраиваемую структуру фиксированной ширины, настраиваемые лотки iView, настраиваемые функции KM API и многое другое.

Со всеми этими настраиваемыми частями я не буду использовать многие функции стиля, реализованные в редакторе тем SAP. Я бы хотел создать внешний CSS, сохранить его вне портала и ссылаться на него. Внешнее хранение позволит упростить обновление, а не сохранение CSS в приложении портала. Это также позволит всем индивидуальным предметам иметь свои стили в одном месте.

К сожалению, я не нашел способа получить доступ к части HEAD страницы, который позволяет мне вставить внешнюю таблицу стилей. Приложения портала могут делать это, используя объект IResource для получения доступа к внутренним ссылкам, но не к элементам на другом сервере.

Я ищу любые идеи, которые позволили бы мне получить эту функциональность. У меня есть x-размещено в SDN SAP, но я подозреваю, что здесь я получу лучший ответ.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
2 628
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я бы счел это грязным взломом, но как разработчик, не занимающийся порталом, я бы подумал об использовании JavaScript для вставки нового элемента ссылки в заголовок, указывающего на ваш новый файл CSS. Конечно, у вас будет вспышка нестилизованного контента, потому что сценарий, вероятно, не запустится до тех пор, пока часть страницы не будет загружена и визуализирована, но это может быть адекватным решением.

Мне неприятно, что я отвечаю на свой вопрос, но я нашел потенциальное решение, которое плохо документировано и в типичной манере SAP использует устаревшие методы. Так что это может быть немного менее грязный прием, чем то, что предлагал Эрик. Я нашел его через пост на форуме SDN.

По сути, вы погружаетесь в объект запроса и собираете PortalNode. Получив это, вы запрашиваете значение IPortalResponse. Этот объект можно преобразовать в PortalHtmlResponse. У этого объекта есть устаревший метод getHtmlDocument. Используя этот метод, вы можете использовать некоторые зеркальные объекты Html для получения заголовка и вставки новых ссылок.

Образец:

IPortalNode node = request.getNode().getPortalNode();
IPortalResponse resp = (IPortalResponse) node.getValue(IPortalResponse.class.getName());
if (resp instanceof PortalHtmlResponse) {
    PortalHtmlResponse htmlResp = (PortalHtmlResponse) resp;
    HtmlDocument doc = htmlResp.getHtmlDocument();
    HtmlHead myHead = doc.getHead();
    HtmlLink cssLink = new HtmlLink("http://myserver.com/css/mycss.css");
    cssLink.setType("text/css");
    cssLink.setRel("stylesheet");
    myHead.addElement(cssLink);
}

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