Submitted by juliendubreuil on
Lorsque l’on crée une vue il est possible de créer différents affichages (défaut, page ou encore bloc) mais il n’est pas possible d’intégrer votre vue dans une page à un endroit spécifique. Pour cela il existe des modules comme insert_views qui permettent d’insérer une vue dans une page en ajoutant une simple ligne de code. Le problème est qu’il faut faire attention à chaque fois que vous éditez votre page que votre vue fonctionne toujours surtout si vous utilisez un éditeur Wisywig. Il existe sinon une autre solution, qui consiste à intégrer votre vue en Php.
Je passe la partie création du module, mais pour réaliser ce qui suit il vous faut l’avoir crée.
Nous allons utiliser la fonction views_embed_views($name, $display_id = ‘default’) qui n’a besoin que d’un seul paramètre (nom de la vue) pour fonctionner.
<?php
$viewname = 'MY_VIEW_NAME' ;
print views_embed_view ( $viewname );
?>
Le code ci-dessus nous permet d’afficher la vue portant le nom MY_VIEW_NAME
En lisant la fonction views_embed_views on s’apercoit que celle-ci autorise un deuxième paramètre ($display_id) qui gère l’affichage (exemple : default, page, block, etc) et va nous permettre de choisir le format de sortie. Bien souvent, lorsque l’on crée une vue c’est pour afficher des résultats variables selon un paramètre comme une liste en fonction d’un terme de taxonomie. Ainsi pour passer un argument à notre vue nous allons ajouter un troisième paramètre à notre fonction.
<?php
$viewname = 'liste_des_cours';
$display = 'page';
$view_arg = 'economie';
print views_embed_view ($viewname, $display , $view_arg);
?>
Il ne vous reste plus qu’à choisir ou intégrer cette vue.
Ce que nous venons de voir est facile à mettre en place pour afficher le contenu d’une vue, mais cela ne nous laisse que très peu de contrôle sur notre vue. Par exemple views_embed_views n’affichera pas le titre que vous aurez saisi dans votre vue.
Pour aller plus loin nous allons utiliser la fonction views_get_views($name, $reset = FALSE) qui va nous permettre d’accéder à plus d’information.
<?php
$viewname = 'liste_des_cours';
$display = 'page';
$view_arg = 'economie';
// Chargement de notre vue
$view = views_get_view ($viewname);
// On ajoute des paramètres à notre vue
$view->display_handler->set_option('items_per_pages', 4);
$view->display_handler->set_option('offset', 0);
//Exécution de le vue
$view_content = $view->execute_display($display, $view_arg);
//Récupération du titre de notre vue
$view_title = $view->get_title();
?>
Comme toujours il existe pas mal de fonctions et de possibilités pour générer une vue, dans la majorité des cas la première solution est la plus utilisée.
Commentaires
Très bon récapitulatif,
Permalien Soumis par nyl auster le 18 Novembre, 2009 - 11:30
Très bon récapitulatif, merci :-)
Cool de voir ce genre de tips sur drupalfr
Oui je vais continuer la
Permalien Soumis par juliendubreuil le 18 Novembre, 2009 - 11:52
Oui je vais continuer la série :)
attention, il semblerait que
Permalien Soumis par nyl auster le 7 Décembre, 2009 - 16:57
attention, il semblerait que ce ne soit pas des guillemets simples PHP qui délimitent le nom de tes variables dans le code ci-dessus, si on copie colle dans un bloc ça ne marche pas et ça ne saute pas aux yeux que ça vient de là.
Bien vu nyl pour le copier
Permalien Soumis par philippe33 le 6 Janvier, 2010 - 18:18
Bien vu nyl pour le copier coller du code qui ne fonctionne pas. Et merci pour le tuto. Exactement ce que je cherchais.
Voila c'est mis à jour.
Permalien Soumis par juliendubreuil le 7 Janvier, 2010 - 13:56
Voila c'est mis à jour.
bonjour, je cherche à séparer
Permalien Soumis par aiphes le 16 Mars, 2011 - 11:45
bonjour,
je cherche à séparer le filtre exposé d'une vue et son résultat ,afin de disposer le filtre dans une colonne, voir http://drupalfr.org/forum/support/developpement/27613-views-vue-exposee-...
comment cela serait il possible ?
merci