What is Skinny?
It's a package to help you get started quickly with developing a
seperate, public-facing skin for your Plone site. It's been described
as being vastly easier than skinning Plone the conventional way. But
it also has a few drawbacks; one being that you can't use it for
community sites where people other than your site editors log in and
If you're struggling with skinning your Plone site, do try it out and
give feedback. The package comes with an example skin that shows you
how it works.
Skinny has been discussed here:
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 ;-).
The example in this package looks something like this:
.. image:: http://danielnouri.org/media/acme-website.png
We'd like to make this package work as easy as possible for you. Let
us know if you have any comments or questions by using the `Plone User
Interface & Design`_ or the `Plone Add-on Product developers`_ list.
.. _Plone User Interface & Design: http://plone.org/support/forums/ui
.. _Plone Add-on Product developers: http://plone.org/support/forums/addons
The following people helped with support, code, patches, etc:
- Martin Aspeli
- Pelle Krogholt
- Shane Graber
- Sylvain Viollon
0.6 - 2010-11-20
- In ``collective.skinny.content.Content``, add
``allow_fallback_to_plone_views`` variable to control whether or not
we should allow fallback to the default Plone views. If you set
this to False, you can control the types that'll be visible in your
- In ``collective.skinny.main.Main``, render media content inline.
- Add ``language`` method for getting current language's code to Main view.
- Add ``instance`` in the call to ViewPageTemplateFile instance. This
makes skinny incompatible with Zope 2.11 and lower, and fixes this
problem with more recent versions of Zope::
Module collective.skinny.base, line 27, in render_template
TypeError: __call__() takes at least 2 arguments (1 given)
0.5 - 2009-04-20
- Allow any non-HTML resources from Plone to be served. The previous
"no leak" fix turned out to be a bit too strict, e.g. it wouldn't
allow images from content to be served in the public skin.
- Patch site_properties to return the empty list for
``typesUseViewActionInListings`` so that images and files don't get
a ``/view`` at the end when looking at the public skin, and thus can
be skinned with Skinny. To make you own view for images, add a
0.4 - 2009-04-16
- Don't leak Plone views like ``folder_listing`` anymore in the public
0.3 - 2009-01-26
- No longer require ``python:`` statements for rendering parts; use
- Make portal tools available through ``view/portal_url`` and the
- 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
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.