Visible Page Elements
Plone Theme Reference
1. Language Selector
Provides a drop down list to select a different language.
- Snippet:
<ul id="portal-languageselector"> ⦠</ul>- Name:
- plone.app.i18n.locales.languageselector
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.app.i18n.locales.languageselector
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/i18n/locales/browser/
- [your egg location]/plone.app.i18n-[version].egg/plone/app/i18n/locales/browser/
- Template Name:
- languageselector.pt
- Class Name:
- plone.app.i18n.locales.browser.selector.LanguageSelector
- Manager:
- Portal Top (name)
plone.app.layout.viewlets.interfaces.IPortalTop (interface)
Sample files & directives
Put a version of languageselector.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.i18n.locales.browser.selector import LanguageSelector
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](LanguageSelector):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="Portal Top" skinname="[your skin name]">
<viewlet name="plone.app.i18n.locales.languageselector" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="Portal Top" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
2. Site Actions
Links, available on every page, to provide specific functionality or information.
- Notes:
- You can reorder, add, or remove individual site actions
- through the web: Site Setup >Zope Management Interface > portal_actions > site_actions
- in your product: profiles/default/actions.xml
- Snippet:
<ul id="portal-siteactions">...</ul>- CSS:
- public.css
- Name:
- plone.site_actions
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.site_actions
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- site_actions.pt
- Class Name:
- plone.app.layout.viewlets.common.SiteActionsViewlet
- Manager:
- plone.portalheader (name)
plone.app.layout.viewlets.interfaces.IPortalHeader (interface)
Sample files & directives
Put a version of site_actions.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import SiteActionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](SiteActionsViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portalheader" skinname="[your skin name]">
<viewlet name="plone.site_actions" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portalheader" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
3. Search Box
Site search facility.
- Notes:
- To customise the search box behaviour
- through the web: Site Setup > Search
- in your product: profiles/default/propertiestool.xml
- Snippet:
<div id="portal-searchbox">â¦</div>- CSS:
- public.css
- Name:
- plone.searchbox
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.searchbox
- Further information:
- http://plone.org/documentation/kb/the-search-box
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- searchbox.pt
- Class Name:
- plone.app.layout.viewlets.common.SearchBoxViewlet
- Manager:
- plone.portalheader (name)
plone.app.layout.viewlets.interfaces.IPortalHeader (interface)
Sample files & directives
Put a version of searchbox.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import SearchBoxViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](SearchBoxViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portalheader" skinname="[your skin name]">
<viewlet name="plone.searchbox" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portalheader" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'4. Logo
The site logo.
- Snippet:
<a id="portal-logo" ...>... </a>- CSS:
- public.css
- Name:
- plone.logo
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.logo
- Further information:
- http://plone.org/documentation/kb/where-is-what/the-logo
See also the Quick Start Section of this manual.
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- logo.pt
- Class Name:
- plone.app.layout.viewlets.common.LogoViewlet
- Manager:
- plone.portalheader (name)
plone.app.layout.viewlets.interfaces.IPortalHeader (interface)
Sample files & directives
Put a version of logo.pt in [your theme package]/browser/templates)
Modify the logo.pt to suit your needs. For example, if you want to use an image named something other than logo.jpg, you could use this code and style #header in your mytheme.css file.
<a metal:define-macro="portal_logo" id="portal-logo" accesskey="1" tal:attributes="href view/navigation_root_url" i18n:domain="plone"> <!-- <img src="logo.jpg" alt="" tal:replace="structure view/logo_tag" /> --> <!--commenting out the code that normally looks for logo.jpg --> <div id="banner"><!-- style this div in your mytheme.css --></div></a>
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import LogoViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](LogoViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portalheader" skinname="[your skin name]">
<viewlet name="plone.logo" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portalheader" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'5. Global Sections
The top level sections of the site.
- Notes:
- The sections are either auto-generated from top level content items or can be set up manually
- through the web: Site Setup > Navigation (for auto-generation)
Site Setup > Zope Management Interface > portal_tabs (for manually defined sections) - in your product: profiles/default/actions.xml and propertiestool.xml
- through the web: Site Setup > Navigation (for auto-generation)
- Snippet:
<h5 class="hiddenStructure">Sections</h5> <ul id="portal-globalnav"> ⦠</ul>- CSS:
- public.css
- Name:
- plone.global_sections
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.global_sections
- Further information:
- http://plone.org/documentation/kb/where-is-what/the-navigation-tabs
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- sections.pt
- Class Name:
- plone.app.layout.viewlets.common.GlobalSectionsViewlet
- Manager:
- plone.portalheader (name)
plone.app.layout.viewlets.interfaces.IPortalHeader (interface)
Sample files & directives
Put a version of sections.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import GlobalSectionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](GlobalSectionsViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portalheader" skinname="[your skin name]">
<viewlet name="plone.global_sections" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portalheader" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'
6. Personal Bar
Provides the Log in link and further links for users once logged in.
- Notes:
- You can reorder, add, or remove specific links in the personal bar
- through the web: Site Setup >Zope Management Interface > portal_actions > user
- In your product: profiles/default/actions.xml
- Snippet:
<div id="portal-personaltools-wrapper"> â¦</div>- CSS:
- public.css
- Name:
- plone.personal_bar
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.personal_bar
- Further information:
- http://plone.org/documentation/kb/where-is-what/the-personal-bar
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- personal_bar.pt
- Class Name:
- plone.app.layout.viewlets.common.PersonalBarViewlet
- Manager:
- plone.portaltop (name)
plone.app.layout.viewlets.interfaces.IPortalTop (interface)
Sample files & directives
Put a version of personal_bar.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import PersonalBarViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](PersonalBarViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portaltop" skinname="[your skin name]">
<viewlet name="plone.personal_bar" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portaltop" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'7. Path Bar (Portal Breadcrumbs)
Provides the breadcrumb trail.
- Snippet:
<div id="portal-breadcrumbs">...</div>- Note:
- In the Sunburst theme, the breadcrumbs have been styled not to appear until the third level down. Customize the CSS to change this behaviour.
- CSS:
- public.css
- Name:
- plone.path_bar
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.path_bar
- Further information:
- http://plone.org/documentation/kb/where-is-what/the-path-bar
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- path_bar.pt
- Class Name:
- plone.app.layout.viewlets.common.PathBarViewlet
- Manager:
- plone.portaltop (name)
plone.app.layout.viewlets.interfaces.IPortalTop (interface)
Sample files & directives
Put a version of path_bar.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import PathBarViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](PathBarViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portaltop" skinname="[your skin name]">
<viewlet name="plone.path_bar" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portaltop" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'8. Content Views
The View, Edit, and other tabs in the editing interface.
- Snippet:
<ul class="contentViews"> ⦠</ul>- CSS:
- authoring.css
- Name:
- plone.contentviews
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.contentviews
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- contentviews.pt
- Class Name:
- none
- Manager:
- plone.contentviews (name)
plone.app.layout.viewlets.interfaces.IContentViews (interface)
Sample files & directives
Put a version of contentviews.pt in [your theme package]/browser/templates)
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IContentViews"
template="templates/[your template name].pt"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.contentviews" skinname="[your skin name]">
<viewlet name="plone.contentviews" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.contentviews" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
9. Content Actions
Provides the display drop-down and other actions in editing mode. There are three content actions components, registered for different view interfaces (as different sets of actions are required in different contexts).
- Name:
- plone.contentactions
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.contentactions
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- contentactions_blank.pt & contentactions.pt
- Class Name:
- plone.app.layout.viewlets.common.ContentActionsViewlet
- Manager:
- plone.contentviews (name)
plone.app.layout.viewlets.interfaces.IContentViews (interface)
Sample files & directives
Put a version of contentactions_blank.pt & contentactions.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import ContentActionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](ContentActionsViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IContentViews"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.contentviews" skinname="[your skin name]">
<viewlet name="plone.contentactions" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.contentviews" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
10. Table of Contents
Provides a set of bookmarks for the current page.
- Notes:
- Turned on per content item through Edit > Settings.
- Snippet:
<dl id="document-toc" class="portlet toc" style="display: none"> ⦠</dl>- CSS:
- portlets.css
- Name:
- plone.tableofcontents
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.tableofcontents
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- toc.pt
- Class Name:
- plone.app.layout.viewlets.common.TableOfContentsViewlet
- Manager:
- plone.abovecontentbody (name)
plone.app.layout.viewlets.interfaces.IAboveContentBody (interface)
Sample files & directives
Put a version of toc.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.common import TableOfContentsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](TableOfContentsViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IAboveContentBody"
class=".[your module].[your class name]"
for="Products.ATContentTypes.interface.IATDocument"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.abovecontentbody" skinname="[your skin name]">
<viewlet name="plone.tableofcontents" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.abovecontentbody" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
11. Presentation
Provides a link to a presentation view of a document.
- Notes:
- Only available for a document. The link to a presentation view can be turned on or off
- through the web: on an individual item (Edit > Settings > Presentation )
or Site Setup > Types (site-wide per type) - in your product: profiles/default/types (per type)
- through the web: on an individual item (Edit > Settings > Presentation )
- Snippet:
<p id="link-presentation">...</p>- CSS:
- none
- Name:
- plone.presentation
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.presentation
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/presentation/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/presentation/
- Template Name:
- none
- Class Name:
- plone.app.presentation.PresentationViewlet
- Manager:
- plone.abovecontentbody (name)
plone.app.layout.viewlets.interfaces.IAboveContentBody (interface)
Sample files & directives
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.presentation import PresentationViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](PresentationViewlet):
[your code here]
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IAboveContentBody"
class=".[your module].[your class name]"
for="Products.ATContentTypes.interface.IATDocument"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.abovecontentbody" skinname="[your skin name]">
<viewlet name="plone.presentation" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.abovecontentbody" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
12. Keywords
The categories (a.k.a. keywords / tags / labels) that have been assigned to the item.
- Notes:
- This will only appear if some categories have been assigned using Edit > Categories.
- Snippet:
<div id="category" class="documentByLine">â¦</div>- CSS:
- public.css
- Name:
- plone.belowcontenttitle.keywords
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.belowcontenttitle.keywords
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- keywords.pt
- Class Name:
- none
- Manager:
- plone.belowcontenttitle (name)
plone.app.layout.viewlets.interfaces.IBelowContentTitle (interface)
Sample files & directives
Put a version of keywords.pt in [your theme package]/browser/templates)
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentTitle"
template="templates/[your template name].pt"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontenttitle" skinname="[your skin name]">
<viewlet name="plone.belowcontenttitle.keywords" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontenttitle" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
13. Byline
The 'about' information (who created a content item and when it was modified).
- Notes:
- You can turn off the Byline for anonymous viewers
- through the web: Site Setup > Security
- In your product: profiles/default/propertiestool.xml
- Snippet:
<div id="plone-document-byline" class="documentByLine">... </div>- CSS:
- public.css
- Name:
- plone.belowcontenttitle.documentbyline
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.belowcontenttitle.documentbyline
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- document_byline.pt
- Class Name:
- plone.app.layout.viewlets.content.DocumentBylineViewlet
- Manager:
- plone.belowcontenttitle (name)
plone.app.layout.viewlets.interfaces.IBelowContentTitle (interface)
Sample files & directives
Put a version of document_byline.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.content import DocumentBylineViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](DocumentBylineViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentTitle"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontenttitle" skinname="[your skin name]">
<viewlet name="plone.belowcontenttitle.documentbyline" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontenttitle" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
14. Lock
Indicates that the content item is locked for editing.
- Snippet:
<div id="plone-lock-status" />- CSS:
- public.css
- Name:
- plone.lockinfo
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.lockinfo
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/locking/browser/
- [your egg location]/plone.locking-[version].egg/plone/locking/browser/
- Template Name:
- info.pt
- Class Name:
- plone.locking.browser.info.LockInfoViewlet
- Manager:
- plone.abovecontent (name)
plone.app.layout.viewlets.interfaces.IAboveContent (interface)
Sample files & directives
Put a version of info.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.locking.browser.info import LockInfoViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](LockInfoViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IAboveContent"
class=".[your module].[your class name]"
for="plone.locking.interfaces.ITTWLockable"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.abovecontent" skinname="[your skin name]">
<viewlet name="plone.lockinfo" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.abovecontent" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
15. Workflow History
Summarizes workflow transitions on the current content item.
- Snippet:
<div class="reviewHistory" id="review-history">â¦</div>- CSS:
- authoring.css
- Name:
- plone.belowcontentbody.workflowhistory
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.belowcontentbody.workflowhistory
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- review_history.pt
- Class Name:
- plone.app.layout.viewlets.content.WorkflowHistoryViewlet
- Manager:
- plone.belowcontentbody (name)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interface)
Sample files & directives
Put a version of review_history.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.content import WorkflowHistoryViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](WorkflowHistoryViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontentbody" skinname="[your skin name]">
<viewlet name="plone.belowcontentbody.workflowhistory" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontentbody" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
16. Content History
Summarizes workflow transitions and version history on the current content item (this replaces the workflow viewlet in Plone 3.3).
- Snippet:
<div class="contentHistory" id="content-history">â¦</div>- CSS:
- authoring.css
- Name:
- plone.belowcontentbody.contenthistory
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.belowcontentbody.contenthistory
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- content_history.pt
- Class Name:
- plone.app.layout.viewlets.content.ContentHistoryViewlet
- Manager:
- plone.belowcontentbody (name)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interface)
Sample files & directives
Put a version of review_history.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.content import ContentHistoryViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](ContentHistoryViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontentbody" skinname="[your skin name]">
<viewlet name="plone.belowcontentbody.contenthistory" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontentbody" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
17. Document Actions
The Print and RSS links.
- Notes:
- You can reorder, add, or remove individual document actions
- through the web: Site Setup >Zope Management Interface > portal_actions > document_actions
- In your product: profiles/default/actions.xml
- Snippet:
<div class="documentActions"> ⦠</div>- CSS:
- public.css
- Name:
- plone.abovecontenttitle.documentactions
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.abovecontenttitle.documentactions
- Further information:
- http://plone.org/documentation/kb/where-is-what/document-actions
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- document_actions.pt
- Class Name:
- plone.app.layout.viewlets.content.DocumentActionsViewlet
- Manager:
- plone.belowcontentbody (name)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interface)
Sample files & directives
Put a version of document_actions.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.content import DocumentActionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](DocumentActionsViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontentbody" skinname="[your skin name]">
<viewlet name="plone.abovecontenttitle.documentactions" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontentbody" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'18. Related Items
Items related to the content
- Notes:
- This viewlet displays links to additional content items selected by the editor under the categorization tab.
- Snippet:
<div class="relatedItems"> ⦠</div>- CSS:
- public.css
- Name:
- plone.belowcontentbody.relateditems
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.belowcontentbody.relateditems
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- document_relateditems.pt
- Class Name:
- plone.app.layout.viewlets.content.ContentRelatedItems
- Manager:
- plone.belowcontentbody (name)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interface)
Sample files & directives
Put a version of document_relateditems.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.content import ContentRelatedItems
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](ContentRelatedItems):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontentbody" skinname="[your skin name]">
<viewlet name="plone.belowcontentbody.relateditems" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontentbody" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
'19. Comments
Supplies the commenting interface.
- Notes:
- Comments can be turned on or off
- through the web: on an individual item (Edit > Settings > Allow Comments )
or Site Setup > Types (site-wide per type) - in your product: profiles/default/types (per type)
- through the web: on an individual item (Edit > Settings > Allow Comments )
- Snippet:
<div class="discussion"> ⦠</div>- CSS:
- public.css
- Name:
- plone.comments
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.comments
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- comments.pt
- Class Name:
- plone.app.layout.viewlets.comments.CommentsViewlet
- Manager:
- plone.belowcontent (name)
plone.app.layout.viewlets.interfaces.IBelowContent (interface)
Sample files & directives
Put a version of comments.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.viewlets.comments import CommentsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](CommentsViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContent"
class=".[your module].[your class name]"
for="Products.CMFCore.interfaces.IContentish"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontent" skinname="[your skin name]">
<viewlet name="plone.comments" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontent" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
20. Next Previous
Provides next/previous functionality for a folder.
- Notes:
- Turn this on per folder using Edit > Settings.
- Snippet:
<div class="listingBar">â¦</div>- CSS:
- public.css
- Name:
- plone.nextprevious
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.nextprevious
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/nextprevious/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/nextprevious/
- Template Name:
- nextprevious.pt
- Class Name:
- plone.app.layout.nextprevious.view.NextPreviousViewlet
- Manager:
- plone.belowcontent (name)
plone.app.layout.viewlets.interfaces.IBelowContent (interface)
Sample files & directives
Put a version of nextprevious.pt in [your theme package]/browser/templates)
Create your own version of the class in [your theme package]/browser/[your module].py
from plone.app.layout.nextprevious.view import NextPreviousViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [your class name](NextPreviousViewlet):
render = ViewPageTemplateFile("[your template name]")
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IBelowContent"
class=".[your module].[your class name]"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.belowcontent" skinname="[your skin name]">
<viewlet name="plone.nextprevious" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.belowcontent" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
21. Footer
Contains copyright information.
- Snippet:
<div id="portal-footer">â¦</div>- CSS:
- public.css
- Name:
- plone.footer
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.footer
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- footer.pt
- Class Name:
- none
- Manager:
- plone.portalfooter (name)
plone.app.layout.viewlets.interfaces.IPortalFooter (interface)
Sample files & directives
Put a version of footer.pt in [your theme package]/browser/templates)
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
template="templates/[your template name].pt"
for="*"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portalfooter" skinname="[your skin name]">
<viewlet name="plone.footer" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portalfooter" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>
22. Colophon
Contains links to plone.org etc.
- Snippet:
<div id="portal-colophon">â¦</div>- CSS:
- public.css
- Name:
- plone.colophon
- Type:
- viewlet
- Use:
- Site Setup > Zope Management Interface > portal_view_customizations
- Go to:
- plone.colophon
Customizing through the Zope Management Interface
Customizing in your own product
The following details will help you locate the files that you will need to copy into your own product. They will also help you to provide the correct information to create your own zcml directives, Python classes, and interfaces.See viewlet for more information.
- Located in:
-
- [your egg location]/plone/app/layout/viewlets/
- [your egg location]/plone.app.layout-[version].egg/plone/app/layout/viewlets/
- Template Name:
- colophon.pt
- Class Name:
- none
- Manager:
- plone.portalfooter (name)
plone.app.layout.viewlets.interfaces.IPortalFooter (interface)
Sample files & directives
Put a version of colophon.pt in [your theme package]/browser/templates)
Wire up your viewlet in [your theme package]/browser/configure.zcml
<browser:viewlet
name="[your namespace].[your viewlet name]"
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
template="templates/[your template name].pt"
for="*"
layer=".interfaces.[your theme specific interface]"
permission="zope2.View"
/>
In [your theme package]/profiles/default/viewlets.xml
Hide the original viewlet (if you wish)
<object>
<hidden manager="plone.portalfooter" skinname="[your skin name]">
<viewlet name="plone.colophon" />
</hidden>
Insert your new viewlet in a viewlet manager
<order manager="plone.portalfooter" skinname="[your skin name]"
based-on="Plone Default">
<viewlet name="[your namespace].[your viewlet name]"
insert-before="*" />
</order>
</object>

Author: