跳转到主要内容

辅助包,用于设置RedTurtle的Plone站点,使其能够与Volto一起工作。

项目描述

这是一个辅助包,用于设置 RedTurtle 的 Plone 网站,使其能够与 Volto 一起工作。

python version ci Coverage downloads License

功能

内容类型

  • 新闻项目和事件只能包含 链接图像文件

volto.blocks 默认启用了这些内容类型的 行为

  • 文档

  • 新闻项目

  • 事件

还为 IBlockSearchableText 注册了一些适配器,用于索引一些常见的块。

自定义块转换器

有为序列化和反序列化提供自定义转换器的适配器,以更好地管理 resolveuids。

如果一个块引用了一些内部内容,在反序列化时我们只存储其 UID,在序列化时我们“扩展”信息与摘要序列化内容。

@context-navigation 端点

plone.restapi 的 @navigation 端点始终返回从网站根目录开始的导航树。

还有一个 @context-navigation 端点,返回上下文导航树

> curl -i https://127.0.0.1:8080/Plone/folder?context-navigation -H 'Accept: application/json'

这是结果

{
    '@id': 'https://127.0.0.1:8080/Plone/folder',
    'items': [
        {'@id': 'https://127.0.0.1:8080/Plone/folder/folder-a',
            'description': '',
            'title': 'Folder A'},
        {'@id': 'https://127.0.0.1:8080/Plone/folder/folder-b',
            'description': '',
            'title': 'Folder B'},
        {'@id': 'https://127.0.0.1:8080/Plone/folder/folder-c',
            'description': '',
            'title': 'Folder C'}
    ]
}

默认情况下只显示第一层。您可以通过传递一个 expand.navigation.depth 参数来设置深度

> curl -i https://127.0.0.1:8080/Plone/folder?context-navigation?expand.navigation.depth=2 -H 'Accept: application/json'

这是结果

{
    '@id': 'https://127.0.0.1:8080/Plone/folder',
    'items': [
        {
            '@id': 'https://127.0.0.1:8080/Plone/folder/folder-a',
            'description': '',
            'items': [
                {
                    '@id': 'https://127.0.0.1:8080/Plone/folder/folder-a/folder-aa',
                    'description': '',
                    'title': 'Folder AA',
                },
                {
                    '@id': 'https://127.0.0.1:8080/Plone/folder/folder-a/folder-ab',
                    'description': '',
                    'title': 'Folder AB',
                },
            ],
            'title': 'Folder A',
        },
        {
            '@id': 'https://127.0.0.1:8080/Plone/folder/folder-b',
            'description': '',
            'title': 'Folder B',
        },
        {
            '@id': 'https://127.0.0.1:8080/Plone/folder/folder-c',
            'description': '',
            'title': 'Folder C',
        },
    ],
}

@site-search 端点

此端点的工作方式与 @search 端点相同,但请注意类型不可搜索设置。

@sitemap-settings

返回匿名用户(无法访问注册条目)的网站地图设置的端点。

返回如下数据结构

{
    'depth': 3,
}

@search 端点

我们针对该错误:[https://github.com/plone/plone.restapi/pull/1066](https://github.com/plone/plone.restapi/pull/1066) 定制了 @search 端点

@querystring-search 端点定制

如果我们只搜索 事件 类型,使用 get_events 方法进行特殊搜索以搜索事件:该方法处理重复项并避免错误结果。

否则,执行默认的查询字符串搜索。

禁止机器人索引

有一个自定义视图小部件,在 <head> 部分添加一个 <meta> 标签以防止机器人索引。

参考:[https://developers.google.com/search/docs/advanced/crawling/block-indexing?visit_id=637489966041845317-1328107746&rd=1](https://developers.google.com/search/docs/advanced/crawling/block-indexing?visit_id=637489966041845317-1328107746&rd=1)

Restapi 搜索限制

默认情况下,搜索结果长度限制为 500 项,但您可以使用环境变量 REDTURTLE_VOLTO_MAX_LIMIT_SEARCH 来更改此限制

补丁

Products.PortalTransforms

见 [https://github.com/plone/Products.PortalTransforms/pull/43](https://github.com/plone/Products.PortalTransforms/pull/43)

有一个猴子补丁来应用这些更改。

事件重复

有一个猴子补丁用于事件重复,以修复它们的持续时间。

如果它运行良好,我们可以向 p.a.event 提交一个 pr。

还有一个猴子补丁用于事件重复,以更改序列化器开始索引的默认行为。现在它保留了所有日期,即使单个日期已经过去。

尊重粘贴时的本地允许类型

不允许将不允许粘贴到目标文件夹中的项目。

DateTime 字段序列化器/反序列化器

自定义这些适配器以正确设置有效和过期日期。

如果没有这个更改,这些日期将以UTC小时存储,而不是以当前时区的小时存储,因为行为setter/getter将从值中去除时区。

使用这个补丁,我们将向setter发送已经本地化的小时的日期,即使setter去除了时区信息,我们也将保存正确的日期。

默认ISerializeToJsonSummary适配器

这是一个为需要完整图像缩放对象的旧volto模板向后兼容的补丁。

身份验证头

存在一个自定义的IPubStart事件处理器,它从auth_token cookie设置授权bearer头。有关详细信息,请参阅pull-request

默认情况下,此补丁未启用。您需要设置环境变量为truePROXY_BEARER_AUTH

条件性搜索不存在的网站路径

plone.app.redirector.FourOhFourView.search_for_similar方法已修补,如果设置环境变量REDTURTLE_VOLTO_ENABLE_SEARCH_FOR_SIMILAR,则返回空列表。

新标准

有一个新的标准用于集合和列表块,它在exclude_from_nav索引上搜索。

缓存控制面板

安装后,缓存控制面板将填充自定义策略,而默认情况下全局启用缓存。请正确设置缓存代理。

@vocabularies权限

根据新的plone.restapi实现,@vocabularies端点将检查一些权限,以使词汇可用或不可用。

我们已修补__init__文件中的PERMISSIONS变量,以允许关键字词汇对匿名用户可用。

参考:https://github.com/plone/plone.restapi/pull/1258#issuecomment-980628982

RamCache在tersecaching

我们已禁用ramcache for tersecaching(plone.app.caching.terseCaching.plone.content.dynamic.ramCache),因为它似乎在存在多个实例并且内容已被修改时无法正确清除。

我们需要检查为什么它没有被清除,并修复它。

模板覆盖

RSS.pt模板

我们对Products.CMFPlone.browser.syndication.templates.RSS.pt模板进行了自定义,以向feed项目添加enclosure标签。还添加了一个条目到注册表中,以便能够设置要显示的缩略图。此条目名为redturtle.volto.rss_image_miniature。

查找块

存在一个视图@@find-blocks,它将返回至少有一个指定类型块的文件内容。

Stringinterp适配器

有一个新的stringinterp适配器,例如可以在内容规则中使用:{volto_url}

此适配器将从内容的绝对_url中删除“/api”。

Sitemap.xml.gz视图自定义

存在一个自定义视图sitemap.xml.gz,它将返回一个sitemap.xml.gz文件。

这是来自plone.app.layout.sitemap.sitemap原始视图的副本。

唯一的不同之处在于

  • 我们将深度级别限制为注册表设置plone.sitemap_depth(默认3)

  • 我们添加了上周修改的内容

使用Volto,为服务此文件,我们需要在Apache配置中添加一行类似以下的内容

RewriteRule ^/+(sitemap.xml.gz) http://127.0.0.1:8080/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1 [L,P]

安装

通过将其添加到您的buildout中安装redturtle.volto

[buildout]

...

eggs =
    redturtle.volto

然后运行bin/buildout

贡献

许可

此项目采用GPLv2许可。

作者

此产品是由红海龟技术团队开发的。

RedTurtle Technology Site

贡献者

变更日志

5.5.5 (2024-09-23)

  • 在检查块时避免在查找断链视图中进行获取。 [cekk]

5.5.4 (2024-09-23)

  • 修复“查找断链”视图中文件名生成的错误。 [cekk]

5.5.3 (2024-09-23)

  • 添加“查找断链”视图,返回包含块中断链内容的CSV文件。 [cekk]

5.5.2 (2024-09-05)

  • 修复SummarySerializer以支持集合导出链接。 [lucabel]

  • 移除newsitem模板覆盖,在后台使用默认dexterity视图显示newsitem [mamico]

  • 自定义@@display-file以允许下载具有正确文件名的文件。 [cekk]

  • 将“类型”添加到块序列化器/反序列化器中的EXCLUDE_KEYS中,以防止转换此slate属性。 [cekk]

5.5.1 (2024-07-22)

  • 允许在RSS中选择使用的图像缩略图。 [lucabel]

5.5.0 (2024-07-10)

  • 将事件发生次数限制为100。 [eikichi18]

  • 添加对collective.volto.sitesettings的依赖。 [cekk]

5.4.9 (2024-04-22)

  • 将事件发生次数限制为100。 [mamico]

  • 自定义INameChooser适配器,也检查别名ID,并禁止创建可能覆盖别名的内容。 [cekk]

  • 也自定义复制移动端点,如果该操作将覆盖某些别名,则引发BadRequest。 [cekk]

  • 在控制面板中添加标志以启用/禁用INameChooser自定义。 [cekk]

  • 在反序列化器中排除bg_color字段。 [cekk]

  • 卸载collective.volto.cookieconsent(已弃用)。将在下一版本中从依赖中移除。 [cekk]

  • 添加对collective.volto.gdprcookie的依赖,并将其默认安装。 [cekk]

5.4.8 (2024-03-19)

  • 对于表单块,不要尝试将字符串转换为内部路径。

  • 在链接完整性块适配器中处理None值。

  • 在@querystring-search中对绝对路径有非现有UID和b_size==1的情况进行修补,避免在整个站点中搜索。见#99了解更多详情。 [cekk]

5.4.7 (2024-03-11)

  • 在RSS源中添加事件适配器处理程序,以导出开始日期而不是发布日期 [lucabel]

5.4.6 (2024-03-06)

  • 在使用get方法之前检查值是否为字典。 [eikichi18]

5.4.5 (2024-03-05)

  • 更新plone.restapi要求到9.6.0版本 [folix-01]

  • 移除对plone.restartpi.serializer.utils.RESOLVEUID_RE的monkeypatch [folix-01]

5.4.4 (2024-02-20)

  • 为具有BlocksField字段的内容类型添加链接完整性适配器。 [cekk]

  • 修复:发生次数索引 [mamico]

5.4.3 (2024-01-30)

  • 升级步骤以从robots.txt中移除所有自定义Googlebot规则 [mamico]

  • 修复:将range_start添加到计算重复事件的功能中,以便正确计算 [eikichi18]

5.4.2 (2024-01-11)

  • 修复relationfield反序列化器,添加对路径对象计算的lstrip [eikichi18]

5.4.1 (2023-12-28)

  • 修复relationfield反序列化器,使用UID而不是@id [eikichi18]

  • isort [folix-01]

  • 添加monkeypatch以修复@scadeziario-day端点 [eikichi18]

5.4.0 (2023-11-14)

  • 在querystringsearch中返回错误而不是引发BadRequest。 [mamico]

  • 添加升级步骤和setuphandler以修复添加“允许: /?expand”到robots.txt原始规则的错误 [lucabel]

5.3.0 (2023-10-25)

  • 修复:“fix-link”视图有一个错误,该错误通过用始终相对于站点的URL替换当前外部URL来损坏链接,即使请求使用来自不同站点的链接进行替换。 [lucabel]。

  • 对plone.app.redirector.FourOhFourView.search_for_similar进行修补,以启用条件性搜索类似内容 [folix-01]

  • 仅对匿名用户设置search/querystring-search限制补丁。认证用户可能需要执行更高的查询(例如在内容视图中)。 [cekk]

  • 在querystringsearch服务中重新应用上下文UID过滤器(如plone.restapi中所示)。 [cekk]

5.2.4 (2023-09-26)

  • 修复@translation GET端点中的问题:如果此端点被调用,可能是通过机器人调用,并且plone.app.multilingual没有安装,则调用将导致在目录上的空搜索查询。 [lucabel]

  • 回滚https://github.com/plone/Products.CMFPlone/pull/3845修复:当标记many_users时避免搜索所有用户 [mamico]

5.2.3 (2023-09-21)

  • 搜索限制最大值成为可配置的,由环境变量‘REDTURTLE_VOLTO_MAX_LIMIT_SEARCH’设置,默认为500。 [folix-01]

5.2.2 (2023-08-29)

  • 修复RESOLVEUID_RE正则表达式。 [cekk]

5.2.1 (2023-08-29)

  • 使用plone.volto uid_to_url方法将总结中的resolveuid链接转换为URL。 [cekk]

  • 修改plone.restapi的RESOLVEUID_RE正则表达式以捕获更多URL。[cekk]

  • 在自定义排名中忽略不存在的索引。[cekk]

5.2.0 (2023-08-21)

  • 添加目录和搜索补丁以限制结果。[cekk]

5.1.0 (2023-08-17)

5.0.1 (2023-07-04)

  • 在@@fix-links中自定义portal URL。[mamico]

5.0.0 (2023-04-04)

  • 移除主页中未使用的默认文本。[cekk]

5.0.0rc1(2023-03-20)

  • 支持Plone 6.0

  • 使用AdvancedQuery处理自定义搜索排名。[mamico]

  • 添加控制面板用于redturtle.volto设置。[cekk]

4.1.3 (2023-02-12)

  • 自定义sitemap.xml.gz。[mamico]

4.1.2 (2022-12-27)

  • 自定义voltobackendwarning视图小部件,因为它在plone 5.2中已损坏。[cekk]

4.1.1 (2022-12-23)

  • 升级步骤:从p.a.caching terseCaching中删除etags列表(在旧Plone站点中)。[cekk]

4.1.0 (2022-11-22)

  • 添加新的实用视图@@find-blocks。[cekk]

4.0.2 (2022-08-29)

4.0.1 (2022-08-12)

  • 修复升级步骤。[cekk]

  • 允许将文档添加到新闻条目和事件中。[cekk]

4.0.0 (2022-08-12)

  • 移除与plone.volto配置对齐的内容类型自定义。[cekk]

3.12.2 (2022-05-19)

  • 在块反序列化器中将query添加到忽略的键中。这避免了带有querystringsearch小部件的块被解析(例如搜索一个)。[cekk]

3.12.1 (2022-05-19)

  • 为volto_parent_url添加字符串解释。[eikichi18]

3.12.0 (2022-04-04)

  • 为事件日期添加新元数据。[cekk]

3.11.0 (2022-04-01)

  • 将字符串解释适配器添加到替换{volto_url}为当前前端URL(后端URL不带“/api”)。[cekk]

3.10.0 (2022-03-26)

  • 为内部链接添加Table块序列化器/反序列化器。[cekk]

  • 添加修复内部链接的视图。[cekk]

3.9.2 (2022-03-25)

  • 修复摘要中的remoteUrl序列化。[cekk]

3.9.1 (2022-03-17)

  • 块反序列化器中现在使用brains而不是适配对象进行Refs序列化,因为brain具有所有目录元数据并且可以获取完整的对象。[cekk]

3.9.0 (2022-03-14)

  • 允许为RSS模板选择自定义缩略图。[lucabel]

  • 更好地序列化块中的refs:现在我们不序列化完整对象,而只序列化摘要(带所有元数据)以减少(非常多)响应的大小。[cekk]

3.8.3 (2022-03-07)

  • 修复摘要序列化中的null日期(现在我们处理不同的用例)。[cekk]

  • 在序列化brain时返回remoteUrl元数据,以与不支持brain的序列化器保持向后兼容。[cekk]

3.8.2 (2022-02-07)

  • 在尝试提取UID时,处理块反序列化器中的非路径值。[cekk]

3.8.1 (2022-01-31)

  • 在摘要序列化中为未设置日期返回null值(因为元数据使用未来的或过去的日期设置,以进行更好的过滤/排序)。[cekk]

3.8.0 (2022-01-26)

  • 自定义json摘要序列化器以在请求_all metadata_fields时公开图像缩放。[cekk]

3.7.3 (2021-12-27)

  • 升级步骤:向没有它们的页面添加默认块。[cekk]

3.7.2 (2021-12-02)

3.7.1 (2021-12-01)

  • 升级步骤:为所有具有表格块的 内容重新索引SearchableText(在plone.restapi 8.16.1中有所更改)。[cekk]

3.7.0 (2021-12-01)

  • 移除enabled_vocabularies实现,因为最近在plone.restapi(>8.15.2)中有一个标准方法。[cekk]

3.6.2 (2021-11-09)

  • 现在绕过plone.volto序列化块(在monkeypatch.py中)。[cekk]

3.6.1 (2021-11-05)

  • 修复plone.volto的升级步骤。[cekk]

3.6.0 (2021-10-28)

  • 添加plone.volto依赖项。[cekk]

3.5.0 (2021-10-11)

  • p.a.caching规则用于rest api服务。[mamico]

3.4.2 (2021-10-01)

  • 修复测试。[cekk]

3.4.1 (2021-09-30)

  • 禁用tersecaching的ramcache(以解决缓存无效化平衡实例的问题..见README)。[cekk]

3.4.0 (2021-09-29)

  • 更好地处理事件搜索。[cekk]

3.3.0 (2021-09-21)

  • 索引一些常见块中的文本。[cekk]

  • 修复字段中的日期时间区。[cekk]

3.2.2 (2021-08-24)

  • 为DateTime字段自定义序列化器/反序列化器,以正确设置有效和过期与正确的时间区偏移量。[cekk]

  • 允许匿名用户通过restapi访问Plone词汇表。@vocabularies端点已被定制,以限制匿名用户实际可访问的词汇表。[cekk]

3.2.1 (2021-08-04)

  • 删除定制的@workflow端点。现在已合并到plone.restapi >= 8.7.1。[cekk]

3.2.0 (2021-08-02)

  • 根据plone.restapi #1184和#1190 pull request定制@workflow端点。[cekk]

  • 安装时移除默认缓存代理地址。[cekk]

3.1.3 (2021-06-30)

  • 修复Volto 13升级步骤中的b_size转换问题。[cekk]

3.1.2 (2021-06-18)

  • 修复Volto 13迁移中的linkMore问题。[cekk]

3.1.1 (2021-06-17)

  • 在volto13迁移中处理具有旧Richtext值的条目。[cekk]

3.1.0 (2021-06-17)

  • [重大更改] 支持 Volto 13。升级步骤将更新列表块数据。[cekk]

3.0.1 (2021-06-08)

  • 审查缓存配置文件。[mamico]

3.0.0 (2021-05-28)

  • 在控制面板中提供缓存策略的基本设置。[daniele]

2.1.2 (2021-05-11)

  • 在querystring-search中处理起始和结束值的额外修复。[cekk]

2.1.1 (2021-05-11)

  • 修复querystring-search中起始和结束值的处理。[cekk]

2.1.0 (2021-05-05)

  • 与plone.restapi 7.3.2中的更改兼容。[cekk]

2.0.2 (2021-05-05)

  • 在querystringsearch补丁中处理限制。[cekk]

2.0.1 (2021-05-05)

  • 在querystringsearch补丁中处理排序顺序。[cekk]

2.0.0 (2021-04-30)

  • 删除@events-search端点,并定制@querystring-search端点以处理事件如@events-search。[cekk]

1.3.0 (2021-04-19)

  • 在内容粘贴时也尊重本地允许的类型。[cekk]

1.2.4 (2021-04-15)

  • 仅针对restapi调用定制远程Url字段描述的翻译。[cekk]

1.2.3 (2021-04-01)

  • 向EXCLUDE_TYPES添加了“searchEvents”块类型。[giuliaghisini]

1.2.2 (2021-03-25)

  • 添加了导入p.a.c.配置文件的升级步骤。[daniele]

1.2.1 (2021-03-17)

  • 针对事件重复进行Monkeypatch。[cekk]

  • 修复升级步骤中的配置文件名称。[cekk]

1.2.0 (2021-03-02)

  • 新增搜索事件的端点:@events-search。

  • 更好地处理递归问题:现在只有当引用项是当前上下文时才进行序列化。[cekk]

1.1.0 (2021-03-01)

  • 使用ISerializeToJsonSummary而不是fullobject扩展uids,以节省空间并避免块具有指向当前上下文的内部引用时的最大递归深度。[cekk]

1.0.9 (2021-02-23)

  • 在块序列化器中处理未经授权的情况。[cekk]

1.0.8 (2021-02-19)

  • 修复错别字。[cekk]

1.0.7 (2021-02-19)

  • 升级plone.app.registry时不运行依赖项。[cekk]

1.0.6 (2021-02-15)

  • 不允许Plone站点索引:在中添加noindex。[cekk]

  • 撤销robots.txt的定制,因为它与noindex指令冲突。[cekk]

1.0.5 (2021-02-11)

1.0.4 (2021-02-10)

  • 定制robots.txt以禁止/api条目。[cekk]

1.0.3 (2021-02-09)

1.0.2 (2021-02-09)

  • 重新添加远程Url字段序列化器。[cekk]

1.0.1 (2021-02-08)

  • [新功能] 从modena添加RSS.pt模板覆盖。[lucabel]

  • 删除已合并到plone.restapi中的文本块序列化器。[cekk]

  • 也为网站根注册通用序列化器。[cekk]

1.0.0 (2020-12-07)

  • 将exclude_from_nav作为集合标准添加(在Volto的列表块中也被使用)。[cekk]

  • 添加用于返回远程Url字段正确小部件的自定义TextLine适配器。[cekk]

0.1.6 (2020-11-25)

  • 允许Products.PloneHotfix20200121版本大于1.0。[pnicolli]

  • 修复通用序列化器/反序列化器。[cekk]

  • 在检查url反序列化块时也跳过“calendar”。[lucabel]

  • 修复文档模板。[cekk]

0.1.5 (2020-10-20)

  • 从块中删除resolveuid序列化器/反序列化器:现在它们已集成到plone.restapi中。[cekk]

  • 为块添加自定义转换器以处理通用块中的链接。[cekk]

  • 允许编辑器和贡献者通过restapi访问Plone词汇表。[cekk]

  • 添加@sitemap-settings端点。[cekk]

0.1.4 (2020-07-16)

  • 添加关键字词汇补丁。[cekk]

0.1.3 (2020-06-22)

  • 添加默认主页。[nzambello]

  • 将块行为添加到LRF中。[nzambello]

  • 使用块行为制作可编辑和可查看的Plone站点。[nzambello]

  • 从新闻条目、事件和文档中删除richtext行为。[cekk]

  • 新闻条目和事件是文件夹式的,只能包含链接、图片和文件。[cekk]

0.1.2 (2020-05-25)

  • 恢复事件和新闻条目默认行为。[cekk]

0.1.1 (2020-05-22)

  • 安装 also collective.volto.cookieconsent。[cekk]

0.1.0 (2020-05-22)

  • 初始发布。[cekk]

项目详情


发布历史 发布通知 | RSS 源

下载文件

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

源分布

redturtle.volto-5.5.5.tar.gz (97.2 kB 查看哈希值)

上传时间

构建分布

redturtle.volto-5.5.5-py3-none-any.whl (123.9 kB 查看哈希值)

上传时间 Python 3

支持