Mezzanine tag overextends

23 Mar

Une des choses intéressantes avec le CMS Mezzanine mais c'est aussi valable pour d'autres CMS ce sont la quantité de fonctions ou helpers permettant de simplifier le développement de nos applications, je vais vous présenter dans cet article le tag "overextends" qui permet d'étendre et d'overrider un template, en effet un tags existe dans le framework Django, "extends" qui permet comme sont nom l'indique d'étendre un template et de créer sa propre version dérivée.

Quand utiliser le tag Overextends

Il arrive parfois lorsque l'on ait besoin d'étendre un template et que l'on veuille aussi redéfinir certains blocs du template hérité, exemple "page.html" dans une ou plusieurs autres applications de notre projet:

{% extends "pages/page.html" %}

{% block title %}{% endblock %}

c'est bien entendu possible avec Django, mais parfois ces blocs sont nombreux et complexes et nous aimerions plutôt overrider juste quelques blocs plutôt que de copier entièrement le template en question et redéfinir tous ses blocs, cela pose un problème de maintenance lors de la mise à jour du template copié.

{% extends "pages/page.html" %}
{% block title %} Test {% endblock %}

Dans notre exemple ci-dessous nous allons overrider un template dans une autre application de notre projet, mais là Django lèvera une erreur à cause de l'héritage circulaire, car il n'est en effet pas possible d'étendre et d'overrider un template contenant le même nom, c'est pour cela que Mezzanine propose ce nouveau tags "overextends".

La solution

{% overextends "pages/pages.html"%}

{% block title %} Test {% endblock %} 

Nous pouvons aussi ajouter à la suite de notre bloc le texte sans le remplacer complètement en utilisant la variable {{block.super}}, cette fonctionnalité est de base dans Django et n'est pas spécifique à Mezzanine

{% overextends "pages/pages.html"%}

{% block title %}
{{block.super}}
Test
{% endblock %} 

Voilà j'espère que cet article vous aura été utile, pour les utilisateurs de Django le développeur de Mezzanine crée une application pour utiliser ce tag dans vos projets sans utiliser le CMS Mezzanine voici le lien Github django-overextends

N'hésitez pas à laisser vos commentaires

Publié le: Lundi 23 mars 2015
blog comments powered by Disqus
Monter

© Circonflex-studio - Tous droits réservés - Mentions legales
Développeur web indépendant / Webdesigner / Intégrateur
Nice - Cannes - Monaco - Antibes - côte d'azur | site valide HTML 5

Ce site à été développé en Python avec le framework Django

"http://www.cssawards.net/nominee/circonflex-studio/"