Внешний вид страницы в Liferay Portal определяется выбранной темой оформления. Дефолтная "шкурка", безусловно, выглядит неплохо, но основанные на Liferay сайты, в том числе и наш, обычно используют свои скины. Исходя из этих предпосылок, возникает задача - хочется, чтобы пользователи, имеющие право на персональную страницу (т.е. ассоциированные с ролью Power User), получали на этой странице в качестве шкурки не дефолтную тему оформления, а нашу.
Самый простой способ этого добиться - зайти в панель управления и выставить каждому пользователю на его персональную страницу нужную нам тему оформления. Преимущество и недостатки этого способа очевидны - с одной стороны, не надо шаманить с конфигами портала, с другой - выставить каждому пользователю нужный скин - дело долгое, нудное и неблагодарное. Плюс, по мере регистрации на портале новых пользователей, операцию придётся повторять. Так что мы этот способ рассматривать не будем :).
Второй способ - это немного погуглить и обнаружить, что у Liferay есть конфигурационная опция, позволяющая выставить дефолтную тему оформления для всех вновь создаваемых страниц (в том числе и для персональных страниц регистрирующихся пользователей). Опция называется default.regular.theme.id
, и, в теории, должна содержать ID темы оформления, которую портал будет использовать в качестве темы по-умолчанию, и находиться в файле portal-ext.properties
. Т.е., например, для темы оформления с ID my-theme
эта опция должна выгляжеть следующим образом:
default.regular.theme.id=my-theme
Этот способ (приведённый в Liferay Wiki по ссылке выше) хорош всем, кроме одного - в Liferay 5.X он не работает :). В силу имеющейся в портале пятой версии багофичи, для того, чтобы заставить Liferay использовать вашу тему в качестве темы по-умолчанию, нужно вместо идентификатора темы прописывать в конфиге хитрую составную строку, состоющую из идентификатора темы и имени war-архива (без расширения), в котором она лежит, с вырезанными "небезопасными" символами. Правила, по которым создаётся эта строка, описаны в багтрекере портала на странице этой самой багофичи. Если коротко, то "небезопасными" являются все символы, кроме латинских букв и цифр.
Теперь посмотрим на примере, как всё это будет выглядеть на практике:
Пусть у нас есть тема My Theme
, хранящаяся в war-архиве my-super-theme.war
. В этом случае дескриптор liferay-look-and-feel.xml
, хранящийся в каталоге /WEB-INF
темы, будет выглядеть примерно так:
<?xml version="1.0"?>
<!DOCTYPE look-and-feel PUBLIC "-//Liferay//DTD Look and Feel 5.2.0//EN" "http://www.liferay.com/dtd/liferay-look-and-feel_5_2_0.dtd">
<look-and-feel>
<compatibility>
<version>5.2.0+</version>
</compatibility>
<theme id="my-theme" name="My super theme for Liferay">
...
</theme>
</look-and-feel>
Здесь нас в первую очередь интересует параметр my-theme
- это идентификатор темы, который мы будем использовать в нашем конфиге. С учётом этого, итоговая конфигураци в portal-ext.properties
будет выглядеть так:
default.regular.theme.id=mytheme_WAR_mysupertheme
Здесь:
mytheme
- идентификатор нашей темы с вырезанными "небезопасными" символами (минусами);
mysupertheme
- имя war-архива, в котором хранится наша тема (опять же, с вырезанными "небезопасными" минусами).
Если теперь подсунуть этот конфиг порталу и рестартануть домен, то домашние страницы всех вновь зарегистрированных пользователей получат в качестве дефолтной темы оформления My Theme
, чего мы и пытались добиться.