[Resolu]pathauto views et argument

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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

Forum : 
Version de Drupal : 

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...

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 é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?

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'];
?>