Submitted by selinav on
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
Comprend pas... Tu veux
Permalien Soumis par emerya le 29 Octobre, 2009 - 10:41
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...
A ma connaissance Drupal est
Permalien Soumis par Marie-Hélène le 29 Octobre, 2009 - 11:02
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).
Bonjour Il est vrai qu'au
Permalien Soumis par juliendubreuil le 29 Octobre, 2009 - 11:29
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
Merci pour cet
Permalien Soumis par selinav le 29 Octobre, 2009 - 12:04
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?
pensez-vous que mon code
Permalien Soumis par selinav le 9 Novembre, 2009 - 15:00
pensez-vous que mon code ci-dessus fonctionne pour récupérer un argument dans un bloc?
pour info, je viens de
Permalien Soumis par selinav le 9 Novembre, 2009 - 15:58
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'];
?>