[Zope3-checkins] CVS: Zope3/src/zope/app/catalog - README.txt:1.1
	catalog.txt:NONE
    Philipp von Weitershausen 
    philikon at philikon.de
       
    Mon Mar  1 06:05:56 EST 2004
    
    
  
Update of /cvs-repository/Zope3/src/zope/app/catalog
In directory cvs.zope.org:/tmp/cvs-serv24135
Added Files:
	README.txt 
Removed Files:
	catalog.txt 
Log Message:
Renamed catalog.txt to README.txt
=== Added File Zope3/src/zope/app/catalog/README.txt ===
Adding a site catalog:
The following presupposes that the ObjectHub is installed and the
Registration object for the object hub is installed and active, so the
ObjectHub can pass events on to the catalogs/indexes.
This also presupposes a product called "blog", which allows you to create
content objects - this should apply equally to any other content objects
in your own zope install, presuming they have attributes with values ;)
Add Utility Service to ++etc++site.  Make sure it's marked "Active".
Add a new folder to ++etc++site to keep things clean, called 'searches'.
Go to /++etc++site/searches, the new folder
Add a Catalog, called 'blogCatalog'.  This will take you to a "New Utility
Registration" page.  Enter a name of 'blogCatalog' (this is the name you
will use to find the utility via getUtility()), a provided interface of
"ICatalogQuery" (the interface we implement for a queryable object), a
permission of zope.View, and make it active.
Now we have a utility that implements ICatalogQuery named 'blogCatalog'.
Look in ++etc++site, Utility service, see that it's registered.
Make the blogCatalog have a fieldindex for 'author' - click on the blogCatalog
object, select the "Indexes" tab, and add a Field Index.  Interface can be
zope.interface.Interface, field name should be 'author'.
Add a blog object with an author field to the content space.
Now we add a search interface:
Add the Views Service to ++etc++site.  Make sure it's marked "Active".
Add a module to ++etc++site/default called 'module'. Insert code:
"""
from zope.app import zapi 
from zope.app.interfaces.catalog.catalog import ICatalogQuery
class CatalogView: 
    def search(self): 
        request = self.request 
        catalog = zapi.getUtility(
            self.context,
            ICatalogQuery, 
            name='blogCatalog') 
        terms = request['terms'] 
        return catalog.searchResults(author=terms)
"""
The "name" in the getUtility call is the name you gave the catalog utility
when you added it.
Go to ++etc++site/searches, add a page folder, 'pageFolder', click on it and
go to Default Registration tab. Specify the following properties:
  For interface: zope.interface.Interface
  Dotted name of factory: module.CatalogView
  Permission: zope.View
Add a page, 'search' to etc/searches/pageFolder:
"""
<html>
  <tal:block define="results view/search">
    <b>Results:</b>
    <div tal:repeat="result results">
      <a tal:define="url result/@@absolute_url"
         tal:attributes="href url"
         tal:content="url" />
    </div>
  </tal:block>
</html>
"""
You can now access http://$ZOPE:$PORT/search?terms=authorname
Where search is the name of the page in the pageFolder, authorname is the
author name you wish to search for.
=== Removed File Zope3/src/zope/app/catalog/catalog.txt ===
    
    
More information about the Zope3-Checkins
mailing list