Liferay Change主题为移动设备

时间:2010-10-13 14:35:01

标签: mobile liferay

当用户使用移动设备导航到liferay门户时,我需要将主题(让我们说默认主题=经典)更改为iphone主题(或其他)。

我想这样做:
- 创建一个钩子,以便在用户登录事件中触发 - 使用User-Agent请求标头属性检查设备 - 如果需要,使用LayoutServiceUtil

将主题设置为iphone

可能有一种更好的方法来实现这样的要求,所以可以随意提供替代方案。

我对liferay很新,所以这可能就是我无法让它发挥作用的原因。

一个。首先,我对如何在liferay中处理主题感到困惑;似乎有各种相关的模型对象很难区分:Theme,ThemeDisplay,Layout,LayoutSet,ColorScheme,....有人可以解释这个或知道这在哪里解释?

湾显然你需要从请求中获取ThemeDisplay才能在其上设置主题。但是,当用户登录时,尚未设置主题属性(THEME_DISPLAY)(既不在pre事件也不在post事件中;它在我在logout事件期间检查时设置)。在登录期间设置主题绝对是最小的,我实际上希望我可以在用户登录之前设置主题,但由于在用户登录后该属性甚至不知道...

℃。使用LayoutServiceUtil.updateLookAndFeel时,需要提供groupId,themeId,colorSchemeId,css,....我期待它只是告诉liferay无论groupId使用哪个主题(名称),....这不可能吗?

非常感谢任何帮助,
Stijn

P.S。我正在使用liferay 6.0.5。

2 个答案:

答案 0 :(得分:1)

我可能会弄错,但我很确定切换会自动发生。

问题a:您是在开发自己的主题还是只想自定义它? 问题b:为什么不正确设置默认主题?只需在设置中设置pannel => layout =>底部的下拉

编辑: 我会谨慎使用login.pre钩子。虽然这会在您登录时更新它,但意味着直到用户实际登录,他们可能会看到错误的主题。我会在主页上的portlet的默认呈现模式中检查它,或者找到首次访问页面时使用的钩子。

可能性似乎是:servlet.service.events.pre 这样就可以检查每个http请求。可能有更好的选择。 (我对liferay并不熟悉)

要获取groupId等,您可以使用:long groupId = ParamUtil.getLong(actionRequest,“groupId”);

答案 1 :(得分:1)

我自己没试过,但我打算调查一下: Milen Dyankov's extensions似乎有办法让您根据在控制面板中配置的用户代理选择主题。你可以阅读他的博客here