Skip to main content

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
community sites where people other than your site editors log in and
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
.. _Plone Add-on Product developers: http://plone.org/support/forums/addons

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
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
``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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

collective.skinny-0.6.tar.gz (23.1 kB view details)

Uploaded Source

File details

Details for the file collective.skinny-0.6.tar.gz.

File metadata

File hashes

Hashes for collective.skinny-0.6.tar.gz
Algorithm Hash digest
SHA256 3ef56bdf46258177bc1b299797b919cb48cf279639a842549a76146c3662eee0
MD5 c267231115bba7fac9089cf3e08164a7
BLAKE2b-256 81f62ae71b2918b38cb409cd4f9bc2092247a3151c83e50fd35be0c0c82e01f8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page