发布遍历期间没有采集
项目描述
介绍
“acquisition”和 publishTraverse 的问题是当前方法为相同的内容返回了太多不同的 URL。例如,这里是 plone.org 网站的“kb”页面的一些潜在 URL
…
这是一个通用的“Plone”站点,有两个内容项“a”和“b”(是否为文件夹)
…
上面的所有 url 都返回 200,内容相同,而我希望“规范 url”返回 200,另一个返回 404。
上述行为构成问题,因为:
同一内容的多个 url 对 SEO 来说是一个问题,并且让人们感到困惑。对于 SEO,在最新版本中,Plone 引入了规范的 META,但恕我直言,这只是一种解决方法。人们很困惑。例如:有时我的一些编辑会问我:“我无法删除http://example.com/Plone/a/b/a/page。你可以帮我做这件事吗?”
该页面在所有 url 上似乎并不完全相同:如果您打开 https://plone.org/documentation/kb和 https://plone.org/documentation/manual/kb,则第二个有一个 portlet,第一个是失踪
从外部缓存(清漆或鱿鱼)中删除页面,例如在内容修改之后,将会很痛苦。这是因为对于相同的内容,可能有多个 url 没有任何控制或规则(collective.purgebyid解决了这个问题)
当使用子站点(或同一个 zope 应用程序上的多个 plone 站点)时,问题更加烦人:假设“a”是http://a.example.org的子站点(标有 INavigationRoot),而“b”是http ://b.example.org。打开网址http://a.example.org/b可能会在“b”站点内显示站点“a”的主页。 collective.siteisolation和可能的collective.lineage做一些事情来隔离子站点,但恕我直言,这只是解决方法。
用法
这是 Zope2 的ZPublisher.BaseRequest.DefaultPublishTraverse的 publishTraverse 方法的 猴子补丁和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 测试的。插件的当前状态是:
其他解决方案
Products.CMFPlone 的一个分支中有一个更优雅的解决方案,它使用 IPubAfterTraversal 事件而不是猴子补丁。但似乎目前它并不适用于所有情况,至少在请求结束时有自定义遍历时(看看这个包中的测试)。 https://github.com/plone/Products.CMFPlone/tree/publication-through-explicit-acquisition
还有其他与 CMFPlone 分支采用相同方法的包: collective.explicitacquisition和 collective.redirectacquired
变更日志
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 克隆 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(克隆 4.3.7/5.0)[mamico]
1.0.0a5 (2014-10-31)
什么都没有改变。
1.0.0a4 (2014-10-31)
初始发行
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。