J'ai quelques pages telles que l'accord d'utilisateur que je veux apparaître avec ou sans la mise en page (extends
tag) selon la façon dont il est appelé. J'utilise jQuery Fancybox
pour charger ces pages dans les iframes. Si JS est désactivé, les liens devraient s'ouvrir dans une nouvelle fenêtre avec la mise en page complète, sinon, s'ils sont dans un iframe, ils n'ont pas besoin de la mise en page.Comment obtenir une version sans mise en page d'une page?
A partir de maintenant, je fais en utilisant jQuery pour dépouiller l'en-tête/pied de page (en remplaçant le corps avec juste la partie de contenu)
if(window.location != window.parent.location) {
$('body').html($('#content'));
}
Mais il ne semble pas le droit de charger des choses qui seront ne jamais être affiché (ou pire, sera affiché pendant une demi-seconde jusqu'à ce que le JS entre). Je suppose que ce que je pourrais faire est de créer un modèle partiel contenant seulement le contenu, et ensuite deux pages de conteneur, une avec l'en-tête/pied de page et une sans; ils comprennent tous deux le partiel. Ensuite, utilisez JS pour modifier le lien ... qui devrait pointer vers des vues différentes, ce qui à son tour appeler les différents modèles ... semble être un énorme travail. Il doit y avoir un meilleur moyen?
@ZeissS:
Quelque chose comme ceci est pas possible dans Django:
{% if not iframe %}
{% extends "layouts/default.html" %}
{% endif %}
La balise doit{% extends %}
être la première balise dans le modèle, donc il ne peut pas être conditionnellement commenté. Je suppose que peut-être je pourrais le faire dans la mise en page elle-même ... et alors il s'appliquerait à toutes mes pages .... essayons cela.
(je ne sais pas django) Restez avec la vue unique, mais déplacez les en-têtes/pieds de page à l'extérieur et faites un 'if' autour de l'inclusion, où vous vérifiez un paramètre de requête. Vous ne devriez pas avoir besoin de créer plusieurs vues/temples. – ZeissS