Тема Liferay Change для мобильного устройства - PullRequest
0 голосов
/ 13 октября 2010

Мне нужно изменить тему (скажем, тема по умолчанию = классическая) на тему iphone (или любую другую), когда пользователь перешел на портал liferay с помощью мобильного устройства.

Я подумал так:
- создать ловушку, которая запускается при событии входа пользователя в систему
- проверить устройство, используя атрибут заголовка запроса User-Agent
-при необходимости установите тему на iphone, используя LayoutServiceUtil

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

Я совершенно новичок в LifeRay, так что, возможно, поэтому я не смог заставить это работать.

а.Прежде всего, я очень озадачен тем, как темы обрабатываются в liferay;Кажется, существуют различные связанные объекты модели, которые трудно различить: Theme, ThemeDisplay, Layout, LayoutSet, ColorScheme, ....Может кто-то объяснить это или знать, где это объясняется?

б.очевидно, вам нужно получить ThemeDisplay из запроса, чтобы установить тему для него.Однако, когда пользователь входит в систему, атрибут темы (THEME_DISPLAY) еще не был установлен (ни в событиях pre, ни post; он устанавливается, когда я проверяю во время события выхода из системы).Установка темы при входе в систему является абсолютным минимумом, я действительно надеялся, что смогу установить тему до того, как пользователь войдет в систему, но так как атрибут даже не известен после входа в систему пользователя ...

c.при использовании LayoutServiceUtil.updateLookAndFeel необходимо указать groupId, themeId, colorSchemeId, css, ....Я ожидал, что просто скажу liferay, какую тему (имя) использовать независимо от того, какой идентификатор группы, ....Это не возможно?

большое спасибо за любую помощь,
Stijn

PS Я использую liferay 6.0.5.

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Я сам не пробовал, но планирую разобраться: Расширения Милена Дянкова , похоже, позволяют выбирать темы на основе пользовательского агента, настроенного на панели управления. Вы можете прочитать его блог об этом здесь .

1 голос
/ 20 декабря 2010

Я могу ошибаться, но я уверен, что переключение происходит автоматически.

Вопрос а: вы разрабатываете свою собственную тему или просто хотите настроить ее? Вопрос б: почему бы не установить темы по умолчанию правильно? Просто установите его в панели настроек => макет => раскрывающийся список внизу

Edit: Я бы с осторожностью использовал хук login.pre. Хотя это будет обновлять его при входе в систему, это означает, что до тех пор, пока пользователь не войдет в систему, он может увидеть не ту тему. Я бы проверил его в режиме визуализации по умолчанию для портлета на главной странице или нашел бы ловушку, которая используется при первом посещении страницы.

Возможна следующая возможность: servlet.service.events.pre Таким образом, он будет проверяться при каждом запросе http. Там могут быть лучшие варианты. (Я не очень знаком с liferay)

А для получения groupId и т. Д. Вы можете просто использовать: long groupId = ParamUtil.getLong (actionRequest, "groupId");

...