null

Liferay - устанавливаем тему по-умолчанию

Внешний вид страницы в 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, чего мы и пытались добиться.

Коротко о себе:

Работаю ведущим программистом в компании Tune IT и ассистентом кафедры Вычислительной техники в Университете ИТМО .

Занимаюсь проектами, связанными с разработкой разного рода веб-приложений (порталы, CRM-системы, системы электронного документооборота), а также, в рамках научной работы на кафедре, изучаю возможности применения семантического анализа в задачах САПР.