changer le thème des liens en savoir plus

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

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 ?

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

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

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

<?php
function 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 [...]
}
?>

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 ?

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 :-)

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.