跳转到主要内容

发布遍历期间不获取

项目描述

简介

“获取”和publishTraverse的问题在于当前方法返回了过多不同的URL来访问相同的内容。例如,以下是plone.org网站“kb”页面的潜在URL之一

以下是具有两个内容项“a”和“b”(可折叠或不可折叠)的通用“Plone”站点

所有上述URL都返回200状态码并显示相同的内容,而我希望“规范URL”返回200状态码,其他则返回404状态码。

上述行为构成了一个问题,因为

  • 相同内容的多个URL对于SEO来说是一个问题,并且会让人困惑。对于SEO,Plone在最新版本中引入了规范META,但据我观察,这只是权宜之计。人们感到困惑。例如:有时我的编辑会问我:“我不能删除http://example.com/Plone/a/b/a/page。你能帮我吗?”

  • 在所有URL上页面看起来并不完全相同:如果您打开https://plone.org/documentation/kbhttps://plone.org/documentation/manual/kb,第二个页面有一个第一个页面缺少的组件

  • 从外部缓存(如varnish或squid)中删除页面(例如,在内容修改后),将会很麻烦。这是因为对于相同的内容,可能存在多个URL,没有任何控制或规则(《collective.purgebyid》可以解决这个问题)

  • 当使用子站(或在同一Zope应用程序上的多个Plone站点)时,问题更加讨厌:假设“a”是http://a.example.org的子站(标记为INavigationRoot),而“b”是http://b.example.org。打开URLhttp://a.example.org/b可能会在“b”站点内显示站点“a”的首页。《collective.siteisolation》和可能《collective.lineage》会做些事情来隔离子站,但在我看来,这些仍然是权宜之计。

使用方法

这是对Zope2的《ZPublisher.BaseRequest.DefaultPublishTraverse》方法的一个猴子补丁,以及《Products.Archetypes.BaseObject.BaseObject.__bobo_traverse__》的一个猴子补丁

默认情况下,无效的遍历仅记录为警告。

要启用引发异常,您需要手动修改《config.py》,将《DRYRUN》更改为《False》。

或使用《plone.recipe.zope2instance >= 4.2.14》,例如。

[instance]
recipe = plone.recipe.zope2instance
eggs =
    experimental.noacquisition
...
initialization =
   from experimental.noacquisition import config
   config.DRYRUN = False

警告

自行承担风险使用

如果您不知道自己在做什么,请不要使用它……至少使用《DRYRUN = True》。

测试

此附加组件使用Travis CI进行测试。该附加组件的当前状态为

https://secure.travis-ci.org/collective/experimental.noacquisition.png

其他解决方案

在《Products.CMFPlone》的一个分支中有一个更优雅的解决方案,它使用IPubAfterTraversal事件而不是猴子补丁。但似乎目前它并不适用于所有情况,至少当请求结束时存在自定义遍历时(请查看此包内的测试)。https://github.com/plone/Products.CMFPlone/tree/publication-through-explicit-acquisition

还有其他与CMFPlone分支相同方法的包:《collective.explicitacquisition》和《collective.redirectacquired》。

变更日志

1.0.0b10 (2023-02-09)

  • Zope < 6(无更改)[daniele-andreotti]

1.0.0b9 (2020-07-02)

  • Zope < 5(无更改)[mamico]

1.0.0b7 (2019-12-10)

  • Zope < 4.2(无更改)[mamico]

1.0.0b6 (2019-11-07)

  • Python3 Plone 5.2 [mamico]

1.0.0b5 (2019-06-05)

  • Zope2 2.13.28(无更改)[mamico]

1.0.0b4 (2018-05-14)

  • Zope2 2.13.27(无更改)[mamico]

1.0.0b3 (2017-05-09)

  • Zope2 2.13.26(无更改)[mamico]

1.0.0b2 (2016-06-10)

  • Zope2 2.13.24 [mamico]

1.0.0b1 (2015-10-23)

  • Zope2 2.13.23(Plone 4.3.7/5.0)[mamico]

1.0.0a5 (2014-10-31)

  • 目前尚无更改。

1.0.0a4 (2014-10-31)

  • 首次发布

项目详情


下载文件

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

源分发

experimental.noacquisition-1.0.0b10.tar.gz (12.6 kB 查看哈希值)

上传时间

由以下支持