我想重新索引特定类型的所有内容,只需一次。
我应该在zmi中创建一个python脚本吗?
这是我到目前为止所拥有的
from zope.component.hooks import getSite
site = getSite()
items = site.contentItems()
items.reindexObject()
我不确定如何指定类型......或者我是否在正确的轨道上。有没有我可以解剖的这种操作的例子?
答案 0 :(得分:4)
最好的方法是使用目录:
import plone.api
catalog = plone.api.portal.get_tool(name='portal_catalog')
for brain in catalog(portal_type='My portal type'):
obj = brain.getObject()
obj.reindexObject()
那就可以了。
请注意,我只使用了plone.api调用,因此您的代码将来会证明。
答案 1 :(得分:3)
我们使用的解决方案:
import plone.api
catalog = plone.api.portal.get_tool(name='portal_catalog')
for brain in catalog(portal_type='My portal type'):
obj = brain.getObject()
catalog.catalog_object(obj)
使用ZCatalog中的catalog_object
方法与ZMI"更新"使用的API相同。特征:
优点:修改日期未更新,您只需重新编制目录数据索引
缺点:您无法在受限制的Python中使用此API(您可以调用obj.reindexObject
)
如果您对修改日期更改没有疑问,则gforcata答案会更简单。