Have different navigation and in-page text title in Plone
Python Shell CSS
Latest commit 8f92638 Jul 25, 2014 @djowett djowett Back to development: 0.4
Failed to load latest commit information.
docs Back to development: 0.4 Jul 25, 2014
visualtitle The ‘static’ directory is no longer automatically grokked and registe… Jul 17, 2014
MANIFEST.in Add MANIFEST.in Jul 23, 2014
setup.py Back to development: 0.4 Jul 25, 2014
validation-files.yaml Initial commit Jun 25, 2012
validation-options.yaml Conform to pylint policy Jun 25, 2012


Visual Title


This add-on separates navigation title and visual title fields in Plone. This serves the needs of marketing message where

  • The author wants long, marketing pitch tuned, title for the page
  • For the navigation tree, shorter, informative title is preferred

The add-on is also useful for languages preferring long words, like German and Finnish, where the actual title does not fit well into the navigation tree and a shortened title may be preferred.


Plone 4+


Add visualtitle in buildout.cfg:


eggs =

Install the add-on using the add-on installer in Site Setup.


For Plone 4.1 or lower: Add Dexterity extends = line in buildout.cfg


The add-on currently supports Archetypes based content.

When the add-on is activated you see title and visual title fields on Archetypes edit pages on all Archetypes content pages.


Dexterity support is planned, but looking for the sponsor.


The page template must use Plone 4+ content-core slots or generic_title_view macro to render the page title.

Correct example 1:

<html xmlns="http://www.w3.org/1999/xhtml"

    <metal:block fill-slot="content-core">
        .. page payload goes here ...

Correct example 2:

<h1 metal:use-macro="context/kss_generic_macros/macros/generic_title_view">
     Generic KSS Title. Is rendered with class="documentFirstHeading".

If you do like this for your own content types the visual title magic won't take a place:

<h1 class="documentFirstHeading">My title</h1>

You can also access the visual title directly (not recommended):

<h1 tal:content="python:context.restrictedTraverse('visualtitle')()" class="documentFirstHeading" />


This add-on overrides kss_generic_macros template for Plone 4+, adds new fields using archetypes.schemaextender and a helper view which you can call from the code to get the visual title.


Yep, it does.

Source and issue tracking

Policy and source coding conventions

The code follows Pylint policies defined in VVV policy file.

The code is PEP-8 compatible for the parts where PEP-8 does not get confused.


Mikko Ohtamaa