Plone theming for mortals: A simple example to get you started quickly with your own public skin

Project description

collective.skinny
=================

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
modify content.

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:

- http://danielnouri.org/blog/devel/zope/plone-3-theming-shanes-theme.html
- 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:

.. image:: http://danielnouri.org/media/acme-website.png

Feedback
--------

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

Thanks
======

The following people helped with support, code, patches, etc:

- Martin Aspeli
- Pelle Krogholt
- Shane Graber
- Sylvain Viollon

Changelog
=========

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
public skin.

- 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

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
templates/content/image.pt.

0.4 - 2009-04-16
----------------

- Don't leak Plone views like folder_listing anymore in the public
skin.

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

Uploaded source