Submitted by cogicube on
Bonjour à tous,
J'ai tout dit dans le titre.
J'ai une fonction dans mon template.php et j'aimerai avoir une class différente pour deux types de node qui s'affichent dans la même page
Du genre :
if($node->type=="truc"){$cssclass="node-truc";}
if($node->type=="machin"){$cssclass="node-machin";}
$output="<div class=....
Seulement voilà, je n'arrive pas à récupérer l'objet $node...
C'est vraiment newby cette question mais j'en suis là de mon apprentissage ;o))
Salut à tous et toutes
Serge
Est tu bien dans un template
Permalien Soumis par mbehmane le 4 Mai, 2010 - 19:56
Est tu bien dans un template dans ton theme qui s appelle node.tpl.php?
Bonjour, Non je ne suis pas
Permalien Soumis par cogicube le 4 Mai, 2010 - 20:20
Bonjour,
Non je ne suis pas dans un fichier de template mais dans le fichier template.php qui gère les fonctions de template.
ma fonction de template vient de ds (display suite) et est ainsi faite
function montheme_ds_field($content, $field) {
$output = '';
if (!empty($content)) {
if ($field['type'] == 'ds') {
$output .= '<div class="field '. $field['class'] .'">';
// Above label.
if ($field['labelformat'] == 'above') {
$output .= '<div class="field-label">'. $field['title'] .' : </div>';
}
// Inline label
if ($field['labelformat'] == 'inline') {
$output .= '<div class="field-label-inline-first">'. $field['title'] .' : </div>';
}
$output .= $content;
$output .= '</div>';
}
else {
$output = $content;
}
}
return $output;
}
j'aimerai charter le champ selon le node qui la contient avec un truc du genre
function montheme_ds_field($content, $field) {
if($node->type == 'proposition'){$class="coucou";}else{$class="toto"}
et ainsi faire un div avec une classe que je pourrai alimenter avec mon CSS.
Bonsoir et merci
Serge
Et d' ou est ce que tu
Permalien Soumis par mbehmane le 5 Mai, 2010 - 08:38
Et d' ou est ce que tu appelle cette fonction. Puisque elle retourne un template tu l appelle de quel template
J'ai mis un peu trop de temps
Permalien Soumis par Matt le 5 Mai, 2010 - 08:47
J'ai mis un peu trop de temps à faire mon message.
Réponds d'abord à la question de mbehmane.
Tu peux faire :
$node = node_load(arg(1));
if ($node->type == 'truc') {
$cssclass = 'node-truc';
}
if ($node->type == 'machin') {
$cssclass = 'node-machin';
}
$output = '....
La fonction arg() http://api.drupal.org/api/function/arg/6 permet de récupérer les arguments du path.
La fonction node_load() http://api.drupal.org/api/function/node_load/6 charge le node en objet.
Si sa fonction est dans
Permalien Soumis par mbehmane le 5 Mai, 2010 - 08:54
Si sa fonction est dans template.php ça ne marchera pas donc d' ou appelle tu cette fonction. Ou veut tu ke l affichage se fasse dans node.tpl.php???
Bonjour, OK, je n'avais pas
Permalien Soumis par cogicube le 5 Mai, 2010 - 09:23
Bonjour,
OK, je n'avais pas compris.
En fait, c'est le module d-s qui gère la fonction elle est appelée dans ce module.
Mais je n'ai pas le temps de fouiller plus avant car j'ai trouvé la solution : "display suite" est vraiment formidable car on peut créer des styles pour chaque champ.
Donc, je n'ai plus besoin de cette fonction.
Je te remercie néanmoins.
Cordialement
Serge