(ナビゲーションツリー)

Description

How navigation trees are generate in Plone and how to generate custom navigation trees.

はじめに

Plone exposes methods to build navigation trees.

  • from Products.CMFPlone.browser.navtree import NavtreeStrategyBase
  • buildFolderTree

These are internally used by navigation portlet and sitemap.

Creating a custom navigation tree

See Products.PloneHelpCenter for full code.

The following example builds Table of Contents for Reference Manual content type:

class Strategy(NavtreeStrategyBase):

    rootPath = '/'.join(root.getPhysicalPath())
    showAllParents = False

strategy = Strategy()
query=  {'path'        : '/'.join(root.getPhysicalPath()),
         'object_provides' : 'Products.PloneHelpCenter.interfaces.IHelpCenterMultiPage',
         'sort_on'     : 'getObjPositionInParent'}

toc = buildFolderTree(self, current, query, strategy)['children']

Excluding items in the navigation tree

Your navigation tree strategy must define method nodeFilter() which can check for portal_catalog metadata column exclude_from_nav.

Example (from Products.CMFPlone.broser.navtree):

class SitemapNavtreeStrategy(NavtreeStrategyBase):

        def nodeFilter(self, node):
            item = node['item']
            if getattr(item, 'exclude_from_nav', False):
                return False
            else:
                return True

目次

前のトピックへ

(Portal Transforms の設定を Python で変更する)

次のトピックへ

(検索エンジン最適化 (SEO))

このページ