Skip to main content

dynamic theme for Plone

Project description

Introduction :

Change the skin of your plone site, change the skin of any content based on ATFolder on the site, using a simple form.

Just Upload images with the same name in the skin using a tgz or a zip, to overload standard plone skin images referenced in css.

You can add a css for each skin.

You can choose to overload, all parts, or just some parts, of the plone standard css.

You can change Logo, Footer or Colophon viewlets using phantasy skin edit form.

You can choose to display or not plone standard dynamic viewlets (searchbox, site actions …)

The viewlets configuration is taken from the first skin associated with a parent object.

The css are taken from all skins associated with all parents.

The static viewlets edition could be more easy for users if Products.FCKeditor is installed in Plone (the FCKwidget is used).

You can add a favicon for each skin, uploading a favicon.ico file.

Dependencies :

  • Plone 4.0.x, Plone 4.1.x.

  • archetypes.schemaextender (used to add a referencefield to standard Plone Folders)

  • Products.SmartColorWidget

All dependencies are installed when using buildout or easy_install.

Installation :

read docs/INSTALL.txt inside product to install it in your Zope instance

Then in your Plone Site, use portal_quick_installer to install it in Plone, this will also install Products.SmartColorWidget.


  • How to make my own phantasy config and css ?

    Just look at the aws.minisite package code, it’s a complete example which will show you how to make a new skin schema and how to override phantasy css. In aws.minisite you will also find a way to use collective.phantasy with a different strategy (the schema extender field is no more used, instead, when creating a new “Mini Site” you are invited to choose a skin, and this skin is copied/pasted inside the Mini Site. Then the Mini Site owner is able to change the mini site skin by himself.)


  • Replace Archetypes Schema with a zope3 schema for skin data (no planning for now)


2.6 (2015-01-19)

  • Override .png images instead of .gif ones Content types use .png icons instead of .gif (Plone 4.3 compatibility).

2.5 (2014-01-26)

  • Do not use background-image for ‘required’ field anymore. [thomasdesvenain]

2.4 (2014-01-15)

  • Protect css view to avoid site errors on private websites. [thomasdesvenain]

  • Fixed tests. [thomasdesvenain]

  • Added buildout and fix test packages dependencies. [laulaz]

  • Plone 4.3 compatibility. [thomasdesvenain]

  • Replace ‘p’ elements by ‘span’ in logo because logo is in an ‘a’ element. [thomasdesvenain]

  • Collapsible border is no longer managed by phantasy. [thomasdesvenain]

  • Fixed contenttype-image icons. [thomasdesvenain]

2.3 (2012-04-11)

  • Fixed event details borders styles. [thomasdesvenain]

  • Fix: do not call header background image in css if it hasn’t been set. [thomasdesvenain]

  • Set plone.resource ruleset for PhantasySkinImage and PhantasySkinFile for caching. [vincentfretin]

  • Set default values for horizontal navigation. [thomasdesvenain]

2.2 (2011-12-02)

  • We can setup header background. [thomasdesvenain]

  • Add a field to switch calendar portlet skins overload. [thomasdesvenain]

  • Improved borders customization. [thomasdesvenain]

  • Add fields for global navigation colors (So global navigation colors can now be different than link and global background colors). [thomasdesvenain]

2.1 (2011-06-30)

  • Fixed livesearch results colors. [thomasdesvenain]

  • Set languageIndependent=True for local_phantasy_skin field. [vincentfretin]

  • We can add a custom favicon uploading favicon.ico. [thomasdesvenain]

2.0 (2011-04-28)

  • Non manager can import skinned file names in skin. [thomasdesvenain]

  • Added portlet headers color and listing headers color fields. Added personal tools background and font colors. [thomasdesvenain]

  • Added an ‘apply’ button on Phantasy Skin edit form. [thomasdesvenain]

  • Css id is automatically set when a css is added to skin. [thomasdesvenain]

  • Translation fixes. Schemata translated. [thomasdesvenain]

  • Two profiles : profile by default and profile with example contents. [thomasdesvenain]

  • Buildout can be set so ATFolder is not skinnable. [thomasdesvenain]

  • Bugfixes.

  • Plone 4.0 and 4.1 compatible (no 3.x backward compatibility) . [thomasdesvenain]

  • removed embedded jquery [thomasdesvenain]


  • fix small IE bug in skin view template


  • Added the ability to overload some static viewlets (logo, footer, colophon) with phantasy skin edit form

  • Added the ability to hide/show dynamic viewlets with phantasy skin edit form

  • The ATFolder schema extender is now using IBrowserLayerAwareExtender, the extender will be only available if collective.phantasy is installed in Plone

  • Added ISkinnableRoot interface, used to get skin inside a folder which implements it

  • remove dependency to plone.browserlayer (included in plone 3.1)

  • referencebrowser overload to avoid errors when searching for folderish content types

  • refactoring for i18ndude utilisation

  • i18n french added (work in progress)

  • Added screen shot field for skins

  • Added tests for viewlets overrides (static and dynamic)

  • Fix links classes order

  • css links changed (icons links doesn’t exist anymore in plone 3.3+)

  • skin view simplified


  • Fixed a new security issue in cases where some sites use a specific intranet-style workflow. (thx to Kamon Ayeva)


  • fix permission for phantasy viewlet zope.Public is more appropriate : avoid Unauthorized exceptions in some cases

  • fix version to 0.8

  • synchronize version with metadata.xml

  • fix doctests when using IPython

  • fix to avoid errors with docs folder in zip package


  • avoid acquisition problems for css images when skin is created in portal_factory, in this case css_url = portal_url

  • fix css content type when uploading a tgz or zip file


  • was missing at root : fix big problem with “python sdist” when using collective.releaser 0.6.1, only “.py” files were released

  • Fix ATContentTypes AutoOrderSupport import error with last ATContentTypes version

  • check_id script overload in PhantasySkinImage content type because we want to be able to overload portal_skins images when using the classical Plone edit forms


  • Fix stupid syntax error in Catalog reequest was broken

  • Fix strange plone behavior : portal_properties.site_properties.getProperty(‘myproperty’) returns ‘n’ + property value + ‘n’ when myproperty is a string Perhaps we must do someting else ?

  • Tests were broken : a memoize decorator was missing in viewlet


  • added a safe_hasattr to test ‘getCssfile’ attribute in (avoid errors in rare situations)

  • changes ‘portal_type’ catalog request for ‘object_provides’ to get portal dynmaic skin

  • phantasy css view uses a dtml file more readable than zpt

  • phantsy css view uses ResourceRegistries CSSPacker tool

  • fix error in atphantasy schema : plone-overloads fields were invisible

  • move plone-overloads fields at bottom in atphantasy schema

  • patch form_tabbing.js to get standard behavior in edit form when tabs > 6


  • fix an error in path search term for catalog search

  • fix running doctests when config is patched by another product.


  • added all dependencies in since SmartColorWidget is now an egg.

  • added plone products dependencies in metadata.xml profile

  • removed import-steps.xml, importSteps handler added in profile.zcml


  • Initial release


  • Waiting for Deco improvements to make a really cool product

  • At this time all standard skin images are overloaded though css when these images are present in skin, excepted for portal_type icons, since generated.css is no more used in Plone. So we must patch getIcon method to get thes icons from phantasy skin if these icon exists.

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 (115.6 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page