我在Plone 4.3.3中激活基于Dexterity的Plone默认类型后遇到了问题。我有许多子网站(激活了INavigationRoot接口的文件夹。)每个子网站都有一个自定义徽标,在用作导航根的每个文件夹中存储为logo.png
。它工作得很好,直到我激活了基于Dexterity的Plone默认类型。此时,所有自定义徽标都被基本Plone站点上显示的徽标替换。
当我调查问题时,我注意到在呈现的HTML中,子网站徽标是绝对URL。我期待对logo.png的无限制引用,该引用可以在当前文件夹中找到,也可以在portal_skins/custom
的默认位置找到。
徽标在Sunburst主题的属性中定义,位于buildout_cache/plonetheme.sunburst-1.4.6-py2.7.egg/plonetheme/sunburst/skins/sunburst_styles/base_properties.props
logoName:string=logo.png
logoName
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
。一切都在恢复。
显然我有一个针对这个问题的解决方案,但是什么是#34;正确的&#34;修复?
答案 0 :(得分:1)
正确的解决方法是注册一个处理您的用例的新徽标视图。
但在你开始开发之前......
ftw.subsite
作为Plone包,它完全符合您的要求。
说明,为什么忽略自定义徽标
view/logo_tag
获取门户网站根目录,即根目录,而不是导航根目录。
然后它尝试相对于plone根在base_properties(或'logo.png'作为后备)中配置徽标。
这就是为什么你不能简单地将logon.png添加到具有NavigationRoot的文件夹。
不要使用资源的相对路径
使用资源的相对路径被认为是一个坏主意,这样浏览器就无法缓存徽标。浏览器必须始终加载它,因为它有不同的路径。