Bonjour,
J’ai créé une view auquel je passe un argument.
J’aimerais savoir si mon code fonctionne étant donné que j’ai une url réécrite du type
monsite/mon-url-reecrite. (je n’ai pas de /nid)
Si l’on fait pour récupérer l’id du noeud, est-ce que ça fonctionne ?
<?php
$nid=arg(1);
?>
Si non, quelle est la solution pour le récupérer sachant que je fais un traitement pour obtenir une autre valeur?
Si oui, voici mon code pour récupérer l'id de mon theme à partir du nid.
Celui-ci est-il correct, ou ma requête est erronnée?
<code>
<?php
$nid=arg(1);
$theme_id=db_result(db_query('select field_prod_theme_nid from {content_type_product} where nid=%d', $nid;
return $theme_id;
?>
Merci de votre aide
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Comprend pas… Tu veux récupérer un champ cck d’un noeud pour créer une URL qui est celle d’une Views à laquelle tu passes un argument ??
$nid=arg(1) ; devrait fonctionner tant que tu es sur la page d’un noeud.
La seconde ligne manque de parenthèses vers la fin, et db_result ne t’enverra rien de bon. Ce serait plutôt db_fetch_object, puis récupérer $theme_id->field….
Enfin je dis ça je vois toujours pas pourquoi tu fais une requête en direct…
Blog DRUPALONS.FR : testez le générateur de code, et suivez-nous sur twitter
emerya
1255
A ma connaissance Drupal est parfaitement capable de récupérer le nid d’un noeud à partir de son URL même si celle-ci est aliasée. Il ne fonctionne en interne que sur l’URL système (celle en node/nid).
On n’est ni derrière votre dos, ni dans votre tête ! Soyez précis !
DRUPALISTIC : des infos sur Drupal et les modules. Sur twitter, 3 listes à suivre
Marie-Hélène
2068
Bonjour
Il est vrai qu’au début il n’est pas évident de comprendre comment fonction views et les arguments alors si on ajoute pathauto c’est la galère.
Avant tout est-ce tu peux nous décrire ton besoin et ce que tu cherches à faire avec ta vue, peut être qu’on trouvera une solution simple.
A quel endroit comptes tu mettre ce code ? Dans la validation de ta vue ?
Il faut éviter d’insérer des requêtes SQL comme cela, c’est source de plein d’ennuis.
Puisque tu as le nid de la node grâce à arg(1) tu peux utiliser la fonction qui permet de charger une node.
$nid = arg(1);$node = node_load($nid);
Et accéder à la valeur de ton champ comme cela.
$value = $node->field_prod_theme_nid;A tester, car je n’ai rien sous la main pour le faire
Julien
Ideia.fr | Blog | Twitter
JulienD
321
Merci pour cet éclaircissement.
Voilà ce que j’essaie de faire. J’ai un contenu de type ‘vetement’ et un autre contenu de type ‘theme’.
Chaque vêtement appartient à un thème.
Lorsque j’affiche un noeud de type ‘vêtement’ je voudrais afficher l’image du thème.
Dans mon type de contenu ‘vêtement’ j’ai un node-reference vers le noeud de type ‘theme’, qui contient une image.
Donc effectivement, c’est plus simple de faire
<?php$nid = arg(1);
$node = node_load($nid);
$mon-theme-id=$node->field_prod_theme_nid;
return $mon-theme-id;
?>
Lorsque je teste en passant l’argument manuellement, cela fonctionne mais lorsque j’affiche le bloc dans mon noeud de type ‘vetement’ ça ne me retourne aucun résultat…
J’ai plus ou moins pu voir à travers mes divers posts que les blocs avaient parfois des soucis avec les arguments. L’autre jour, en récupérant à partir de l’url ça fonctionnait, mais si je mettais arg(1) pas.
Est-ce le cas, lorsque l’on indique en php l’argument ?
selinav
1242
pensez-vous que mon code ci-dessus fonctionne pour récupérer un argument dans un bloc ?
selinav
1242
pour info, je viens de trouver mon problème c’est que la valeur que je recherchais était encapsulée dans un tableau…
J’ai trouvé l’erreur en débuggant à l’aide du champ afficher le texte vide en mode php.
donc pour retourner l’id du thème (champ node référence) il fallait faire :
<?php$nid = arg(1);
$node = node_load($nid);
$theme=$node->field_prod_theme;
return $theme[0]['nid'];
?>
selinav
1242