Views
In this compendium. i describe some of the spots where things are tied - "knitted" - together in Plone. Zope and Plone extensibility often involves configuration that connects extension software into the system. This document is intended to help remember how.
the key resources for understanding current practice in both through-the-web (TTW) and filesystem control of presentation is the Creating Plone Themes tutorial. Customization For Developers goes further, describing the more recent mechanisms, extending beyond what i have so far used.
- skins customization: templates, python scripts, and properties
product element presentation is organized in terms of portal "skins", with a skin folder associated with each component being presented. skin folders contain zope page templates (ZPT), through-the-web python scripts, and files which set presentation element metadata properties.
the sources for most skin folders live in the Zope server's file system, organized with the zope products which define the components. the portal_skins tool in the root of the portal contains TTW views of those folders and their contents.
when you visit one of those files you have the option to "Customize" the file, stashing a fully TTW version of the file in (by default) the portal_skins custom folder. you can edit these customizable copies using your browser, with the customizable copy taking precedence over the filesystem based copy. you can fall back to the file-system copy simply by removing the customizable copy, or giving it a different name (a quite distinct one, so it isn't mistaken for another skin element).
skins folders can also contain css and javascript files, as part of the presentation. including them as part of resource registries instead, however, provide some discretion for optimizing and organizing their presentation in critical ways.
presentation elements for central system widgets, specifically, zope 3 views, viewlets and portlets, are handled in recent versions of plone in yet another presentation management tool, portal_view_customizations, described below.
- resource registries - css (styles) and javascript
the portal_css and portal_javascript tools provide control over deployment of css and javascript resources in your site. products register their css and javascript files with the respective registries.
these tools offer options to specify load ordering of each file with respect to their other files, and also qualify conditions on including the files according to arbitrary script expressions. these options enable reducing unnecessary transmission of these heavily layered resources when appropriate.
these tools also offer options (by default, enabled) to cache, compress, and consolidate the resources that are transmitted, further economizing the bandwidth. these streamlining measures can interfere with debugging during development of the resources, and can be disabled for such occasions.
the tools also enable TTW registration of new resources, useful during development of new products or when adding more ad hoc provisions specific to your site.
- view customizations - zope 3 views, portlets, and viewlets
the portal_view_customizations tool presents the connections between system zope 3 elements (including portlets and viewlets) and their presentation elements. like the skins tool, it offers the option to customize the presentation elements for your specific site. the customizations arrangement is handled slightly differently, via the same link as the file-system versions.
to remove a TTW view customization, you need to go to the contents view of the portal_view_customizations tool and remove the template with the name of the item that's been customized.
Extracting TTW Customizations for Use in A Filesystem Product
use the portal_setup tool to export your TTW customizations for use in filesystem-based products. this enables a graceful progression between expedient exploration of immediate, TTW changes to institution of tested changes as part of packaged code.
Preliminary Notes re Product Development
- Arch Gen XML? 2 - Developers Manual
- Add-on Product Developer Manual