在运行时(与配置时间相比)为Liferay Portal页面设置主题?

时间:2011-03-14 10:04:46

标签: liferay

只是想知道是否可以在运行时而不是configure-time为页面分配主题?我的意思是根据某些条件,相同的页面会显示不同的主题。

我想做的是:我有三页:“第1页”,“第2页”和“注册页面”。 “第1页”和“第2页”是可以从导航菜单访问的普通页面。 “第1页”和“第2页”有不同的主题。 “注册页面”在导航菜单中不可见,但是在“第1页”和“第2页”中都有指向它的链接。从“第1页”访问时,我希望“注册页面”以“第1页”的主题显示,从那里访问“第2页”的主题。

显然我可以用不同的主题创建两个版本的“注册页面”,但实际上我有大约十个主题(实际上是主题变化)和大约五个页面,如“注册页面”。

我正在使用Liferay Portal EE 5.2.5

-k6ps

1 个答案:

答案 0 :(得分:1)

简短的回答是portlet不是一个页面,当显示一个portlet时,主题已经被确定,所以你不能在一个portlet中这样做。对不起,如果这对你来说很明显,但我只是在解决这个问题。

更长的答案是,由于Liferay在设计时考虑了定制,所以任何事情都有可能,这取决于它是如何完成的。在这种情况下,我最好的猜测是你需要在Liferay servlet构建页面之前触发一些东西,并查看portal.properties文件中有一个指定的扩展点servlet.service.events.pre。首先,您需要一种方法来存储初始页面选择,但是一旦有了,您就可以在自定义类中读取它并调整该实例的主题。也许

我猜你会被迫将主题选择存储在HttpSession中,但也有可能你可以将URL中的主题选择作为HTTP参数传递,甚至可以使用HTTP REFERRER头值找到他们来自哪里。

有用吗?