在运行时(相对于配置时)为Liferay门户页面设置主题?

在运行时(相对于配置时)为Liferay门户页面设置主题?,liferay,Liferay,只是想知道是否可以在运行时而不是在配置时为页面分配主题?我的意思是,根据某些条件,相同的页面会显示不同的主题 我想做的是:我有三页:“第1页”、“第2页”和“注册页”。“第1页”和“第2页”是可以从导航菜单访问的普通页面。“第1页”和“第2页”有不同的主题。“注册页面”在导航菜单中不可见,但在“第1页”和“第2页”中都有指向该页面的链接。我希望从“第1页”访问时,“注册页面”显示“第1页”主题,从“第1页”访问时显示“第2页”主题 显然,我可以用不同的主题创建两个版本的“注册页面”,但实际上我有

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

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

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

我正在使用Liferay Portal EE 5.2.5


-k6ps

简单的回答是,portlet不是一个页面,在显示portlet时,主题已经确定,因此您不能在portlet中执行。很抱歉,如果这对你来说很明显,但我只是在解决这个问题

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

我猜您将被迫将主题选择存储在HttpSession中,但也有可能您可以将主题选择作为HTTP参数传递到URL中,甚至可以使用HTTP referer头值来查找它们的来源


有用吗

简单的回答是,portlet不是页面,当显示portlet时,主题已经确定,因此您无法在portlet中执行此操作。很抱歉,如果这对你来说很明显,但我只是在解决这个问题

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

我猜您将被迫将主题选择存储在HttpSession中,但也有可能您可以将主题选择作为HTTP参数传递到URL中,甚至可以使用HTTP referer头值来查找它们的来源

有用吗