Bonjour
Je fais appelle à vos lumières car quelques trucs m’échappe pour «thèmer» les liens.
Voici ce que je cherche à faire
Je veux changer le style des liens «en savoir plus». Le truc un peu «tricky» c’est que mon site est diviser en 3 parties. Chaque lien «en savoir plus» de chaque partie à une couleur différente.
De plus sur la page d’accueil, on retrouve des news des trois parties (avec leur couleur respective).
J’ai déjà utilisé la fonction NOMDEMONTHEME_links($links, $attributes = array(‘class’ => ‘links’))
dans le fichier template.php pour changer l’aspect de mes liens primaires et secondaires.
Je voulais faire de même avec les liens en savoir plus.
J’ai essayé d’utiliser le même appel que pour les liens primaires :
print theme(‘links’, $primary_links, array(‘class’ => ‘mainmenu’, ‘id’ => ‘navlist’)) ;
Pour mes liens en savoir plus :
print theme(‘links’, $links, array(‘class’ => ‘categorie1’)) ;
à la place de print $links
et de passer le nom de ma classe dans l’array $attributes.
Malheureusement, rien ne s’affiche.
Est-ce que c’est impossible à faire avec cette méthode ?
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Je précise qu’en modifiant la fonction NOMDUTHEME_links() dans le fichier template.php, je peux déjà faire des changements sur mes liens.
Le problème sur lequel je butte c’est «Comment récupérer la catégorie du node pour afficher le lien de la couleur correspondante»
Question subsidiaire, est-ce que l’on peut récupérer l’objet $node dans le fichier template.php
mougeole
40
Normalement, on peut récupérer l’objet $node, et le type avec $node->type.
Tu peux essayer de faire un
print_r($node);dans ton template.php pour voir le contenu de l’objet $node.
vincent59
2594
Merci pour ta réponse
Petite précision, on ne peut pas récupérer l’objet $node dans template.php
Par contre je peux le récupérer dans mon template de node (node-actualite.tpl.php)
C’est dans ce fichier que je test le type, dans mon cas il s’agit du champs $node->field_type_pole_actualite[0][‘value’] (j’aurais pas deviner le nom du champs comme ça, merci print_r)
je fais ensuite un replace
<?php$replace = array('<a' => '<a class="'.$class.' ');
$links = strtr($links, $replace);
?>
$class étant initialisé avec la valeur du champs type_pole_actualite
mougeole
40
Sisi on peut recupere l’équivalent de $node dans template.php.
C’est même là qu’il faut le faire, le moins possible de php dans les fichiers tpl, pitié :)
template.php
<?phpfunction MyTHEME_preprocess_node(&$vars, $hook) {
$node = $vars['node']; // :) ca sert a rien a part expliquer le truc :)
// sinon un print_r($vars) c'est très instructif [...]do some stuff here [...]
}
?>
Haza.fr
Drupal, sans fondements
Haza
1593
Ca ca me semble intéressant. Je vais creuser cette solution
mougeole
40
Bonjour,
Allez, hop !, je prends le rique de poser une question bête : si tu ne veux modifier que les styles et couleurs des liens «En savoir plus», pourquoi ne pas simplement utiliser les propriétés CSS ?
Drupal en français
Pomliane
82
oui, pareil !
tu parles de vouloir styler les liens «En savoir plus», alors utilises donc les styles css :-)
Ces liens sont identifiés (node_read_more…)et tu dois pouvoir distinguer les différentes couleurs que tu souhaites mettre en place, grâce aux id de tes différents blocs, views ou autres panels…
L’idée là, c’est qu’on parle d’apparence et non de contenu, donc la logique veut qu’on ne touche pas aux templates (surtout que là, il n’y a pas besoin), mais aux feuilles de styles… enfin, c’est mon avis :-)
Wabby
204
Je suis d’accord. Il s’agit bien là d’apparence.
Seulement voilà. J’ai 3 blocs par catégorie plus un résumé des news sur la page d’accueil.
Sur la page d’accueil je dois donc avoir dans le même bloc un lien orange, un lien bleu et un lien vert.
De plus si on compte le nombre de bloc on arrive à 10 blocs donc 10 déclarations CSS. Si je veux changer la couleur d’un lien d’une catégorie, je dois changer 3 déclarations css pour un seul lien !!! Je perds alors l’intérêt d’utiliser la cascade CSS.
mougeole
40