Submitted by sokarcreative on
Bonjour,
J'ai actuellement un problème avec le module "Views".
J'ai une vue qui affiche un seul contenu sur base de filtres. En l'absence de résultat, je crée ce contenu automatiquement à l'aide d'un script php. Ce script PHP est écrit dans une variable "Global : PHP" (du module Views PHP) se trouvant dans la catégorie "Comportement en l'absence de résultats".
Du coup, le contenu est créée en l'absence de résultat mais pour qu'on puisse le voir, il faut que la vue soit rafraichit automatiquement. Pour le moment, je suis obligé de rafraichir la page pour voir ce contenu.
Actuellement, j’utilise le module "Better exposed filter" pour rafraichir les filtres automatiquement en Ajax et enlever le bouton "Appliquer" des filtres.
Ma question est : Comment puis-je rafraichir la vue automatiquement après que le script php de création du contenu soit exécuté ?
Edit : "Views auto-refresh" aurait été l'idéal si ce dernier pouvait s'exécuter qu'une seule fois après que le script php soit exécuté (environ 1 seconde).
Merci d'avance,
sokarcreative
Bonjour,
Permalien Soumis par Damien LAGUERRE le 16 Avril, 2014 - 10:11
Bonjour,
Je ne suis clairement pas un adepte du code PHP dans les vues, par contre pourquoi ne pas simplement faire :
drupal_goto(current_path());
à la fin de votre code ?
Merci pour cette solution, je
Permalien Soumis par sokarcreative le 17 Avril, 2014 - 16:45
Merci pour cette solution, je ne connaissais pas cette fonction x) mais j'ai trouvé mieux et ne nécessitant pas de rafraichissement de la page (ou vue).
Je suis parvenu à résoudre le problème en utilisant le hook_views_post_build(&$view).
Il permet de récupérer le résultat de la requête avant l'affichage de la vue.
Du coup, j'ai créée mon contenu si $view->total_rows était égal à 0.
Après ce hook, il ré-effectue la requête pour l'affichage et "tadam" le contenu s'affiche directement.