2010-06-03 22 views
2

Je suis un débutant ... drupalDrupal 6: obtenir des champs particuliers de types de nœud de référence

<?php print $node->field_date[0]['view']; ?> 

je peux obtenir la valeur des champs CCK personnalisés créés et l'affichage dans les fichiers tpl.php comme ci-dessus .. . C'est très bien. Ma question est de savoir comment puis-je obtenir les champs de référence des nœuds dans les champs? Par exemple, j'ai un type de contenu d'événement, et j'ai défini la référence de nœud pour l'emplacement (titre, adresse, img, etc.). Lorsque j'écris le code ci-dessous, il affiche tout le contenu de l'emplacement;

<?php print $node->field_location[0]['view']; ?> 

mais je n'ai besoin que du champ d'adresse de ce type de contenu. sth comme ci-dessous serait génial: D mais ne fonctionne pas;

<?php print $node->field_location[0]['field_address']['view']; ?> 

alors comment l'obtenir? apprécier aide tellement! Merci beaucoup!

+0

Montez le module d'devel. Allez sur un nœud sur lequel vous travaillez. Cliquez sur l'onglet node_load. Maintenant vous pouvez voir un arbre de tous les champs. Cela rendra beaucoup plus facile. – Keyo

Répondre

1

Vous devez inspecter/vider le contenu de la baie $node->field_location. Je n'ai pas d'installation de test à portée de main pour le moment, donc je ne peux pas dire avec certitude, mais je m'attendrais à ce qu'au moins l'id de noeud référencé ('nid') soit dans ce tableau quelque part. Avec cela, vous pouvez faire un node_load($nid), qui renvoie l'objet nœud complet, donnant ainsi accès aux champs.

(Comme l'a dit, je ne suis pas sûr, mais le tableau de champ peut- contiennent déjà tout l'objet de nœud ainsi, vous permettant d'économiser de la nécessité de le charger explicitement.)

0

Les $node->field_location[0]['view']; renvoie le noeud tel qu'il a été défini dans la section Champs d'affichage de la définition de type de contenu. Cela pourrait fonctionner à votre avantage. Vous pouvez le tromper: utilisez un affichage Teaser pour ce nœud et personnalisez l'affichage Teaser du nœud en fonction de vos besoins. Juste une pensée.

Si cela ne fonctionne pas pour vous, vous devez charger le noeud séparément. Vous pouvez utiliser $node->field_location[0]['nid']; pour obtenir l'ID de nœud, vous finirez avec quelque chose comme ceci:

node_load($node->field_location[0]['nid'])->field_address[0]['view'] 

Je ne sais pas comment cela joue ...