Bonjour,
J’utilisais dans un template page—front.tpl.php la fonction views_get_view_result pour récupérer le résultat d’une view. Cela marchait, et j’ai dû changer quelque chose en train, et cela ne marche plus. J’ai tout essayé, je ne comprend pas.
Voilà mon code :
<?php $viewname = 'caroussel';
views_get_view_result($viewname, 'block'); ?>
La vue s’appelle caroussel et mon mode d’affichage block. J’ai essayé aussi avec ‘default’ et ‘page’, et cela ne marche pas non plus. J’ai rajouté un print et un render devant, et rien non plus, si ce n’est un «ARRAY».
Tout cela peut-il venir ?
Merci pour votre aide !
Maxime
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Hola,
Si le bout de code ci-dessous ne te renvoie rien, c'est surement que ta view ne renvoie rien. Elle n'attendrait pas des paramètres par hasard? Tu ne l'aurais pas modifié en ajoutant un contextual filter? Je pense que le problème se situe plus dans la vue que dans le tpl.
<?php
$viewname = 'caroussel';
$result = views_get_view_result($viewname);
dprint_r($result);
die();
?>
Cheers, Gauthier
soy el capitán.
ElCapitan
62
Merci pour ta réponse.
Ton code me renvoie une Fatal error : Call to undefined function dprint_r() in […]/themes/magazeen_lite/templates/page—front.tpl.php on line 85
Sinon je n’ai aucun contextual filter, et d’ailleurs quand je l’affiche en mode page ma view fonctionne… C’est très bizarre…
mysteriousfea
126
Pour la fatal error, c’est surement car le module Devel n’est pas installé, ce que je te conseil de faire :).
Sinon pas d’autre idées..
cheers,
gauthier
soy el capitán.
ElCapitan
62
oui en effet, j’avais oubié de le réactiver. donc là il m’affiche mon array de la vue, c’est parfait… Comment se fait-il que l’affichage simple ne fonctionne pas ? Faut-il rajouter un print devant le «views_get_result» ?
mysteriousfea
126
Est-ce qu’il serait possible de récupérer les champs un par un ?
J’ai ça :
Array(
[0] => stdClass Object
(
[nid] => 4
[node_title] => Mon titre
[node_created] => 1324589504
[field_data_field_image_node_entity_type] => node
[field_data_field_surtitre_node_entity_type] => node
[field_data_field_chapo_node_entity_type] => node
[field_data_field_illustration_node_entity_type] => node
[_field_data] => Array
(
[nid] => Array
(
[entity_type] => node
[entity] => stdClass Object
(
[vid] => 43
[uid] => 1
[title] => Mon titre
etc…
Et j’aimerais pour récupérer les champs title et chapo des résultats [0], [1] et [2]. Peux-tu me donner un coup de main sur la syntaxe, je n’ai tjrs pas compris std class object et je ne trouve d’info nulle part…
Merci !
mysteriousfea
126
Alors je crois que views_get_result() te retourne un objet php, il n’y a pas vraiment d’intérêt de faire un print/render() directement dessus.
En revanche cette fonction te permet d’avoir accès au données brutes qui sont renvoyées par ta vue (via le tableau d’objet que tu as mis dans ton poste).
Si ton tableau s’appelle $array tu pourra accéder au différentes valeur comme ceci :
$array[0]->nid = 4
$array[0]->node_title = Mon titre
$array[0]->_field_data[‘nid’][‘entity_type’] = node
$array[0]->_field_data[‘nid’][‘entity’]->vid = 43
$array[0]->_field_data[‘nid’][‘entity’]->uid = 1
En résumé quand ton ‘conteneur courant’ est un tableau tu prend la propriété avec [”]. Quand ton ‘conteneur courant’ est un objet stdClass tu prend la propriété avec ->.
Bon courage,
Gauthier
soy el capitán.
ElCapitan
62
Cool, merci pour ces explications. Cela fonctionne pour le node title, par contre dès qu’il y a plus de profondeur, je m’y perd de nouveau…
Pour mon champ «chapo» j’ai mis le code suivant :
print $array[0]->_field_data['nid']['entity']['field_chapo']['und']['0']['value'];Et ça ne fonctionne pas… Comment cela se fait-il ? J’ai pourtant suivi la hiérarchie de l’array…
Merci encore pour ton aide !
mysteriousfea
126
$array[0]->_field_data[‘nid’][‘entity’] c’est un objet : [entity] => stdClass Object
Donc tu va accèder à sa propriété via «->», c’est pas compliqué, donc la synthaxe qui devrait marcher c’est :
print $array[0]->_field_data[‘nid’][‘entity’]->field_chapo[‘und’][‘0’][‘value’] ;
edit : je pense que [0] c’est même mieux que [‘0’] :)
cheers
gauthier
soy el capitán.
ElCapitan
62
Génial, merci beaucoup pour ton aide précieuse !
mysteriousfea
126
Salut !
Je reprend ce fil, car j’ai un souci un peu du m^me ordre, l’array que me retourne views_get_view_result() est similaire à celui de Maxime, C’est à dire avec : $node->field_refcontent[und][0][safe_value]
Je récupère bien les données du tableau, mais Drupal ne semble pas apprécier l’array non défini, et me retourne cette erreur :
«Notice : Use of undefined constant und - assumed ‘und’ in include()…»
Le truc c’est que je ne sais pas ou je doit définir ce tableau.
cheers
www.heyhey.fr
=•=
kesti-arf
1