跳转到主要内容

用于管理CMF和Plone站点主题的工具

项目描述

概述

用于管理 CMF 和 Plone 网站的主题的工具。

plone.theme

此包允许您根据门户_skins 工具中当前选定的外观(主题)将“层”接口标记为请求。

大多数 Zope 3 “视觉”指令,如 <browser:page /> 或 <browser:viewlet /> 接受一个指向接口的‘层’属性。回想一下,视图是在(上下文,请求)上的多适配器。大多数视图都是注册的,以便被适配的‘请求’只需要提供接口。这相当于说 layer=”*”。

通过将标记接口应用于请求,并注册一个视图或小部件,其接口作为被适配的‘层’,我们可以覆盖一个更通用的视图,或者创建一个仅对特定层显示的小部件。

在 CMF 和 Plone 的上下文中,我们希望将层绑定到当前的外观选择。我们通过名称来实现这一点。

您需要做什么

首先,您应该创建一个标记接口

>>> from zope.interface import Interface
>>> class IMyTheme(Interface):
...     """Marker interface for skins part of 'My Theme'
...     """

然后,在 ZCML 中将其注册为主题层

<interface

interface=”.interfaces.IMyTheme” type=”zope.publisher.interfaces.browser.IBrowserSkinType” name=”My Theme” />

这里的标题必须与 portal_skins 中主题/外观选择的名称匹配。

工作原理

在幕后,<interface /> 注册将 IMyTheme 标记为“IThemelayer”的“IInterface”,并将 IMyTheme 注册为一个名为“My Theme”的实用工具,提供 IBrowserSkinType。

我们在 tests/tests.zcml 中进行了类似的操作。

让我们定义“我的主题”外观选择

>>> from Products.CMFCore.utils import getToolByName
>>> portal_skins = getToolByName(layer['portal'], 'portal_skins')
>>> default_skin = portal_skins.getDefaultSkin()
>>> skin_path = portal_skins._getSelections()[default_skin]
>>> portal_skins.addSkinSelection('My Theme', skin_path)

在 tests/tests.zcml 中,我们注册了两个 @@layer-test-view 视图的版本。一个用于默认外观层,简单地输出“默认”。另一个输出“我的主题”。

在我们打开外观之前,我们将获得默认视图。

>>> from plone.testing.z2 import Browser
>>> browser = Browser(layer['app'])
>>> browser.open(layer['portal'].absolute_url() + '/@@layer-test-view')
>>> from __future__ import print_function
>>> print(browser.contents)
Default
...

然而,如果我们打开外观,我们应该看到标记接口应用的效果。

>>> portal_skins.default_skin = 'My Theme'
>>> import transaction
>>> transaction.commit()
>>> browser.open(layer['portal'].absolute_url() + '/@@layer-test-view')
>>> print(browser.contents)
My Theme
...

如果我们切换回来

>>> portal_skins.default_skin = 'Plone Default'
>>> transaction.commit()
>>> browser.open(layer['portal'].absolute_url() + '/@@layer-test-view')
>>> print(browser.contents)
Default
...

变更日志

4.0.1 (2023-10-07)

内部

  • 更新配置文件。[plone 开发者] (cfffba8c)

4.0.0 (2023-04-27)

破坏性更改

  • 放弃对 Python 2 和 Plone 5.2 的支持。[gforcada] (#6)

内部

  • 更新配置文件。[plone 开发者] (2a4ba395)

3.0.7 (2020-04-22)

错误修复

  • 小包装更新。[#1]

3.0.6 (2018-06-20)

错误修复

  • 在 Python 3 上运行测试。[ale-rt]

3.0.5 (2018-04-04)

错误修复

  • 处理在 Zope4 中未获得外观名称的情况。[pbauer]

3.0.4 (2018-03-10)

错误修复

  • 小的行政修复。[gforcada]

3.0.3 (2017-07-03)

错误修复

  • 删除 unittest2 依赖项。[kakshay21]

3.0.2 (2017-02-05)

错误修复

  • 修复使用 Zope 4 时的测试。[maurits]

3.0.1 (2016-11-17)

修复

  • 删除 ZopeTestCase 跟踪。[gforcada]

3.0.0 (2015-06-10)

  • 3.x 仅适用于 plone 5。[vangheem]

2.1.4 (2015-04-28)

  • 删除对 CMFDefault 的依赖。[tomgross]

2.1.3 (2015-03-27)

  • 测试层是测试层。[bloodbare]

2.1.2 (2015-03-21)

  • 将测试从 PloneTestCase 移动到 plone.app.testing。[sdelcourt,timo]

2.1.1 (2014-03-02)

  • 删除对 CMFDefault 的硬依赖。[davisagli]

2.1 - 2011-05-12

  • 将 zope.traversing 中的 BeforeTraverseEvent 更新为从 zope.app.publication 导入。[davisagli]

  • 添加 MANIFEST.in。[WouterVH]

2.0 - 2010-07-18

  • 将许可证更新为仅适用于 GPL 版本 2。[hannosch]

2.0b2 - 2010-03-05

  • 防止多次运行。这在使用 ++skin++ 遍历器或 VirtualHostMonster 时可能会发生。[wichert]

2.0b1 - 2010-01-02

  • 修复我之前调整引入的错误。如果使用了扩展默认层的皮肤层(这是常见的),那么默认层最终会具有比未扩展默认层的浏览器层更高的优先级。[davisagli]

2.0a2 - 2009-11-13

  • 再次从 CMFDefault 层继承,以与仅依赖于 CMF 但也可在 Plone 中使用的产品兼容,并将视图注册到 CMFDefault 层。[davisagli]

2.0a1 - 2009-04-05

  • 避免从 CMFDefault 浏览器层继承,而是定义我们自己的。我们与 CMFDefault 层没有共同之处。[hannosch]

  • 在额外中声明测试依赖项。[hannosch]

  • 指定包依赖项。[hannosch]

1.1 - 2009-04-04

  • 确保主题层比其他浏览器层具有更高的优先级。[davisagli]

1.0 - 2007-08-15

  • 第一个稳定版本 [wichert]

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

plone.theme-4.0.1.tar.gz (18.5 kB 查看散列)

上传时间 源代码

构建发行版

plone.theme-4.0.1-py3-none-any.whl (11.2 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面