Mobile 移动设备的Liferay更改主题

Mobile 移动设备的Liferay更改主题,mobile,liferay,Mobile,Liferay,当用户使用移动设备导航到liferay门户时,我需要将主题(假设默认主题=classic)更改为iphone主题(或其他任何内容) 我想这样做: -创建一个钩子,在用户登录事件中触发该钩子 -使用用户代理请求标头属性检查设备 -如果需要,使用LayoutServiceUtil将主题设置为iphone 也许有更好的方法来实现这样的需求,所以请随意提供替代方案 我是liferay的新手,所以这可能是我无法让它工作的原因 a。首先,我对liferay如何处理主题感到非常困惑;似乎有各种难以区分的相关模

当用户使用移动设备导航到liferay门户时,我需要将主题(假设默认主题=classic)更改为iphone主题(或其他任何内容)

我想这样做:
-创建一个钩子,在用户登录事件中触发该钩子
-使用用户代理请求标头属性检查设备
-如果需要,使用LayoutServiceUtil将主题设置为iphone

也许有更好的方法来实现这样的需求,所以请随意提供替代方案

我是liferay的新手,所以这可能是我无法让它工作的原因

a。首先,我对liferay如何处理主题感到非常困惑;似乎有各种难以区分的相关模型对象:主题、主题显示、布局、布局集、颜色方案等等。有人能解释这一点吗?或者知道这是在哪里解释的

b。显然,您需要从请求中获取主题显示,以便在其上设置主题。但是,当用户登录时,主题属性(theme_DISPLAY)尚未设置(在pre或post事件中均未设置;它是在注销事件期间检查时设置的)。在登录期间设置主题是一个绝对最小值,我实际上希望我可以在用户登录之前设置主题,但由于用户登录后甚至不知道该属性

c。使用LayoutServiceUtil.updateLookAndFeel时,需要提供groupId、themeId、colorSchemeId、css等。我希望它能简单地告诉liferay使用哪个主题(名称),不管groupId是什么。这不可能吗

非常感谢您的帮助,
斯蒂金


另外,我使用的是liferay 6.0.5。

我可能弄错了,但我很确定切换是自动进行的

问题a:你是在开发自己的主题,还是只是想定制它? 问题b:为什么不正确设置默认主题?只需在底部的设置面板=>layout=>下拉列表中进行设置

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

一种可能是:servlet.service.events.pre 这样,每次http请求都会检查它。也许有更好的选择。(我对liferay不太熟悉)


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

我自己还没有尝试过,但我正计划研究一下:
似乎有一种方法可以让您根据控制面板中配置的用户代理选择主题。你可以阅读他的博客。

Tx获取你的答案;在liferay中似乎有一个基于useragent的自动检测,但仅适用于wap。如果使用wap模拟器导航到liferay站点,则会选择wap主题。在控制面板中,您还可以选择wap主题,如果您创建自定义版面,则可以创建普通版面和wap版面。我们希望有一个类似的工作方式,但其他移动设备。但是,这似乎没有提供OOTB:-(.A:创建我们自己的主题(基于经典主题)B:我们需要再次切换基于useragent.tx的主题/布局,几周后我回到liferay development时会看一看。。。