简介
chenq
(译者:本教程的英文原稿位于 这里.)
Plone从2.1版本开始引入了资源注册表(ResourceRegistries)这个新组件, 它提供了一组工具来管理链接到plone页面(模板)的样式表以及Javascript等资源文件。这些工具——portal_css和portal_javascripts ——让您能够以一种类似于“将动作(actions)注册到portal_actions”的方式来注册 CSS和JS文件(例如您可以为它们设置访问条件)。感谢资源注册表,我们现在能够以更清晰和更强大的方式定制Plone的外观。
要定制一个Plone站点,一般通过TTW方式(在ZMI中),
使用Skins Tool中的custom层来完成定制任务。尽管这样做完全可以,但是这种方式仅仅适合于客户这边的简略更改,特别是那些无权访问文件系统的人。如果这就是您想要的,
那么您或许更应该阅读Plone2.0权威指南的第七章。但是如果您期望为Plone构建一个完整的图形化环境,那么最好的方式就是写一个
基于文件系统python代码的产品。
在本指南中,我们将使用DIYPloneStyle——一个针对Plone2.1的简单示例/骨架性质的皮肤产品——作为研究资源注册表如何工作的基础,并 且我们将基于它来构建一个新产品,以支持在任何Plone门户中安装新的定制外观。
DIYPloneStyle是基于如下两个产品的:
- Martin Aspeli的MySkin,一个骨架性质的Plone产品,它可以用它自己的层来安装一个皮肤选择项,但是没有使用资源注册表机制。
- SimplePloneStyle(作者是我),这是另一个骨架产品,它利用了资源注册表机制,但是不能创建新的皮肤选择项。
这两个产品都还没有废弃,仍然很有价值。比如,您可能想要使用SimplePloneStyle来启动这样一个新项目:其中需要有“为所有Plone皮肤选择项注册新样式表”的功能。 又或者,您可能想基于MySkin写一个新产品,它仅仅需要使用几个层来向Plone添加新的皮肤选择项。
- 注意
- 本指南有意没有包括“通过用覆盖Plone宏中的HTML”来订制Plone外观的资料;
代替的,我们聚焦于使用CSS。我们并不推荐修改Plone的HTML的方式,因为这样做可能导致您在升级Plone时遇到麻烦。
如果您真的需要修改Plone的页面模板来定制某些UI元素,那么我们推荐您阅读Ben Calder的 关于如何创建一个定制皮肤的how-to文档,以及Jet Wilda的 "Where is what?"指南。
