Visible Page Elements

« Return to page index

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.app.i18n.locales.languageselector

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.site_actions

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.searchbox
Further information:
http://plone.org/documentation/kb/the-search-box

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

Customizing through the Zope Management Interface

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 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
Snippet:
<h5 class="hiddenStructure">Sections</h5> <ul id="portal-globalnav"> … </ul>
CSS:
public.css
Name:
plone.global_sections
Type:
viewlet

Customizing through the Zope Management Interface

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 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

Customizing through the Zope Management Interface

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 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

Customizing through the Zope Management Interface

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 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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.contentviews

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.contentactions

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.tableofcontents

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)
Snippet:
<p id="link-presentation">...</p>
CSS:
none
Name:
plone.presentation
Type:
viewlet

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.presentation

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.belowcontenttitle.keywords

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.belowcontenttitle.documentbyline

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.lockinfo

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.belowcontentbody.workflowhistory

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.belowcontentbody.contenthistory

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

Customizing through the Zope Management Interface

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 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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.belowcontentbody.relateditems

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)
Snippet:
<div class="discussion"> … </div>
CSS:
public.css
Name:
plone.comments
Type:
viewlet

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.comments

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.nextprevious

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.footer

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

Customizing through the Zope Management Interface

Use:
Site Setup > Zope Management Interface > portal_view_customizations
Go to:
plone.colophon

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>