Knowledge Base
2 Level Navigation In Plone 3
This How To shows how to modify a Plone 3 theme product so that the tabs would have 2 levels of navigation.
Customizing Navigation Icons
How-to customize the icons used for items in the navigation portlet in Plone 2.1 and 2.0
A visual reference of Plone privileges management
Construction of a map, step by step, that shows each of the Plone content security mechanisms and ultimately how they relate to each other.
About Profiling Books in the Documentation Section
Best practices for determining which books should be highlighted in the documentation section of plone.org.
Authenticating with Active Directory
How to make Plone authenticate against Active Directory. (document needs updating because Plone 2.5.x uses PlonePAS instead of GRUF)
ActiveDirectory with read and write functionality
Plone supports ActiveDirectory authentication out of the box, but not writing to it. This is a complete example with screenshots and monkey patches to accomplish that. It shows how to completely move storage of users, groups and roles to ActiveDirectory.
Make a product install a folder structure in the site
This documentation has moved to http://developer.plone.org/content/creating.html#creating-content-using-generic-setup
Adding Charts To Your Custom Content Type
Step-by-step instructions for adding Python-generated charts to your custom Archetype. I describe a general method that allows you to use any Python graphing libraries that output images (png, gif, jpg, etc.). I use PyChart in this specific example.
Add Content from Python
If you're writing Python code to customize your site, you may need to create content objects programmatically. It's not hard.
How to add a File System Z SQL Method
How to move Z SQL Methods out of the ZODB and onto the file system.
Add the body text to your rss feed
Explains how to edit your rss_template to include the body of each rss feed item. (ie, the body of the news item in addition to the title/description).
Add indexing attributes to arbitrary content types
How to invoke the shadowy and mysterious ExtensibleIndexableObjectWrapper to do something totally useless.
Adding Memberdata Properties
Adding new properties to members and having them appear on the membership preference forms.
Adding new roles to the Sharing Page
Explains how to add other roles to the set of managed roles at Plone 3 sharing tab.
Using Add-ons
There are many third-party add-on Products for Plone that can give you additional functionality, often at the click of a button. However, not all Products are created equal. Knowing how to install, test, evaluate and extend them is important.
Add OpenX advertising banners in a portlet
It is easy to add advertising banners produced by OpenX into a TAL Portlet. Here's how.
Adding a "Sharing" action-tab to your product/type
Two methods for adding a "Sharing" action-tab to your Plone product or item type.
Add supplementary views to custom content types
This howto explains how to add supplementary views to custom content types. These supplementary views are selected specifically for each folder TTW. One example is standard Plone folders, where you can choose between e.g. table view and standard view. Sometimes, you want to do this in your custom content type as well.
Add an Icon or Text next to hyperlinks similar to the globe icon on external hyperlinks
This how-to describes a simple method to automatically add an icon or text next to hyperlinks (similar to the external link globe icon feature)
Adding a custom permission to a product
Using rolemap.xml to create new Roles is easy, you can add predefined permissions to your new roles. But what if you want to define a new permission for your product? Use setDefaultRoles.
Adding a del.icio.us link/icon to your Document Actions
This howto will explain how to add an icon to your Document Actions, so that users can add your page to their del.icio.us bookmarks.
Adding bespoke Google maps to Plone
Whilst there are several products available for adding Google maps to Plone, all have their limitations. Sometimes all you want to do is to add your own custom Google JavaScript to the head of a specific page (just as you would when writing a pure HTML page) to get the exact functionality you want.
Adding configuration settings using Zope 3 schemas and formlib
This how-to explains how to add a configlet to Plone's control panel and letting the Zope 3 framework do the work for you.
Adding Drag & Drop re-ordering to older Plone instances
You are maintaining some older Plone instances that you don't want to update, but want that fancy drag and drop folder re-ordering of Plone 2.5? Then this is for you.
Adding Memberdata properties (as a select list)
Usercase: I had a site where everybody that joined should get a t-shirt. The T-shirts sizes might change later so be nice if it was OK to do this TTW
Adding new fields to Smart Folders search
If you are creating new content types you might want to add support for Plone's advanced search capabilities. This article describes how to achieve it.
Adjusting Kupu edit area size
Kupu (Visual Editor) edit area size might be too big for pages containing several short rich text fields. This how to explains how to adjust the size per field.
Advanced Image fallback and PiL
A recipe of how to write a complex set of fall back logic for a scaled image
Advanced XDV theming
Tutorial showing how to convert real-life static theme into a Plone theme using collective.xdv
Allowing Anonymous Users to Add Content
I had the need for Anonymous Plone users to add, edit, and save a specific content type in a specific location (folder) and couldn't find any resources, thus this quick HowTo.
Anonymous adding of unpublished content
This howto is about customizing an archetype content to let anonymous users add content, but not be able to view what has already been added.
Building Custom Content Types with ArgoUML and ArchGenXML and Permitting Anonymous Content Submission
And howto on creating a custom content type with ArgoUML and ArchGenXML, and allowing anonymous submission of that content.
Setting up Plone behind Apache with SSL
How to set up Plone on a secure server, with Apache serving over SSL.
Applying a custom view to a specific folder
How to create a one-off view for a particular folder in your site.
Archetypes using mysql and postgresql
A short tutorial about how to make an archetype that stores data in and reads data from a mysql or a postgresql table. It works on plone-2.5.2 on zope-2.9.5.
ArchGenXML 1.x- Getting started
ArchGenXML is a code-generator for CMF/Plone applications (Products) based on the Archetypes framework. It parses UML models in XMI-Format (.xmi, .zargo, .zuml), created with applications such as ArgoUML, Poseidon or ObjectDomain. This tutorial will help you get started developing applications with the aid of ArchGenXML. Please note ArchGenXML 1.x is not supported any longer and should be used only to maintain existing projects. If you're starting a new project, use ArchGenXML 2 instead.
Asking for help: guidelines and examples
If you need help with an error or problem: before asking the question, please take a few minutes to read the guidelines below. It is important to know how to state questions, because once you learn it, answers will come much faster.
Authenticating With Active Directory
How to make Plone authenticate against Active Directory Using PlonePAS
Authentication of Plone 2.5 (Zope 2.9) against a Windows 2003 Active Directory
Describes how to setup Plone 2.5 running on Zope 2.5 (using Python 4.0)to authenticate against Active Directory on Windows 2003
Authentication of Plone 2.5 (Zope 2.9) against a Windows 2003 Active Directory
Description of setting up Plone to authenticate against Windows
Backup and recover Data.fs in linux
bash scripts to backup linux and use repozo.py for backing up Data.fs Also includes a script to recover Data.fs to a specific point in time
Batch-adding Users to Plone using CSV (Excel) files
How to import/create new users from CSV- a.k.a. Excel-files
Benefit NOW from using GenericSetup and Zope 3 technologies
Impress your colleagues by using GenericSetup and Zope 3 views efficiently and with minimal effort! This tutorial shows you how to add a new view, how to use it, how to add a new content type and how to hook it all up.
Best Practices for Plone development
Based on the talk given by Joel Burton at the Plone Conference in Vienna, this Tutorial discusses some of the best practices for Plone development. If you are doing site development with Plone and want to keep your sanity, this is a must-read. Requires some familiarity with Zope and Plone.
Build a custom search form with YAFOWIL
YAFOWIL is framework independent form library written in Python. This tutorial shows how to create a simple installable search form.
Building communal reference lists
Provide a fast facility for obtaining a union of lists referring to a particular item, using a keyword index in Plone's portal catalog
Setting up Buildout Using the Windows Installer for Plone
All the steps necessary to set up a buildout environment on Windows system using the Plone Windows installer as a base.
Cache Content- Anonymous only
How to change Plone's default cache settings so you can cache pages on your site.(Anonymous only)
Catalog anything in Zope/Plone
This how-to shows how to catalog non-object data in the catalog, and search for them. Useful when you've a list of items you wish to use like an sql table.
Change Available Types for Events
How to change the types of events (e.g. "meeting" or "appointment") available to the standard Plone Event type.
Change the look and feel of a folder and its subfolders
If you want a subfolder to have a different appearance than the rest of your site, you can add a simple page template and a stylesheet to a folder that affects it and all of its subfolders.
Changing Plone's folder listing sort order
There isn't an obvious way to change the order in which items are sorted in a folder. The smart thing to do is use a Collection. An alternative is to override the the template or the getFolderContents script.
Change state recursively in a workflow transition
When transitioning a folderish object, transition all children objects automatically.
Change the Logo in Plone 4
How to substitute the standard Plone logo with your own logo - a through-the-web approach.
Change the logo on for the front page only
A brief how-to for changing the logo area for the front page only
Changing navigation icons
This tutorial will show how you can change the icons of the navigation bar for each folder.
Changing language negotiation strategy
Language negotiation strategy determines the language of the site when the visitor comes in for the first time. This document tells how to change language negotiation strategy for a Plone site.
Choose the right paster template
Review the default output from "paster create" to determine which template you need.
Clean up link spam on your site
Spammers have targeted Plone sites recently by posting content that will redirect you to a different site. Here's how to protect your site — and how to clean up if you have already been hit by this.
Close site so people can't add themselves as users
How to close the site so that users can't sign themselves up.
Collaboration: Using the Sharing Tab
This tutorial explains many common use cases for collaborating within Plone. You will find examples of the many ways you can control content editing and adding by users.
Restricting access to folders with "shared" users
How to set access to a particular folder for a "collective" user - that is, viewing published content in this folder requires logging in under a shared username/password.
Configure a static portlet to show the weather
This will show how to create a weather portlet using Plone 3's built-in static portlet.
Add Configlets for own Product's settings
If you write your own product with "configlets" to configure product-specific settings, here's how to install these configlets so that they appear in the Plone control panel.
Content Creation with Kupu and Other WYSIWYG Editors
This tutorial introduces the Kupu interface and explains how to insert images, create FAQ pages, and use Kupu's ResolveUID feature. It was written by Quintagroup content manager for end-users and is compatible with Kupu 1.4.x.
Content rules
This document briefly introduces you to content rules. Content rules allows you to associate automatic actions to site editing events.
Controlling portlets
Shows how to control which portlets (the boxes on the left and right hand side) show up where.
Converting single user Plone site to multiuser review based CMS site
One might want to convert an existing single user Plone site to real CMS where people can submit content and it has to be reviewed. This how to gives guidance to achieve the goal.
Cookies: Making them last longer than a session
This will enable users to remain logged in beyond one browser session.
Coping with a Live Spinning Zope
Most people who have been working with Zope and Plone for some time have learned, on one day or another, what it means for Zope to "spin". It incessantly uses 100% cpu, or very close, and, though it accepts HTTP connections, it never responds, requiring a restart. If your live Zope is spinning, you are most assuredly not having a good day, but there are some measures you can take to ease your pain.
OCR in Plone using Tesseract OCR
This tutorial will show you how to add the ability to OCR documents in Plone using Tesseract OCR. An "OCR Document" action will be added to appropriate files and when the user chooses this action a text file with the OCR results will be added to the container.
Slide Sorter
Create a view for sorting images (and potentially other content) which are displayed in a grid layout, where by each item occupies a single cell rather than a whole row. This uses a modified version of the javascript that powers the drag and drop functionality of folder_contents.
Create a different look and feel for different sections of your web site
Learn how to create a different look and feel for your site, using only CSS sleight-of-hand.
Create a main navigation link which redirects to an arbitrary location AND maintain control of the portal_tab order
You want to have a link in your main navigation that redirects to a specific url and you want to control the order of how the tabs are displayed.
Create a New Project in the Plone Collective
Guides a developer through the steps involved in creating a new project in the Plone collective.
Create a product to import existing photos as external resources
Import existing photo album as external resources by creating a ExPhotoAlbum product
Create and Use an External Method
Zope External Methods allow you to write and register python scripts that can be called through-the-web to manipulate your Zope/Plone instance. The main difference is that these can do things with a much higher privilege level since they are located on the file system, not in the web interface.
Creating a Customization Policy
Customization Policies are used to collect all the setup for a deployable site in a central location.
Create different restricted areas in the Control Panel
Here we describe how to programatically protect different elements of the Plone Control Panel with different permissions, so you can grant e.g. access to the Calendar configlet but not to the Add-ons one.
Creating links from page templates to translated content
You can get the user's preferred language through context/portal_languages/getPreferredLanguage. Use an object's 'getTranslation' method to get the translated object. You can then use this object's URL and title when linking to it.
