Permissions 根据用户角色更改主题Liferay

Permissions 根据用户角色更改主题Liferay,permissions,themes,liferay,roles,liferay-theme,Permissions,Themes,Liferay,Roles,Liferay Theme,我想要这样一种机制,根据Liferay中不同的用户角色提供不同的主题。是否有一种方法可以为我提供一种解决方案,我可以根据用户角色更改主题。 其次,我想知道这是否可以通过编程实现,或者Liferay提供了自定义支持 任何帮助都将不胜感激。糟糕的选择 正确的方法不是改变主题,而是在页面中注入一些东西来改变样式 根据用户会话在运行时更改主题是个坏主意。由于每个请求的缓存都无效,因此性能较差 构建一个自定义portlet,并将其插入每个页面的主题中。根据用户逻辑,portlet可以注入一些javascr

我想要这样一种机制,根据Liferay中不同的用户角色提供不同的主题。是否有一种方法可以为我提供一种解决方案,我可以根据用户角色更改主题。 其次,我想知道这是否可以通过编程实现,或者Liferay提供了自定义支持


任何帮助都将不胜感激。

糟糕的选择

正确的方法不是改变主题,而是在页面中注入一些东西来改变样式

根据用户会话在运行时更改主题是个坏主意。由于每个请求的缓存都无效,因此性能较差

构建一个自定义portlet,并将其插入每个页面的主题中。根据用户逻辑,portlet可以注入一些javascript来改变html标记的css类


是否清晰?

主题与布局(即页面)相关。这可以在liferay的布局表中看到。所以,即使它可以使用API进行更改,但不是在用户级别上有所不同,而是在页面级别进行关联

对于你的需求,如果你有一些固定数量的主题,那么不同的网站每个都有一个特定的主题被应用

使用登录后钩子,您可以检查用户角色并重定向到适当的站点。
使用这种方法,您可以根据用户角色拥有完全不同的布局和页面(如果您愿意)。

我们还可以使用速度变量,例如
$is\u male、$is\u male、$timeu zone、$language..
来标识用户组,并可以在body标记中加载不同的CSS文件或父类

对于提出这个问题的马克来说,这个答案可能并没有用处,但未来的读者可能会发现这个答案很有用


谢谢

我还没有尝试过这个,但是您可以编写钩子来覆盖
servlet.service.events.pre
,并提供与ThemeServicePreAction.java相同的自定义实现,并根据用户角色编写逻辑来更改请求中的主题属性。你说这个博客有可能,但对于现实世界来说,项目不是一个解决方案。所以你的意思是,假设我们提供三个主题themeA,themeB,themeC。每一个都会根据css文件的颜色、字体和其他变化而有所不同,sy如果用户a选择themeA,请将主题名称保存在用户表中名为theme的自定义列下,并根据输入导入相应的css文件