首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用INavigationRoot自定义Plone子网站中的徽标

无法使用INavigationRoot自定义Plone子网站中的徽标
EN

Stack Overflow用户
提问于 2014-10-07 04:40:18
回答 1查看 127关注 0票数 1

在激活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主题的属性中定义。

代码语言:javascript
复制
logoName:string=logo.png

logoNameLogoViewlet使用,如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

更改:

代码语言:javascript
复制
    <img src="logo.jpg" alt=""
    tal:replace="structure view/logo_tag" /></a>

至:

代码语言:javascript
复制
    <img src="logo.png" alt=""  /></a>

这会忽略皮肤属性,在服务器上的所有Plone站点和子站点中,将徽标硬编码为logo.png。所有的人都恢复工作了。

显然,我有一个解决问题的解决方案,但是什么是“适当的”解决方案呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 06:18:50

正确的解决办法是注册一个新的徽标视图,它处理您的用例。

  • 如果您在Plone根上,它应该使用在属性中定义的徽标。
  • 如果您在站点的一部分具有NavigationRoot,请直接使用导航根目录下的徽标。

但在你开始开发之前..。

ftw.subsite作为一个Plone包,它可以实现您想要的功能。

  • 您可以上传每个子网站的新徽标(内容上的字段)。
  • 您可以为每个子站点定义新的CSS (内容字段)。
  • 也可以用不同的语言服务子网站。
  • 子站点也是一个NavigationRoot。
  • 一个子网站有他自己的ContactForm。
  • 更多...

解释,为什么您的自定义标识被忽略了

view/logo_tag获取门户根,它是plone根,而不是导航根。然后尝试将徽标配置为base_properties (或“logo.png”作为后盾)相对于plone根。这就是为什么不能简单地将logon.png添加到带有NavigationRoot的文件夹中。

不对资源使用相对路径

对资源使用相对路径被认为是个坏主意,这样浏览器就不能缓存徽标。浏览器必须加载它总是新的,因为它有一个不同的路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26228659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档