Plone theming for mortals: A simple example to get you started quickly with your own public skin
Project description
collective.skinny
An example implementation of a separate, public-facing skin as discussed at:
http://danielnouri.org/blog/devel/zope/plone-3-theming-for-mortals-part2.html
http://danielnouri.org/blog/devel/zope/plone-3-theming-for-mortals.html
http://weblion.psu.edu/news/viewlets-barriers-for-plone-newbies
http://danielnouri.org/blog/devel/zope/plone-3-theming-for-you.html
Usage
Look at the package’s configure.zcml file for instructions on how to activate the public skin to actually see it.
This package is both an example and a library. The easiest way to start using it is to just copy the package and modify.
The better way is to use it as a library and extend it with your own package. When doing so, you’ll probably want to start out by subclassing and overriding through ZCML the main view, which lives in main.Main. Look at the configure.zcml file for pointers.
To get started, look at the templates/ directory. The main.pt template is where everything is wired together. You can render other templates in the same directory by saying view/render_spam, which will render the spam.pt template.
Writing views for content objects works similarly. Look at templates/content/document.pt to see how this can work. This template is found and used because it corresponds to the portal_type of the content object you’re displaying. Thus, you can make your own view for Smart Folders by putting a topic.pt template into the same directory, to give an example. If no content view is found, we’ll try and display Plone’s default view for you.
All of Plone’s views such as @@plone_context_state and friends are available as usual in templates. In addition, there’s a handy shortcut for looking up tools: Using view/portal_spam will return the portal_spam tool from your Plone site. (Try view/portal_url for a working example ;-).
Screenshot
The example in this package looks something like this:
Feedback
I’d like to make this package work as easy as possible for you. Let me know if you have any comments or questions by either using the comments on this blog post, or by dropping an e-mail to daniel.nouri <at> gmail.com.
Changelog
0.3 - 2009-01-26
No longer require python: statements for rendering parts; use view/render_$part.
Make portal tools available through view/portal_url and the like.
Add a render_viewlet convenience function to base.py that allows the reuse of Plone’s viewlets in the public skin. Look at main.MyNavigation for a usage example.
0.2 - 2009-01-22
Instead of displaying the login form when an Unauthorized error is raised, display a 404 page in the public skin. This will make pages like /edit invisible.
0.1 - 2009-01-22
Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.