3 CMSs in 45 minutes (djangocon.eu)

Tags: djangocon, django, plone

Three CMSs got 10 minutes each for a presentation:

Fiber

Fiber is a simple and user-friendly CMS that they use in almost all their django projects. He showed a screencast with fiber in action. It got across the usability and friendliness of Fiber quite nicely.

Originally they used django flatpages with a whole bunch of add-ons for tree viewing and menus, but it didn’t feel like one coherent whole. So they made Fiber which will integrate quite nicely with your existing project.

It is not a lot of code. 1601 lines of python and 2091 of javascript. (“Should we even be at this conference, there’s more javascript than python!”). The output is clean html with handy css classes. A couple of template tags makes it easy to write your templates.

TODO:

  • Front-end editing for your models.
  • More control over placement of content including more sorting/filtering.
  • More plugins for video, twitter and so.
  • They’ll make UI/UX improvements: a designer will look at it in the next weeks.
  • A demo project.
  • More translations (NL and EN are available right now).
  • Internationalisation (some people are working on it).

Django Fiber from Ride The Pony on Vimeo.

Django-cms

The core to django-cms are pages. The content itself are placeholders where plugins are plugged into. Integration of your existing django apps with django-cms is important, this is done by means of “apphooks”. Django-cms is build to be extended, so it is both a ready-made app and a framework.

CMS has full django multi-site support. And, very important for them as a Swiss company, is multilinguality. Their worst-case site has 18 different websites with each a different combinations of 26 languages!

There’s editorial workflow with permission management. Front-end editing. Almost as cool as Fiber’s (and they’re working on it).

An important extension mechanism is the “app hook”: you integrate your app with django-cms with a specially-named auto-detected python file that can configure a submenu structure, a view, a sub-urls configuration. Likewise, plugins are in a cms_plugins.py. You can plug those into slots in the page. The plugin defines what it is and how to render it. By hooking in a separate admin, you can get front-end editing for your own models.

Django-cms is pretty big. 170+ contributors. 1000+ watchers, 300+ forks. Fully translated into 17+ languages. Dozens of apps. They have a dedicated front-end developer now so that should help in getting the UI better and the javascript cleaner.

They hope to get multi-device support going for the 2.3 version of django-cms. And they hope to get the existing toolbar more extensible so that it is easier for other apps to re-use and extend.

See http://bit.ly/djangocms-demo for a demo you can play with!

Merengue

Plone, which they used earlier, is an amazing and great python CMS, but also big and harder to understand. Then they discovered django. Clean, simpler, easier. But no CMS. So they had to add a CMS of their own: Merengue.

He demoed it live on his laptop. It worked without hickups! Important to them is front-end editing and moving blocks of content around on the page with javascript. Very dynamic.

Also doable via the web interface: adding cache settings per block. Even translations are done via the web interface. Handy feature: you can get translatable items highlighted for you so that you know what’s left to translate.

They’ve also done their best to pimp the regular django admin interface.

Build-in is for instance django-compressor for js/css combining and compression. There are many more existing apps that they use.

German layout 'Mariahoehe'
blog comments powered by Disqus
 
vanrees.org logo

About me

My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.

Weblog feeds

Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):