Liferay Portal定制

时间:2018-01-08 18:32:33

标签: liferay liferay-6 liferay-7

我是Liferay Portal的新手,我被指派开发具有以下结构的Liferay应用程序:

  1. 标志
  2. 搜索栏
  3. 结果列表
  4. 我们计划将应用程序出售给不同的客户,因此图像(徽标等)和css等资源需要定制。根据{{​​3}}资源,如图像和样式表是部署到Liferay的门户应用程序的一部分。因此,对于2个不同的客户,我需要2个不同的应用程序版本。相反,我希望有一个版本的portlet可以从数据库加载所有资源(可能通过休息调用到适当的配置服务)。这将为我们提供更好的供应机会。

    此外,我希望能够在不同的portlet之间共享css资源。

    我是如何实现这两个目标的?

3 个答案:

答案 0 :(得分:3)

你似乎在谈论主题。你需要创建一个Liferay主题。您可以扩展现有的Liferay主题或创建全新的主题。主题就像portlet,意味着你以相同的方式部署它们,只有它们特定于你似乎正在描述的内容。看看https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/theme-builder

这里有大量示例https://github.com/liferay/liferay-plugins/tree/master/themes和用于生成新主题的脚本。

希望有所帮助

答案 1 :(得分:3)

正如Sudakatux所说,你在谈论主题。我只想补充几点:

  • 如果您正在讨论样式化portlet内容(即在portlet中显示内容时应该是什么样子),则需要搜索应用程序显示模板(请参阅下面的链接)。
  • 如果您正在讨论样式化portlet本身,即在您的LR上放置Portlet时的样子,您可以在主题中执行此操作。
  • Liferay 6.2和7.x中的主题不兼容。你标记了问题LR-6和LR7;我建议选择一个(根据我的经验,LR7更容易,更快速地开发主题)
  • 如果您要创建自己的portlet,并且想要设置自己的portlet内容的样式,则必须在JSP中执行此操作。编辑:您还可以将Freemarker与您的portlet一起使用;但是,我个人仍然更喜欢JSP,因为你可以在其中做到这一点。

有用的链接:

答案 2 :(得分:0)

这是您在Liferay 7 DXP中布置主题目录结构的方式。确保创建Liferay工作区并在该工作区中创建Liferay模块(主题)。如果你不这样做,你将会遇到很多错误并导致自己很多困惑。

您可以将所有css更改放在_custom.scss文件中,它们将覆盖默认的css样式。

Blade CLI将生成核心freemarker模板。我也建议使用页眉/页脚模板。

Theme directory structure

最后,这是您在freemarker模板中引用徽标的方式

 <a class="${logo_css_class}" href="${site_default_url}" title="<@liferay.language_format arguments="${site_name}" key="go-to-x" />">
            <img alt="${logo_description}" class="logo1" src="${site_logo}" />
        </a>