在激活Plone 4.3.3中基于灵巧的Plone默认类型之后,我遇到了一个问题。我有许多子站点(激活了INavigationRoot接口的文件夹)。每个子网站都有一个自定义徽标,该徽标作为logo.png存储在作为导航根的每个文件夹中。它工作得很好,直到我激活了基于灵巧的Plone默认类型。在这一点上,所有的定制标志被一个显示在基座上的标志所取代。
当我调查这个问题时,我在呈现的HTML中注意到子站点徽标是绝对URL。我期望有一个对logo.png的非限定引用,该引用将在当前文件夹或portal_skins/custom的默认位置中找到。
徽标在位于buildout_cache/plonetheme.sunburst-1.4.6-py2.7.egg/plonetheme/sunburst/skins/sunburst_styles/base_properties.props的Sunburst主题的属性中定义。
logoName:string=logo.pnglogoName由LogoViewlet使用,如buildout_cache/plone.app.layout-2.3.12-py2.7.egg/plone/app/layout/viewlets/common.py中定义的那样
不管出于什么原因,定制标识都被忽略了,子站点呈现的是基本徽标。
粗解决方案:编辑buildout-cache/eggs/plone.app.layout-2.3.11-py2.7.egg/plone/app/layout/viewlets/logo.pt
更改:
<img src="logo.jpg" alt=""
tal:replace="structure view/logo_tag" /></a>至:
<img src="logo.png" alt="" /></a>这会忽略皮肤属性,在服务器上的所有Plone站点和子站点中,将徽标硬编码为logo.png。所有的人都恢复工作了。
显然,我有一个解决问题的解决方案,但是什么是“适当的”解决方案呢?
发布于 2014-10-07 06:18:50
正确的解决办法是注册一个新的徽标视图,它处理您的用例。
但在你开始开发之前..。
ftw.subsite作为一个Plone包,它可以实现您想要的功能。
解释,为什么您的自定义标识被忽略了
view/logo_tag获取门户根,它是plone根,而不是导航根。然后尝试将徽标配置为base_properties (或“logo.png”作为后盾)相对于plone根。这就是为什么不能简单地将logon.png添加到带有NavigationRoot的文件夹中。
不对资源使用相对路径
对资源使用相对路径被认为是个坏主意,这样浏览器就不能缓存徽标。浏览器必须加载它总是新的,因为它有一个不同的路径。
https://stackoverflow.com/questions/26228659
复制相似问题