432f015fe4
svn path=/plone.app.discussion/trunk/; revision=51797
127 lines
3.4 KiB
Plaintext
127 lines
3.4 KiB
Plaintext
================================================================================
|
|
How to override plone.app.discussion's comments viewlet
|
|
================================================================================
|
|
|
|
Override the comments template through-the web
|
|
----------------------------------------------
|
|
|
|
* go to the ZMI
|
|
* click on portal_view_customizations
|
|
* customize plone.comments (plone.app.discussion.interfaces.IDiscussionLayer)
|
|
|
|
|
|
Override the comments template with z3c.jbot on the file system
|
|
---------------------------------------------------------------
|
|
|
|
http://pypi.python.org/pypi/z3c.jbot
|
|
|
|
setup.py::
|
|
|
|
install_requires=[
|
|
...
|
|
'z3c.jbot',
|
|
],
|
|
|
|
configure.zcml::
|
|
|
|
<include package="z3c.jbot" file="meta.zcml" />
|
|
|
|
<browser:jbot
|
|
directory="overrides"
|
|
layer="<layer>" />
|
|
|
|
Replace <layer> with a custom browserlayer of your package.
|
|
|
|
Create template directory::
|
|
|
|
$ mkdir overrides
|
|
|
|
Copy comments viewlet template to overrides directory::
|
|
|
|
$ cp ../parts/omelette/plone/app/discussion/browser/comments.pt overrides/plone.app.discussion.browser.comments.pt
|
|
|
|
Restart your Plone instance and you can start to customize your copy of the comments viewlet.
|
|
|
|
|
|
Override the comments viewlet class on the file system
|
|
------------------------------------------------------
|
|
|
|
interfaces.py::
|
|
|
|
from plone.app.discussion.interfaces import IDiscussionLayer
|
|
|
|
class IMyDiscussionLayer(IDiscussionLayer):
|
|
"""Marker interface for browser layer
|
|
"""
|
|
|
|
profiles/default/browserlayer.xml::
|
|
|
|
<?xml version="1.0"?>
|
|
<layers>
|
|
<layer name="my.discussion"
|
|
interface="my.discussion.interfaces.IMyDiscussionLayer" />
|
|
</layers>
|
|
|
|
|
|
configure.zcml::
|
|
|
|
<!-- Override plone.app.discussion's comments viewlet -->
|
|
<browser:viewlet
|
|
name="plone.comments"
|
|
for="Products.CMFCore.interfaces.IContentish"
|
|
layer="plone.app.discussion.interfaces.IDiscussionLayer"
|
|
manager="plone.app.layout.viewlets.interfaces.IBelowContent"
|
|
view="plone.app.layout.globals.interfaces.IViewView"
|
|
class=".comments.CommentsViewlet"
|
|
permission="zope2.View"
|
|
/>
|
|
|
|
comments.py::
|
|
|
|
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
|
|
|
from plone.app.discussion.browser.comments import CommentsViewlet as PloneAppDiscussionCommentsViewlet
|
|
from plone.app.discussion.browser.comments import CommentForm
|
|
|
|
|
|
class CommentsViewlet(PloneAppDiscussionCommentsViewlet):
|
|
|
|
form = CommentForm
|
|
index = ViewPageTemplateFile('comments.pt')
|
|
|
|
def get_commenter_home_url(self, username=None):
|
|
if username is None:
|
|
return None
|
|
else:
|
|
return "%s/memberhome/%s" % (self.context.portal_url(), username)
|
|
|
|
|
|
comment.pt::
|
|
|
|
...
|
|
|
|
|
|
Override the comments viewlet Javascript
|
|
----------------------------------------
|
|
|
|
profiles/default/jsregistry.xml::
|
|
|
|
<?xml version="1.0"?>
|
|
<object name="portal_javascripts">
|
|
<javascript
|
|
id="++resource++plone.app.discussion.javascripts/comments.js"
|
|
remove="True"
|
|
/>
|
|
<javascript
|
|
id="++resource++example.myaddonproduct.javascripts/comments.js" />
|
|
</object>
|
|
|
|
browser/configure.zcml::
|
|
|
|
<!-- Resource directory for javascripts -->
|
|
<browser:resourceDirectory
|
|
name="example.myaddonproduct.javascripts"
|
|
directory="javascripts"
|
|
layer="example.myaddonprocuts.interfaces.IBrowserLayer"
|
|
/>
|