我想要这样一种机制,它将根据 Liferay 中不同的用户角色提供不同的主题。有没有一种方法可以为我提供一个解决方案,我可以在用户角色上更改主题。其次,我想知道这是否可以通过编程方式实现,或者 Liferay 对此提供了自定义支持。
任何帮助将不胜感激。
我想要这样一种机制,它将根据 Liferay 中不同的用户角色提供不同的主题。有没有一种方法可以为我提供一个解决方案,我可以在用户角色上更改主题。其次,我想知道这是否可以通过编程方式实现,或者 Liferay 对此提供了自定义支持。
任何帮助将不胜感激。
糟糕的选择
正确的方法不是改变主题,而是在页面中注入一些东西来改变样式。
根据用户会话在运行时更改主题是一个坏主意。由于每个请求的缓存无效,性能不佳。
构建自定义 portlet 并将其注入到每个页面的主题中。根据用户逻辑,portlet 可以注入一些 javascript 来更改 html 标记的 css 类。
清楚吗?
主题与布局(即页面)相关联。这可以在liferay的布局表中观察到。因此,即使它可以使用 API 进行更改,但在用户级别并没有什么不同,而是在页面级别关联。
根据您的要求,如果您有一些固定数量的主题,则应用不同的站点,每个站点都有一个特定的主题。
使用 Post login hook,您可以检查用户角色并重定向到适当的站点。使用这种方法,如果您愿意,您也可以根据用户角色拥有完全不同的布局和页面。
我们还可以使用速度变量$is_male, $is_female, $time_zone, $language..
来识别用户组,并可以在 body 标签中加载不同的 CSS 文件或父类。
答案可能对提出此问题的马克没有用,但未来的读者可能会发现这很有用。
谢谢