Half the draw of using Zope as a blog framework is being able to use DAV or FTP to interact with the entries. With a local DAV or FTP interface, you can treat your entry storage folder as a local directory, and just drop files in to add entries. DAV is usually the better choice, because moving files securely is much easier. To do this, you need an entry product that supports PUT, and an entry storage that supports DAV. The included STXDocumentEntry product supports PUT. So do the CMF types, and I recommend using those. The storage support comes with Zope, but you need to be able to add your entry types. Again, the CMF types do this automatically. Otherwise, you need your own PUT_factory, since the default is to add DTMLMethods. For example, see put_factory.py. You can't PUT to the BlogFace itself, because it messes with traversal to support the date-based URLs. Instead, add a subfolder to the BlogFace in the web interace, and add entries to that. You probably want to use a BTreeFolder, anyway. This function should be attached to your folder, either by subclassing the folder or by assigning it to the folder. To just assign it, n a Python process that has mounted the ZODB. For example, if your entry folder is at /blog/entryFolder:: persephone ~/zope/viii-new/lib/python= python2.1 Python 2.1 (#1, Jul 30 2001, 21:58:12) [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-81)] on linux2 Type "copyright", "credits" or "license" for more information. >>> import ZPublisher, Zope; app = Zope.app() >>> from Products.BlogFace import put_factory >>> app.blog.entryFolder.PUT_factory = put_factory.PUT_factory >>> get_transaction().commit() >>> # testing >>> app.blog.entryFolder.PUT_factory('xxx', None, None)