Zope3开发新的皮肤

直到现在我们也只是在提高留言薄的性能,而对它的用户界面并没做太多的改善。实际上,我们一直用 ZMI 来进行所有的留言薄管理,这对最终用户来说是完全不适合的。因此本章将专注于开发一个皮肤以便为留言薄实现用户界面,就象我们所看到的现实中的留言薄应用程序。尽管该包需要一点 Python 开发,但我认为这对于我们两个内容组件部分都可以说是个好的任务。

皮肤(等同于 Zope 2 中的 CMF)是一个用来实现对一个已存在的视图自定义界面的方法。这非常类似于 HTML 和 CSS(层级式样式表),对于 HTML 代码来说视图(页面模板,视图类)和样式表(CSS)就相当于在 HTML 结构元素上的皮肤。然而皮肤之下是有另一个抽象层的。

皮肤实际上是个层的堆栈。每一个层都包含了一些视图和资源。这样就可以让特定的视图和资源失效。举个例子,我们的样式表(CSS)也许定义在缺省层。然而,该样式表对于我们的需要来讲实在是太简单、太不适合了。所以我们可以创建一个新的层 board 并将一个新的样式表放在那里。当完成之后,我们定义一介在在缺省层后 board 层的皮肤,然后所有新的样式定义就会生效。

步骤 I: 准备

在我们创建新皮肤之前,我们需要做些准备。为了不同原来的视图和资源混淆,我们在 messageboard/browser 目录中创建一个名为 skin 的包;不要忘记生成 `init.py` 文件。然后创建一个空的 configure.zcml 文件:

1&">nbsp; <configure
2      xmlns="http://namespaces.zope.org/browser">

4  </configure>

现在用下面的语句将该配置导入到浏览器的 configure.zcml 中:

1  <include package=".skin" />

步骤 II: 创建一个新的皮肤

创建一个新的皮肤是非常容易的,用 ZCML 配置语句就可以完全实现。浏览器名字空间有个叫 skin 语句就可以让我们完成,因此添加下列语句到 skin 包的配置文件中:

1  <layer name="board"/>

3  <skin name="board" layers="board rotterdam default" />

第一个语句创建一个新的层,在那里我们将放入所有的新模板并生成唯一的皮肤。第二个语句创建一个名为 board 的皮肤,由三个元素层堆栈组成。最底的层是缺省层,被 rotterdam 覆盖,而它又被 board 覆盖。

你也许奇怪为什么 rotterdam 层会放在这里。rotterdam 层包含一些比较好的定义,象 favicon 和其他一些对我们也很有用的视图代码。除此之外,我们不会经常使用这个层。

时间: 2024-09-20 06:24:23

Zope3开发新的皮肤的相关文章

漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)_javascript技巧

漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha) 演示效果:http://ucren.com/ucren-examples/widgets.html 已知缺陷:1.widgets 不支持多态.2.图片预载功能对 Firefox 的支持不是很好. 未来考虑解决的问题:1.优化图片预载2.与框架 vjbox 整合到一起 未来考虑开发的新控件:1.滑块调节器(类似windows音量调节器)2.进度条3.outlook 菜单4.树 what's new2007-

Zope3编写新的内容对象

在Zope 3中实现新的内容对象对Zope3http://www.aliyun.com/zixun/aggregation/7155.html">开发人员来讲其重要性不言而喻.为了让讲解更加具有可操作性,本章将使用一个留言簿范例来帮助大家理解.下面一章,我们将列出在Zope3中实现和注册一个新内容组件所需的主要步骤. 本章将是我们开发一个 MessageBoard 类型的一个起点. 在任务开始前,我们认为您已经安装好了 Zope 3 , 还有您也已经具备了 Python 的编程技能,当然更

iOS11开发新特性

索引 iOS11开发新特性之网络部分 前言 ECN 什么是 ECN ? ECN 的实现细节 IPv6 Networking stack changes 网络协议分层 MutliPath TCP NEDNSProxyProvider WKWebView Cookie 管理 URLSession Adaptable Connectivity API URLSessionTask Scheduling API iOS11开发新特性之Xcode9 新特性 功能更全的 Git 支持 创建新的颜色 asse

DW MX 2004 动态站点开发新功能

动态|站点 ASP.NET 在ASP.NET的支援性方面,新增或加强的功能有: 1.支援最新的ASP.NET1.1版本. 2.使用.NET 的核心技术,加快了ASP.NET的DataSets.DataGrids和DataLists物件对于复杂资料的显示和处理速度. 3.支援webform 标签:不论是Windows或Mac上,在编辑环境中就可以显示webform 标签的效果,还有webform 标签编辑器可以使用. 4.支援自订的标签:你可以汇入自订的ASP.NET伺服器控制项,包含完整的结构和

基于J2EE架构的企业应用开发新思维:Web应用以谁为中心

基于J2EE架构的企业应用开发新思维:Web应用以谁为中心?浏览器?服务器 企业Web应用,指的是企业内部使用B/S架构搭建的企业信息系统,用户一般局限在企业内部,为了适应企业某个业务流程而设计开发使用的系统. 出于跨地域部署升级的考虑,一般采用B/S模式进行开发,避免在每个客户端安装配置的麻烦. 一般情况下,前台浏览器特指IE浏览器,前台操作系统选择Windows操作系统. 非Windows操作系统的客户机与非IE的浏览器不在本文讨论范围之内. 本文主要讨论以J2ee架构为基础的Web应用,其

【硅谷连线】微软开发新显示器技术 可让近视者摘掉眼镜

中云网每天连线硅谷,呈现最新鲜资讯!这里的"硅谷"指的是国外具有典型性和创新性企业代表. 1. 特斯拉与松下签署协议:合作打造超级电池工厂 <http://tech.sina.com.cn/it/2014-08-01/07589529884.shtml> 时间8月1日早间消息,特斯拉周四宣布,该公司已经与松下签订了合作协议,双方将在美国共同建设一座大规模电池生产工厂. 该工厂将为特斯拉的电动汽车生产电池,并为固定存储市场生产电池模块.特斯拉估计,这座工厂及其相关联的供应商设

openfire 二次开发——基于 kraken开发新protocol网关

问题描述 我需要在openfire插件kraken基础上开发新的网关协议,但是网络上可以找到的资料太少,希望有熟悉openfire网关插件开发或相关开发的大神提供一些帮助,感激不尽 解决方案 解决方案二:你的问题解决了吗?我遇到跟你一样的问题,资料太少,不知道怎么下手,如果你有进展希望你能指点一下~~谢谢啦解决方案三:后来放弃了,记得当时看到kraken上开发网关协议似乎需要第三方协议的java实现,qq什么的都是有这样一个协议jar包,但是不知道这样的协议jar包应该按什么格式去开发.你可以邮

美国国防部正在开发新的多因素认证系统,确认无毒吗?

本文讲的是美国国防部正在开发新的多因素认证系统,确认无毒吗?,美国国防高级研究计划局(Defense Advanced Research Projects Agency,简称DARPA)目前正在开发一种多因素身份验证系统,目的是取代目前使用的通用访问卡(CAC). 关于CAC系统  通用访问卡(common access card,CAC)是美国国防部用来进行多重身份验证(multifactor authentication)的智能卡(smart card).通用访问卡作为标准认证发行,可以认证

AppScale带给云软件开发新的希望

本文讲的是AppScale带给云软件开发新的希望,[IT168 资讯]迄今为止,云领域的软件开发一直受到很大程度的关注.当许多早期的开发者,如Zimky和Coghead都半途而废,平台即服务(PaaS)市场却取得了突破性的进展.Google App Engine在这方面有着明显的领先优势,坚实稳定的基础托管服务提供商Ruby on Rails也用实力证明了自己. 这些成功也推动新开发商去寻求云计算的增长点,其间的差异化是显而易见的,而最根本的区别在于他们在PaaS市场的占有量. 以AppScal