我有一个 Liferay 7 项目,我想将浏览器的图标更改为自定义图标。我创建了一个 portal-ext.properties 文件并设置了属性 theme.shortcut.icon=myfavicon.ico
。虽然,我在我的网站上看不到自定义图标。
你能告诉我把我的 .ico 文件放在 tomcat 目录中的什么地方吗? theme.shortcut.icon
到我的图像的路径是什么?
此外,您建议将 portal-ext.properties 文件放在哪里?
最佳答案
图标应该是您主题的一部分。以下是如何弄清楚该怎么做:检查 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 之间)可能超出了这个答案的范围。
作为一个极端的、不推荐的、quickfix,您可能希望将 portal-ext.properties 中的值设置为
theme.shortcut.icon=../../../myfavicon.ico
并替换tomcat的webapps/ROOT/myfavicon.ico
中的图标.但是,当您在升级中不小心将其覆盖时,不要稍后哭泣。
关于tomcat - 使用 Tomcat 更改 Liferay 7 中的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53328682/