Как сделать разные темы для некоторых портлетов

Я новичок в Liferay, и у меня есть следующая проблема. Мне нужно создать тему портала - это нормально, нет проблем. Это придаст стилю моему порталу и портлетам по умолчанию. Но в некоторых своих собственных портлетах я использую страницы ZKOSS, которые требуют совершенно другого стиля. У меня вопрос, как сделать, чтобы тематические классы Liferay не влияли на мои страницы ZKOSS? В теме Liferay есть несколько общих стилей, например, для ввода и т. д., но я не хочу, чтобы эти правила применялись внутри моих портлетов ZKOSS. Надеюсь, я ясно объяснил. Какие-либо предложения?


person Gatekeeper    schedule 04.04.2012    source источник


Ответы (3)


Вы можете установить <css-class-wrapper>My_Portlet</css-class-wrapper> в файле liferay-portlet.xml.

подробнее см.: http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+UI+Guidelines

person Mark    schedule 04.04.2012
comment
Спасибо, я обязательно воспользуюсь этим ... думаю, мне просто нужно будет продолжать проверять свои классы на наличие проблемы, которую я описал в своем комментарии к другому ответу. В любом случае, спасибо, оба ответа предлагают одно и то же решение, но ваше выглядит чище. - person Gatekeeper; 04.04.2012

Я не знаком с портлетами ZKOSS, но общий способ ввести css для конкретных портлетов — через DOM: проверьте свою страницу, посмотрите, как генерируются ваши портлеты ZKOSS: Liferay создает оболочку вокруг каждого портлета, содержащую имя портлета, вы можно использовать для укладки.

Так как ZKOSS у меня недоступен, вот пример того, как некоторые особенно уродливые стили применяются к каждому портлету навигации:

 .portlet-navigation .portlet {
       background: purple;
 }

Используйте Firebug или аналогичные инструменты, чтобы узнать соответствующую структуру DOM, и просто добавьте необходимые стили для этих элементов в свою тему.

person Olaf Kock    schedule 04.04.2012
comment
Да, я понимаю, но я хочу сказать, что если (в этом случае) тема liferay уже содержит стили для класса .portlet, мне придется переопределить каждое его свойство в моем классе .portlet-navigation .portlet и молиться, чтобы кто-то этого не сделал. добавьте еще немного в класс .portlet, потому что это также повлияет на мой элемент внутри портлета... - person Gatekeeper; 04.04.2012
comment
В любом случае спасибо, я буду использовать решение в другом ответе, потому что оно выглядит правильно, даже если в конце оно делает то же самое... - person Gatekeeper; 04.04.2012
comment
Комментарий 1: именно вы контролируете свою тему, поэтому не так много людей могут добавить CSS в .portlet. И переопределение более конкретных значений — это как раз и есть красота css. Это идет вместе с оболочкой css-class, которую Марк упомянул в принятом ответе. Также обратите внимание, что два класса здесь просто необходимы, потому что .portlet на самом деле перегружен до background:none; и я хотел изменить фон. Если бы я изменил границу: 2px сплошной красный цвет; Мне бы не понадобился .portlet в селекторе. Комментарий 2: Нет проблем - person Olaf Kock; 04.04.2012

Вы также можете использовать цветовые схемы Liferay для определения отдельного пользовательского интерфейса для одного и того же портлета.

Liferay 7/DXP: https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/specifying-color-schemes

Лайфрей 6.2:

https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/specifying-color-schemes

person designershyam    schedule 29.01.2018