使用Tomcat更改Liferay 7中的网站图标

时间:2018-11-15 22:18:44

标签: tomcat liferay liferay-7

我有一个Liferay 7项目,我想将浏览器的图标更改为自定义图标。我创建了portal-ext.properties文件,并设置了属性theme.shortcut.icon=myfavicon.ico。虽然,但是我在网站上看不到自定义图标。

能告诉我.ico文件在tomcat目录中的位置吗? theme.shortcut.icon到我的图片的路径是什么?

此外,您建议将portal-ext.properties文件放在哪里?

1 个答案:

答案 0 :(得分:1)

图标应该是主题的一部分。这是解决问题的方法:检查Liferay的源代码(这里有7.1源代码),结果很容易浏览,但是为了清楚起见,我在这里缩短了grep输出:

olaf@tp:~/src$ grep -r "theme.shortcut.icon" .
./portal-kernel/.../PropsKeys.java:      public static final String THEME_SHORTCUT_ICON = "theme.shortcut.icon";
./portal-impl/src/portal.properties:    theme.shortcut.icon=favicon.ico
...
olaf@tp:~/src$ grep -r "THEME_SHORTCUT_ICON" .                                                                       
./portal-web/.../themes/top_head.jsp:<link data-senna-track="temporary" href="<%= themeDisplay.getPathThemeImages() %>/<%= PropsValues.THEME_SHORTCUT_ICON %>" rel="Shortcut Icon" /> 

尽管缩短了行数,但难以阅读,因此快捷方式图标路径构造为<%= themeDisplay.getPathThemeImages() %>/<%= PropsValues.THEME_SHORTCUT_ICON %>。为了易于维护,我建议您构建自己的主题(几乎每个人都这样做),然后使用标准文件名并将其替换为主题中的图像,然后进行设置。

当您询问“将图像放置在tomcat中的位置”时:在Liferay中,您不应该期望提供常规的Web应用程序,实际上,主题通常由其OSGi内容提供。您可以通过转到服务页面并搜索favicon来方便地进行检查:如果路径包含/o/,则指向OSGi引擎为其提供服务,例如Tomcat文件系统中没有等效文件(无论如何还是要模拟这些文件是一种坏习惯:很可能在下次升级时会忘记它们并失去所做的更改。

从我的库存安装来看,http://localhost:8080/o/classic-theme/images/favicon.ico是提供该图标的地方,的确有/o/。因此答案是:将图标添加到您自己的主题中,然后甚至不需要通过找到的属性来更改其名称。

但是,如何创建一个内容良好且可维护的系统(在您的Liferay与Liferay之间)是可以解决的。

作为一种非推荐的极端快速修补程序,您可能希望将portal-ext.properties中的值设置为

theme.shortcut.icon=../../../myfavicon.ico

,然后替换tomcat的webapps/ROOT/myfavicon.ico中的图标。但是,当您在升级中意外覆盖它时,不要再哭了。