Présentation Module mezzanine-blocks
J'utilise de plus en plus lors de mes développements Python/Django, l'excelent CMS Mezzanine lorsque j'ai besoin d'une couche CMS et d'une application modulaire.
Une fonctionnalité intéressante est l'édition en live, permettant comme son nom l'indique d'éditer son contenu en live sans passer par l'administration d'ou un gain de temps et d'ergonomie.
Plugins Mezzanine
En cherchant sur le site de l'éditeur du CMS, j'ai trouvé une page référençant tous les plugins, alors certe il n'y en a pas autant que pour Wordpress ou Drupal, mais l'avantage d'un tel CMS comme mezzanine, c'est d'être bien écrit et basé sur un framework qui permet un développement rapide et agréable, voici la page des plugins mezzanine.
Sur ce j'ai trouvé un module fort intéressant permettant d'ajouter des blocs un peu partout et administrable, ce module se nomme Mezzanine-blocks, vous pouvez vous rendre en cliquant sur le lien Github de l'auteur.
Installation du plugin
Pour commencer il faut l'installer:
pip install git+git://github.com/renyi/mezzanine-blocks.git
Ensuite rajoutez votre application dans le tuple INSTALLED_APPS de votre settings.py:
INSTALLED_APPS = ( "...", "mezzanine_blocks", )
Il vous faut ensuite ajouter dans l'administration le menu du module pour pouvoir créer mais aussi éditer les différents blocs
ADMIN_MENU_ORDER = ( ("Content", ( "pages.Page", "mezzanine_blocks.Block", "mezzanine_blocks.RichBlock",
"mezzanine_blocks.ImageBlock", "blog.BlogPost", "blog.BlogCategory", "generic.ThreadedComment", ("Media Library", "fb_browse"), ) ), )
Lancez la commande pour créer les différentes tables du plugins:
- python manage.py createdb,
- soit python manage.py syncdb
- ou bien si vous utilisez south pour vos migrations: python manage.py migrate
Utilisations
Comment le module fonctionne ? Dans un premier temps dans votre template là où vous désirez voir apparaitre votre ou vos blocs il faut charger le templatetags:
{% load ... block_tags %}
Vous avez le choix entre 3 types de blocs:
- FlatBlock (juste du texte brut sans HTML)
- RichFlatBlock (text HTML)
- ImageFlatBlock (affiche une image)
Voici leurs tags correspondants:
{% flatblock "My Awesome Block" %} {% richflatblock "My Awesome HTML Block" %} {% imageflatblock "My Image Block" %}
Il y'a aussi des options comme la gestion du cache l'utilisation d'un template spécifique, etc.
Je vous laisse donc lire la doc et tester ce plugin