[Résolu]Comment afficher le contenu d'une page dans un Pop-UP

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour, je voulais savoir si quelqu'un à deja eu ce besoin : Charger le contenu des pages (creer via drupal) dans des Pop-UP. J'ai deja posté un sujet ICI dans le forum de drupal.org et j'ai pas recu de reponses clairs. Merci pour votre aide, et bonne debut de journé

Version de Drupal : 

Salut,

Pourrais-tu préciser ta question : ce qui te pose problème, c'est de faire en sorte que le lien cliqué s'ouvre dans une popup (auquel cas, ça n'est pas vraiment du Drupal, mais plutôt du JavaScript) ou c'est que la page affichée dans la popup doit avoir un certain format (par ex. on masque la nav, le pied de page...) ?

Salut,
Merci pour votre réponse, en fait c'est la deuxieme proposition.
Je veux avoir un popup qui contient pas toute la page drupal, mais juste le BODY (sans le header....).
En ce qui concerne le lien, j'utilise thickbox et ca fonctionne à merveille.
Merci pour votre réponse

OK.

La solution comprend 2 éléments. D'abord, il faut que tu trouves un moyen d'identifier les pages qui vont s'ouvrir dans des popups. Là, tu as plusieurs méthodes :

  • Rajouter un paramètre dans l'URL, par exemple http://monsite.com/node/18?pop=TRUE ; ici ?pop=TRUE indique que l'URL en question devra s'afficher en mode "popup".

  • Ou bien, définir dans ton code une règle permettant d'identifier les pages qui doivent s'afficher en mode "popup", par exemple : "tous les nodes de type story" ou "les nodes portant l'id 12, 24, ou 52".

Ensuite, il faut trouver un moyen d'indiquer à Drupal que si l'une des conditions ci-dessus est remplie, il faut utiliser un template spécial popup plutôt que le template standard servant à afficher une page (page.tpl.php).

Pour ça, il faut créer un fichier template.php dans le répertoire de ton thème, et y ajouter la fonction suivante :

<?php
function _phptemplate_variables($hook, $vars = array()) {
  if (
$hook == 'page' && isset($_GET['pop']) && $_GET['pop']) {
   
$vars['template_file'] = 'page-popup';
  }
  return
$vars;
}
?>

En gros, ce code dit "si le paramètre pop=TRUE est trouvé dans l'URL, utilise le template page-popup.tpl.php pour afficher la page".

Il te reste une chose à faire pour que ce code fonctionne : créer le template page-popup.tpl.php. Va dans le répertoire de ton thème et duplique le fichier page.tpl.php pour le renommer en page-popup.tpl.php. Dans ce nouveau fichier, supprime les zones que tu ne veux pas voir apparaître dans la popup (header, footer, sidebar_left, sidebar_right...), et le tour est joué.

Ce code suppose que tu utilises un thème basé sur le moteur PHPTemplate (c'est le cas de bluemarine ou garland).

Je vais chipoter mais juste une micro remarque :D
Il ne faut pas mettre http://monsite.com/node/18?pop=TRUE mais http://monsite.com/node/18&pop=TRUE car en fait le ? est passe en premier lieu apres le .com

Si t'as pas active les cleans URLs tu vois http://monsite.com/?q=node/18 les cleans URLs quittent le ?q= mais en realite il est tjs la mais n'est affiche nulle part ;)

Bonjour,
très intéressantes vos réponses. J'aimerai moi afficher le formulaire d'une page de l'admin dans une popup (ex:monsite.com/admin/node/add/nodeType) et non un node. Auriez-vous une astuce car là je bloque depuis un moment.
Merci beaucoup et bonne journée...

PS: je précise que j'utilise la version 6.14.
merci

Bonjour tout le monde,

j'ai suivi la méthode de Vincent , mais je n'arrive pas à basculer sur la bonne template lorsque ma variable "pop" est initialisé dans l'url.

J'ai besoin d'afficher un sondage dans une popup, du coup j'ai repris la fonction en remplacant "page" par "webform"

<?php
function _phptemplate_variables($hook, $vars = array()) {
  if (
$hook == 'webform' && isset($_GET['pop']) && $_GET['pop']) {
   
$vars['template_file'] = 'page-popup';
  }
  return
$vars;
}
?>

Cependant, lorsque je tape :
http://monsite.com/titre-de-mon-webform&pop=true

ou même
http://monsite.com/&pop=true

...rien ne se passe, j'ai aussi remplacé le "&" par un "?"

Faut-il que je fasse appel à la fonction "_phptemplate_variables" dans une page particulière hors mis "template.php" ?

PS : je viens tout juste de tilter que la version Drupal dans cette discussion est là 5...je suis sous la version 6.x aarf

Merci en tous cas pour toutes ces piste, je vais voir s'il y a une équivalence pour la ver.6 de Drupal

@++