Beyond the Books: Learning Plone For Yourself
Sure, Plone has a steep learning curve, but remember what steep really means... the steeper the learning curve, the faster you can get up to a productive level. Well, as long as you don't slide back down the slope too much. These suggestions are based on many tips gathered from the listserv and personal experience, both with Plone and with many other avenues of learning. I hope they help give you a better toehold on the slope, and prevent at least some of those nasty slides down.
Here's the short list...
- Read the source. -- OK, everyone says that, but here we'll give you some tips on how to get started reading Plone source, and the source of third-party Plone products.
- Google like a pro. -- We'll give you some examples of Google searches and how they can get you to the answers you need fast.
- Get some Plone-Fu. -- You, too, will be answering questions on plone-users listserv before you know it.
. . .
this is work in progress, old emails, notes follow...
- I'm glad my suggestion worked! Much Ploning progress was gained when I realized that portal_membership.getAuthenticatedMember() was the ingress to the user member object itself, from nearly all scripts and templates, and then you can do various things with it, like getRoles() to return a list of roles that the user has, etc.
- Even for non-newbies: An important get-up-to-Plone-speed task: take a few minutes to go in your ZMI to portal_skins/plone_templates/global_defines and read through all those nifty defined variables. Then you'll see that in templates, you can use "mtool" as a shortcut for the portal_membership tool, and "member" is the same as what I've defined above [portal_membership.getAuthenticatedMember()].
- Google loves us. The beauty of reading through the "global_defines" template is that it shows you many of the common API calls right there. Once you realize what call gets you close (like the member defininition), then you extract the key term "portal_membership.getAuthenticatedMember()" and plug that into Google and look for code snippets that will help. I didn't go back into deep API land to double check the answer to your question before I sent it; I used Google.
---
One reason it is steep is because templates are conceptually different. You're coding for changes in the skin of the site instead of for individual pages. It through me completely at first (I'm a hand-coder too), and in fact it caused me to avoid ZPT for a while (I liked DTML, and still do in fact). But now it's not so bad at all.
A second reason it is steep is that a lot of people come to it from a PHP background, and that hurts. PHP pages typically have lots of inline script snippets to do things from within the content... and that is diametrically opposed to what you do in Plone page templates. There are lots of FAQs from newbies about how to do simple things like they used to do in PHP... and the answer is usually you can't (and shouldn't), and please learn to think differently.
Getting Plone-fu is fun and worth it. Get the books, read and actually do the things they do... your fingers and head will benefit from the typing and Plone-fu will grow within you as you do. Do your own experiments too, of course. But actually performing examples from the books and looking carefully at other people's code examples (like the Products in the Collective on plone.org) will feed your inner Plone child.
I've found that sliding back down the Plone learning curve comes from thinking non-Plonish thoughts and then trying to pursue them. That might make it sound like Plone limits your creativity... but nothing is further from the truth. Thinking in Plone gives me new filters for looking at the world around me, and imagining the possibilities. I'm looking forward to Plone 2.1 now, and new vistas. The plone-users listserv is terrifically helpful, and the folks hanging around on the IRC channels (like #plone) are great too.

Author: