Catégories:
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é
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

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…) ?
Vincent
Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.
drupalfrance
1772
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
haimr
12
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.phpdans le répertoire de ton thème, et y ajouter la fonction suivante :<?phpfunction _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.phppour 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 fichierpage.tpl.phppour le renommer enpage-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).
Vincent
Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.
drupalfrance
1772
Merci vincent
je vais appliquer votre methode.
Bonne journée
haimr
12
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 ;)
tostinni
1268
Merci pour la micro remarque, ce genre de remarque evite parfois de chercher des heures sans savoir d’ou viens le probleme
:)
haimr
12
Je crois pas que t’aurais cherché pendant des heures : le code que je t’ai indiqué fonctionne (déjà utilisé). Simplement, celui de tost est syntaxiquement - plus - correct. :)
Vincent
Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.
drupalfrance
1772
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
yoda
11
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»
<?phpfunction _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
@++
Baze-a
15