【问题标题】:Change Theme based on user roles Liferay根据用户角色 Liferay 更改主题
【发布时间】:2014-05-21 05:17:18
【问题描述】:

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

任何帮助将不胜感激。

【问题讨论】:

  • 我还没有尝试过,但是您可以编写挂钩来覆盖servlet.service.events.pre 并提供与 ThemeServicePreAction.java 相同的自定义实现,并编写逻辑以根据用户角色更改请求中的主题属性。 HTH

标签: permissions themes liferay roles liferay-theme


【解决方案1】:

错误的选择

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

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

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

清楚吗?

【讨论】:

  • 这是可能的,但对于现实世界的项目不是一个解决方案。
  • 所以你的意思是说我们提供了三个主题themeA、themeB、themeC。每个不同的颜色,字体和其他更改基于css文件,sy如果userA选择themeA将主题名称保存在user表中名为theme的自定义列下,并根据输入我们必须导入相应的css文件
【解决方案2】:

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

根据您的要求,如果您有一些固定数量的主题,则应用不同的站点,每个站点都有一个特定的主题。

使用 Post login hook,您可以检查用户角色并重定向到适当的站点。 使用这种方法,您可以根据用户角色拥有完全不同的布局和页面。

【讨论】:

    【解决方案3】:

    我们还可以使用速度变量,例如$is_male, $is_female, $time_zone, $language.. 来识别用户组,并且可以在body标签中加载不同的CSS文件或父类。

    答案可能对提出此问题的马克没有用,但未来的读者可能会发现这很有用。

    谢谢

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2014-02-05
      • 2013-06-28
      • 2021-01-30
      相关资源
      最近更新 更多