跳转到主要内容

plone.app.theming的GenericSetup配置文件

项目描述

collective.themesitesetup

https://secure.travis-ci.org/datakurre/collective.themesitesetup.png

collective.themesitesetup 是一个用于将 plone.app.theming 插件嵌入到 zipped 主题包中的 GenericSetup 步骤。

collective.themesitesetup 可以在主题激活期间自动导入一组嵌入的通用设置步骤,在主题禁用时导入另一组(所谓的 卸载配置文件)。此外,还可以嵌入其他步骤并手动导入。

在以下网址查看激活主题网站设置: https://youtu.be/3vkrc7JFUU0

安装

只需按照官方说明将此包包含到您的Plone站点构建中。此插件不需要其他激活,但当然需要激活 plone.app.theming

配置

此插件默认对所有主题启用,只需将以下行添加到主题的 manifest.cfg 文件中即可。

[theme:genericsetup]

默认情况下,此插件在激活时从主题的 install-子目录中导入设置步骤,在停用时从主题的 uninstall-子目录中导入步骤。如果不存在这样的目录,此插件将不会导入任何步骤。

默认的查找目录可以通过在主题的 manifest.cfg 中用自定义值覆盖默认值来自定义。

[theme:genericsetup]
install = my-install
uninstall = my-uninstall

您还可以通过在主题的 manifest.cfg 中的插件配置中添加行 disabled = true 在任何时间禁用此插件。

[theme:genericsetup]
disabled = true

关于安全性

使用此插件鼓励将可导入的通用设置配置文件(以及后来的 Dexterity XML 模型、本地化目录和其他资源目录数据)存储在主题中。因为主题中的所有资源都是公开的,并且有已知的 URL,因此此插件打算导入的主题中的所有数据也都已公开。

如果您不想发布仅由此插件导入的通用设置配置文件和其他主题数据,请使用以下选项 self-destruct = true 在主题激活后删除所有导入的资源。

[theme:genericsetup]
self-destruct = true

Dexterity 模型

此插件的一个常见用途是附带一个带有预配置 Dexterity 内容类型的主题。不幸的是,在类型描述 XML 中内联描述 Dexterity XML 模式不便(因为模式必须转义),而 Dexterity 仅支持从文件系统和文件系统 Python 包中读取单独的 XML 模型文件。幸运的是,此插件允许使用来自主题的匹配模型 XML 填充现有的 Dexterity 内容类型(以及此插件安装的内容类型)。

默认情况下,插件从主题的 models-子目录加载模型文件。模型必须具有与内容类型 ID 匹配的文件名(带有 .xml 扩展名)。默认的导入目录可以通过以下方式更改:

[theme:genericsetup]
models = my_models

默认情况下,插件不会覆盖现有模型(除非它们似乎为空),但可以通过以下方式更改(例如,用于开发目的):

[theme:genericsetup]
models-overwrite = true

消息目录

此插件还可以用于直接从主题注册(注销)i18n 消息目录。默认情况下,插件从主题的 locales-子目录中查找消息目录,期望的是常规的消息目录结构。

./locales/en/LC_MESSAGES/foo.po
./locales/en/LC_MESSAGES/bar.po

在上面的示例中,注册了两个消息目录,一个用于语言 en 的域 foo,另一个用于语言 en 的域 bar

默认的本地化目录名称可以通过以下方式更改:

[theme:genericsetup]
locales = my_locales

当主题停用时,注册的消息目录将被注销。

拼贴布局(和其他资源)

此插件还可以用于填充除了主题目录以外的其他持久资源目录。例如,使用此插件,您的主题可以包含 Plone Mosaic 的网站和内容布局。当主题激活(或更新)时,布局将从主题复制到它们自己的资源目录命名空间中。一旦复制了布局,它们就不会被删除,除非此插件配置为清除这些目录。

例如,包含单个网站布局和内容布局的主题可能包含以下文件结构:

./resources/sitelayout/manifest.cfg
./resources/sitelayout/layout.html
./resources/contentlayout/manifest.cfg
./resources/contentlayout/layout.html

默认资源目录名称可以从 resources 更改为例如 designs,如下所示:

[theme:genericsetup]
resources = design

默认情况下,此插件不会覆盖现有资源,除非启用其配置选项 resources-overwrite

[theme:genericsetup]
resources-overwrite = true

此外,此插件可配置在复制前清除现有目录

[theme:genericsetup]
resources-purge= true

尽管如此,插件仍然不会删除顶级资源目录(如 themesitelayoutcontentlayout)。

权限

此插件还支持 TTW 自定义权限的实验性功能,这对于涉及 Dexterity 内容类型和工作流程的更复杂的内容管理场景很有用。在新权限导入通用设置配置文件之前注册新权限,以便在导入期间可用。

自定义权限以 id 标题 格式列在主题的 manifest.cfg 中,如下所示

[theme:genericsetup]
permissions =
    mydomain.addMyProduct    MyDomain: Add My Product
    mydomain.removeMyProduct MyDomain: Remove My Product

当禁用主题时,自定义权限会被移除。但是,只有当网站重新启动时,它们才会从 ZMI 中消失。

导出网站设置

此插件提供了帮助表单,可以将当前网站设置导出到通过 web 创建的(可写)主题,并从主题文件夹手动导入该网站设置。

导出表单注册为主题资源目录的 @@export-site-setup,导入表单为 @@import-site-setup

导出表单适用于将初始网站设置创建到主题目录中。只需

  1. 从主题控制面板创建新主题

  2. 转到导出表单 URL,例如 http://localhost:8080/Plone/++theme++my-theme/@@export-site-setup

  3. 选择您希望导出的步骤,然后单击 导出

https://raw.githubusercontent.com/collective/collective.themesitesetup/master/docs/images/export-site-setup.png

编辑网站设置

可以通过主题编辑器像编辑任何主题文件一样编辑网站设置步骤

https://raw.githubusercontent.com/collective/collective.themesitesetup/master/docs/images/edit-site-setup.png

提示:您可以使用 six feet up 的优秀 通用设置参考卡 作为编辑网站设置文件的备忘录。

注意:由于主题编辑器隐藏了所有 点文件,以点开头的文件必须重命名为以 .dotfile 结尾(并且不要以点开头)。

导入设置

默认情况下,此插件配置为在激活主题时从 install 目录导入设置步骤,并在禁用主题时从 uninstall 目录导入步骤。这两个安装和卸载步骤目录都可以在插件配置中更改。

此外,可以使用导入设置表单手动导入嵌入的步骤。只需

  1. 转到您主题的导入表单 URL,例如 http://localhost:8080/Plone/++theme++my-theme/@@import-site-setup

  2. 选择您希望导入的步骤,然后单击 导入

更好的网站结构导出和导入

此包包括默认 Plone 网站结构导出和导入的选项增强。

增强功能包括

  • 支持新闻条目内容

  • 支持Zope页面模板

  • 支持Python脚本

  • 支持导出标记的隐藏文件夹(如 portal_skins/custom

可以通过在Plone构建out的实例部分中包含一个特殊组件配置文件来激活这些增强功能

[instance]
...
zcml = collective.themesitesetup-extras

仅ZMI内容(在Plone中隐藏的文件夹,如 portal_skins),可以通过在ZMI界面标签中使用特殊标记接口来标记文件夹,从而包含在导出中

``collective.themesitesetup.interfaces.IGenericSetupExportableContainer``

PageTemplates和PythonScripts只能在位于具有此标记接口的仅ZMI容器中时才能导出。因此,如果您想导出 portal_skins/custom 中的内容,您应该为 portal_skins 添加一个标记,并为 custom 添加另一个标记。

这仅在导出仅ZMI内容时才需要。导入仅ZMI内容的工作方式符合正常的结构导入规则,无需这些标记接口。

关于plone.app.contenttypes支持

如上所述,必须启用更好的站点结构导出和导入,以支持使用基于 plone.app.contenttypes 的内容导出和导入站点结构。

此外,建议使用 plone.app.textfield >=1.2.5 来修复结构导入无法正确解码字段值的问题,这会导致后续出现 UnicodeDecodeErrors。

关于自定义Dexterity内容支持

导入包含自定义Dexterity内容类型的站点结构需要为每个内容类型实现和注册自定义适配器

from Products.GenericSetup.interfaces import IContentFactory
from collective.themesitesetup.content import DexterityContentFactoryBase
from plone.dexterity.interfaces import IDexterityContent
from zope.component import adapter
from zope.interface import implementer

@adapter(IDexterityContent)
@implementer(IContentFactory)
class MyTypeFactory(DexterityContentFactoryBase):
    portal_type = 'MyType'
<adapter
    factory=".adapters.MyTypeFactory"
    name="MyType"
    />

当Dexterity内容仅创建在站点根目录或基于Archetypes的容器中时,此操作不是必需的。

变更日志

2.1.2 (2018-03-22)

  • 修复确保动态创建的消息目录可以具有Unicode消息ID的问题 [datakurre]

2.1.1 (2017-10-18)

  • 修复由于主题设置缓存导致在第一次激活主题时未正确激活主题定义的权限的问题 [datakurre]

2.1.0 (2017-10-08)

  • 添加功能,在主题激活后删除导入的目录,以便通过主题遍历者不会暴露这些目录 [datakurre]

2.0.1 (2017-09-24)

  • 修复由于取消注册本地化时修改了它正在迭代的列表而导致卸载主题时引发错误的问题 [datakurre]

2.0.0 (2017-09-24)

  • 更改,在主题停用时始终注销所有基于主题sitesetup的实用工具,而不是之前的仅注销主题中当前定义的实用工具的行为 [datakurre]

1.5.1 (2017-06-15)

  • 修复无法安装具有点在域中的消息目录的问题 [datakurre]

1.5.0 (2017-05-27)

  • 锁定 zope.app.i18n < 4.0.0 [datakurre]

1.4.1 (2017-04-11)

  • 移除调试打印 [datakurre]

1.4.0 (2017-04-11)

  • 修补TTW消息目录以支持plonejs18n视图(translate-pattern),但请注意,与plonejsi18n TTW目录覆盖不会与现有目录级联 [datakurre]

  • 为TTW权限使用主题缓存,因为TTW权限需要在每次请求上检查其存在 [datakurre]

1.3.2 (2017-01-03)

  • 修复允许(主要是不小心)使用空字符串覆盖消息的问题,现在忽略带有空字符串的消息 [datakurre]

1.3.1 (2016-12-14)

  • 在资源目录复制后添加到purge plone.app.blocks的站点布局缓存 [datakurre]

1.3.0 (2016-11-22)

  • 添加支持填充持久(plone.resource)资源目录 [datakurre]

  • 重构权限支持以使用zope.app.localpermission [datakurre]

1.2.0 (2016-08-17)

  • 添加对TTW自定义权限的支持 [datakurre]

1.1.0 (2016-08-12)

  • 添加从 ./models/Xxxxxx.xml 中填充Dexterity内容类型模型的支持 [datakurre]

1.0.1 (2016-08-11)

  • 修复translationdomain内部防止更新现有目录的问题 [datakurre]

1.0.0 (2016-08-11)

  • 添加直接从主题中注册i18n消息目录的支持 ./locales/xx/LC_MESSAGES/yyyyy.po [datakurre]

0.13.0 (2015-04-23)

  • 添加导出和导入plone.app.contenttypes -内容的支持 [datakurre]

0.12.0 (2015-04-04)

  • 将自定义GS导入导出适配器移动到外部配置 [datakurre]

  • 修复注册p.a.theming层的设置表单 [datakurre]

0.11.1 (2015-04-04)

  • 更新README [datakurre]

0.11.0 (2015-04-04)

  • 添加站点设置导入视图以允许测试或手动升级站点设置 [datakurre]

  • 在主题清单中添加选项,通过插件配置变量禁用设置步骤导入(使用 enabled = falsedisabled = true)[datakurre]

0.10.0 (2015-04-03)

  • 添加GS内容导出支持,包括带有 collective.themesitesetup.interfaces.IGenericSetupExportableContainer 标记的非CMF容器[datakurre]

  • 添加GS内容导出/导入以支持非CMF容器、Python脚本和页面模板[datakurre]

0.9.0 (2015-04-01)

  • 第一个版本。

项目详情


下载文件

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

源代码分发

collective.themesitesetup-2.1.2.tar.gz (112.3 kB 查看哈希值)

上传时间 源代码

构建分发

collective.themesitesetup-2.1.2-py2-none-any.whl (32.9 kB 查看哈希值)

上传时间 Python 2

由以下机构支持