Submitted by aiphes on
Bonjour,
J'ai une vue avec argument que je voudrais inclure dans un node-custom.tpl via php, mais je ne sais pas comment faire avec les arguments.En effet la vue change selon le tid d'un certain vid,voici le code de depart :
<?php
$viewname
= 'liste_autres_vdl';
$view = views_get_view ($viewname);
$view->set_display('block_1');
$view->args = array("2");array($node-> tid);
//Exécution de la vue
$view->pre_execute();
$view->execute();
if (
$view->result) {
// S'il y a un resultat on récupère le titre (ajoute tag h3, et le contenu)
$output = '<div id="ac"><h3>'.$view->get_title().'</h3>' . $view->render().'</div>';
}
//Affiche la vue
print $output;
?>
Comment faire pour que la vue récupère le bon tid ?
Merci
Bonjour, La fonction
Permalien Soumis par celma le 21 Juin, 2011 - 16:12
Bonjour,
La fonction views_get_view_result permet de passer des arguments : views_get_view_result($name, $display_id = NULL, $arg1, $arg2, ...). Elle te permet de recupérer un tableau avec les infos de la vue.
Va voir ce lien : http://drupalcontrib.org/api/drupal/contributions--views--views.module/f...
j’ai regardé le lien que tu
Permalien Soumis par aiphes le 21 Juin, 2011 - 16:54
j'ai regardé le lien que tu me donnes, et j'ai essayé ceci avec mon code, mais j'ai pas l'impression que ça marche.
<?php if (
$node->field_liste_autre_vdl[0]['view']
): ?>
<div id="bloc_vdl_autres_evenements">
<?php
$viewname
= 'liste_autres_vdl';$view = views_get_view ($viewname);
$view->set_display('block_1');
$args = array($node-> tid);
$view->set_arguments($args); //Exécution de le vue
$view->pre_execute();
$view->execute();
if (
$view->result) {// S'il y a un resultat on récupère le titre (ajoute tag h3, et le contenu)
$output = '<div id="ac"><h3>'.$view->get_title().'</h3>' . $view->render().'</div>';
} //Affiche la vue
print $output; ?>
</div>
<?php endif;?>
j'ai besoin au final de récupérer le tid d'un vocabulaire et de l'utiliser comme argument pour la vue...facile à écrire mais moins à réaliser pour moi
Mais tu n’utilsie pas la
Permalien Soumis par celma le 21 Juin, 2011 - 16:57
Mais tu n'utilsie pas la function views_get_view_result.
J'aurais fait quelque chose dans ce genre :
<?php
$viewname
= 'liste_autres_vdl';
$view = views_get_view_result($viewname, 'default', $node-> tid)
if (!empty(
$view)) {// S'il y a un resultat on récupère le titre (ajoute tag h3, et le contenu)
$output = '<div id="ac"><h3>'.$view->title.'</h3>' . $view->render().'</div>';
} //Affiche la vue
print $output; ?>
Je l'ai utilisé pour une fonction et j'ai récupérer tout les éléments de la vue correspondant au arguments.
ça ne marche pas non plus…ça
Permalien Soumis par aiphes le 21 Juin, 2011 - 17:14
ça ne marche pas non plus...ça casse la page...j'ai essayé ceci:
par contre ceci semble etre ok, mais il manque le titre..
bon je tente de récupérer le
Permalien Soumis par aiphes le 22 Juin, 2011 - 11:31
bon je tente de récupérer le bon tid afin de le passer en argument de la vue...
<?php
$viewname = 'liste_autres_vdl';
$view = views_get_view ($viewname);
$viewdisplay = $view->set_display('block_1'); $lesVid=array('2');//vid = 2 , type d'evenement
// on recupere le vid (taxonomie) et l'on verifie si c'est celui voulu
if ( ! empty($node->taxonomy) ) {// Récupération du 1er element du tableau
$term = array_shift($node->taxonomy);
// verifie si l'un des termes appartiennent bien à l'un des vid définis dans le tableau
if ( in_array($term->vid,$lesVid) ) {
$args = $term->tid;
$view->set_arguments($args);
$output = '<div id="ac"><h3>'.$view->get_title().'</h3>' . $view->preview($viewdisplay, $args).'</div>';
if (!empty($view->result)) {
print $output;
}
}
}
?>
mais cela ne fonctionne pas...il affiche des contenus avec des tid differents..alors qu'il devrait afficher des contenu ayant le meme tid..
EDIT : trop mortel ça marche !!! en fait mes contenus etaient mal taggués (devel generate inside) donc aprés correction ça roule...reste plus qu'a déployer aux autres types et bien sur en prod...
je suis trés decu car je
Permalien Soumis par aiphes le 22 Juin, 2011 - 15:32
je suis trés decu car je voudrais utiliser ce code pour un autre site, le vid et le tid changent mais le code trouve un resultat vide à la vue alors qu'il ne l'est pas en preview...
voici un exemple : http://www.lycee-celony.com/vie-du-lycee/europe/rencontre-l-europe
si vous avez une idée..
je ne comprends pas trop le
Permalien Soumis par aiphes le 27 Juin, 2011 - 12:02
je ne comprends pas trop le probleme, le preview me donne le bon resultat et le code insérer trouve un résultat vide et n'affiche donc rien...la vue est bonne, les arguments aussi...ça fonctionne sur un site et pas sur un autre,avec la même vue et la même architecture...là je suis planté
je relance car je suis
Permalien Soumis par aiphes le 15 Novembre, 2011 - 17:30
je relance car je suis toujours au meme point, la vue marche mais l'inclusion php ne renvoi pas de résultats...le bug doit etre minime mais je ne le trouve pas..