RubyConf: John Long: Radiant CMS
Posted by Nick Sieger Sat, 21 Oct 2006 02:54:00 GMT
What is Radiant?
- No-fluff, lightweight CMS for small teams
- Simplicity over features
- A little more than a blogging engine
- Made for designers and programmers (techies)
- Tag-based template language
- Total control over output
- Plugin extension mechanism under development
- Content sites, not portal software
Getting Started
- Install:
gem install radiant
- Generate a new application:
mkdir demo && cd demo && radiant .
- Configure database:
cp config/database.sqlite.yml config/database.yml
Installation types
- Instance mode vs. application mode (whether or not you have Rails source present). Instance mode also makes it possible to clone and share customize Radiant applications.
- Base application includes an admin interface
Pages, Snippets and Layouts
- Hierarchical page management
- Create page in several states (draft, reviewed, published) in Textile or Markdown with slug, breadcrumb, and layout
- Snippets are small chunks of content that can be shared between pages (to DRY up your content)
- Layouts that can be broken down into components of the layout (sidebar, etc.)
Tags
- Radius
<r:title/>
,<r:content part="sidebar" inherit="true"/>
,<r:snippet name="footer"/>
,<r:if_content part="extended">...</r:if_content>
,<r:children:each limit="5" order="desc">...</r:children:each>
- Tags can be embedded anywhere, not just in the layout
- Tags are contextual -- e.g.,
<r:title/>
picks the correct title even if it is embedded within a snippet within multiple pages - Custom tags possible with “behavior”
Text Filters
- Textile (RedCloth), Markdown (BlueCloth), SmartyPants
- Vanilla HTML (no filtering)
- Custom filters possible. [This is my own example below, not John’s.]
class MyFilter < TextFilter::Base register 'profanity filter' def filter(txt) txt.gsub(/(damn|ass|shit)/i, '####') end end
Radiant is powering the new ruby-lang.org site. Overall, a slick, well-thought out, polished, extendable CMS done very much in the philosophy of Ruby and Rails. Check it out!