Submitted by Fabito on
Bonjour,
À l'origine, je cherchais à faire écrire ce bout de php,
$valeur = "[node:field_list_resistance]";
switch($valeur){
...
case "moyenne" :
print '<span>mauvaise</span><span>faible</span><span class="active">moyenne</span><span>bonne</span>';
break;
default : "blablabla";
}
Mais ceci ne fonctionne pas...
le switch sur $valeur, qui pourtant est bien égal à "moyenne",
n'affiche que la valeur de default. En gros "moyenne"($valeur) est différent de "moyenne"(switch)...
Problème de formatage ??
Du coup, je me dis que les chiffres seront sûrement plus manipulables.
Et je cherche désespérément le jeton
pour afficher la valeur de la clé sélectionnée d'un champ "liste"
que j'ai intitulé : résistance (field_list_resistance).
Les valeur de mon champ sont :
0|mauvaise
1|faible
2|moyenne
3|bonne
Par exemple, si l'on a sélectionné "moyenne" dans la liste,
je souhaiterais récupérer/utiliser le jeton qui afficherait "2" et non "moyenne".
Dans la liste de jetons, je trouve bien [node:field_list_resistance],
mais rien du genre [node:field_list_resistance:key-value] ou truc du genre...
J'espère être clair. Pas évident.
Merci d'avance pour les idées éventuelles,
Fabien
$valeur est égale
Permalien Soumis par hles le 12 Juin, 2012 - 11:28
$valeur est égale "[node:field_list_resistance]" pas "moyenne", dans votre code. D'ou la valeur par defaut. C'est la valeur de votre token qui pourrait être égale a "moyenne".
Merci pour le retour. Oui,
Permalien Soumis par Fabito le 12 Juin, 2012 - 13:47
Merci pour le retour.
Oui, c'est ce que je faisais au début.
Mais lorsque j'écris (pour le test):
<?php
//...
if([node:field-list-resistance] == "moyenne") print 'actif';
else print 'pas actif';
//...
//OU
//...
if("[node:field-list-resistance]" == "moyenne") print 'actif';
else print 'pas actif';
?>
Dans le premier cas, j'obtiens une erreur (mode php-code) :
Parse error: syntax error, unexpected '[' in /homez.94/rougier/www/test/modules/php/php.module(80) : eval()'d code on line 3
Et dans le deuxième, effectivement il considère le jeton comme une chaîne.
D'où après les essais de passer par une variable, pour essayer de "traiter" le jeton...
Je ne comprend pas pourquoi le jeton ne passe pas...
Bonsoir, Tu peux peut-être
Permalien Soumis par flebrenn le 12 Juin, 2012 - 19:35
Bonsoir,
Tu peux peut-être utiliser l'objet $node à la place d'un token.
Je te conseille d'installer et d'activer le module devel afin de pouvoir utiliser la fonction dpm() qui permet de visualiser très rapidement un tableau ou un objet passé en paramètre.
Dans ton cas, il me semble que c'est : $node->field_list_resistance ...
Cordialement,
Bonjour, De retour. Merci de
Permalien Soumis par Fabito le 14 Juin, 2012 - 17:22
Bonjour,
De retour. Merci de vos réponses.
J'ai déjà installé Devel, mais je l'utilise encore très mal.
Je regarde tout ça et j'espère trouver une solution par ce biais.
Merci encore,
Fabien
J’ai fait plusireurs tests,
Permalien Soumis par Fabito le 14 Juin, 2012 - 20:32
J'ai fait plusireurs tests, mais rien de concluant.
La variable $node est-elle accessible de partout ?
Lorsque dans mon champ de code php (via Display Suite), je fais :
<?php
print_r($node);
?>
Rien. Juste l'erreur :
Undefined variable: node dans eval() (ligne 2 dans .../modules/php/php.module(80) : eval()'d code).
?
Et sinon, dans Devel, je ne vois pas la fonction dpm().
Bonne soirée,
Fabien
En revanche, si je charge le
Permalien Soumis par Fabito le 14 Juin, 2012 - 20:40
En revanche, si je charge le noeud avant, je récupère bien les infos qui m'interressent :
<?php $node=node_load(55);
print_r($node->field_list_resistance); ?>
Et j'en reviens au même soucis...
Si je fais :
<?php
$node=node_load([node:nid]);
print_r($node->field_list_resistance);
?>
//Affiche : Parse error: syntax error, unexpected '[', expecting ')' in .../modules/php/php.module(80) : eval()'d code on line 2
Je deviens fou...
Cette variable existe dans
Permalien Soumis par flebrenn le 14 Juin, 2012 - 20:40
Cette variable existe dans node.tpl.php ou par exemple dans la fonction hook_preprocess_node();
Si devel est activé, tu remplaces ton print_r par dpm (et une fois loggué sur ton site en tant qu'admin tu verras l'objet node et ce qu'il contient.
En fait, le problème est que
Permalien Soumis par Fabito le 14 Juin, 2012 - 23:59
En fait, le problème est que depuis la zone d'édition "champ de code" de Display Suite,
en mode php-code, la variable $node n'est pas accessible.
Si j'utilise le template "ds-2col-stacked--node-essences.tpl.php", qui est bien celui que je dois utilisé, là $node est dispo.
Si je fais (dans ce template) :
<?php $resistance = $node->field_list_resistance['und'][0]['value']; ?>
J'obtiens bien la valeur à tester.
Maintenant, si je reviens à mon champ de code dans Display Suite :
<?php print $resistance; ?>
Ceci n'affiche l'erreur : Undefined variable: resistance dans eval()...
Évidemment fichiers copiés, cache vidé, etc.
Donc comment rendre disponible cette variable ?
Là, ça me dépasse. La nuit porte conseil...
Cordialement,
Fabien