我試圖直接實現一個基本的Zope2內容類型,而不使用靈巧或原型,因爲我需要這非常精益。爲什麼我的內容對象不顯示在portal_catalog中?
from OFS.SimpleItem import SimpleItem
from Products.ZCatalog.CatalogPathAwareness import CatalogAware
from persistent.list import PersistentList
class Doculite(SimpleItem, CatalogAware):
""" implement our class """
meta_type = 'Doculite'
def __init__(self, id, title="No title", desc=''):
self.id = id
self.title = title
self.desc = desc
self.tags = PersistentList()
self.default_catalog = 'portal_catalog'
def add_tags(self, tags):
self.tags.extend(tags)
def Subject(self):
return self.tags
def indexObject(self):
self.reindex_object()
從外部方法,我這樣做:
def doit(self):
pc = self.portal_catalog
res1 = pc.searchResults()
o1 = self['doc1']
o1.add_tags(['test1', 'test2'])
o1.reindex_object()
res2 = pc.searchResults()
return 'Done'
我清除目錄並運行我的外部方法。我的對象沒有進入目錄。但是從索引選項卡中,當我瀏覽主題索引時,可以看到我的內容項目與值一起列出。 res1和res2都是空的。
爲什麼我的內容項目沒有顯示該目錄的searchResuts()裏面?
它是從SimpleItem派生的,所以實現了getPhysicalPath()。我也嘗試從CMFCatalogAware派生,但除了提供plone.indexer包裝(從CMFPlone.CatalogTool中的代碼路徑),它沒有什麼不同。 – sureshvv 2012-02-19 04:04:58