DotClear : remplacer les liens par des images dans le blogroll
Par Benjamin le mercredi 15 décembre 2004, 18h31 - DotClear - Lien permanent - URL miniature
Cette modification s'adresse à tous les gens qui voudraient changer les liens de leur blogroll (liste de liens) par des images. Il faut simplement modifier deux fichiers pour y arriver. On pourra après ça directement mettre l'url d'une image dans le champ Intitulé à la place du texte habituel.
Sous vos yeux ébahis les petites modifications.
dans /ecrire/tools/blogroll/functions.php
//on remplace $link = '<a href="'.htmlspecialchars($href).'"'. ((!$lang) ? '' : ' hreflang="'.htmlspecialchars($lang).'"'). ((!$title) ? '' : ' title="'.htmlspecialchars($title).'"'). ((!$rel) ? '' : ' rel="'.htmlspecialchars($rel).'"'). '>'. htmlspecialchars($label). '</a>'; //par $label = htmlspecialchars($label); $ext = strtolower(substr($label, -4)); if($ext == ".png" || $ext == ".gif" || $ext == ".jpg") { $img = " style=\"background-image:url($label)\" class=\"links_img\""; $url = split("/", $label); $label = "<span>".substr(array_pop($url), 0, -4)."</span>"; } $link = '<a href="'.htmlspecialchars($href).'"'. ((!$lang) ? '' : ' hreflang="'.htmlspecialchars($lang).'"'). ((!$title) ? '' : ' title="'.htmlspecialchars($title).'"'). ((!$rel) ? '' : ' rel="'.htmlspecialchars($rel).'"'). $img. '>'. $label. '</a>';
et on ajoute dans /theme/opinionz/style.css (remplacer par le thème utilisé)
#links a.links_img { /* definir ici le style souhaité */ display: block; width: 80px; height: 15px; background: transparent no-repeat; } #links a.links_img span { display: none; }
On se retrouve avec de belles images dans le blogroll et tout le monde est content 
Commentaires
c'est bien sympa tout ca mais apres coment je fais
suis-je distrait, j'ai oublié de le préciser
voilà, j'ai édité
tu devrais essayer autre chose
du style :
(if) si il y a une image
((!$image) ? '' : ' <img src="'.htmlspecialchars($image).'/>"').
//afficher l'image
(else) sinon
$label.
//afficher le texte
c'est quoi $îmage dans ton exemple ?
moi j'utilise le champ "intitulé" du gestionnaire de liens
Bah chez moi ca fonctionne dans l'admin>gestionnaire de lien je vois bien l'image mais sur mon blog l'image apparait en temps que lien (<img src="chemin de mon image.gif"/>)
dans le champ "intitulé" tu as mis ça ?
<img src="chemin de mon image.gif"/>
si c'est le cas, remplace-le simplement par
chemin de mon image.gif
t'as essayé ce que je t'ais dit ??
$image c'est l'adresse de l'image
dans la mesure où mon exemple fonctionne très bien, je n'ai pas essayé le tien non, mais libre à toi d'utiliser la méthode que tu veux
Marche mieux avec ca
.links_img {
display: block;
width: 80px;
height: 15px;
background: no-repeat;
}
.links_img span {
display: none;
}
l'exemple donné fonctionne très bien avec ce thème, libre à toi bien sûr de faire les modifications nécessaires au bon fonctionnement de la modification sur ta template
Au secours ! Je n'y arrive pas, dés la 1ére image installée, le programme me la répéte pour tous les autres liens et de plus, les 3/4 de l'image sont tronquées ! En vous remerciant par avance...
tu sais que si dans l'exemple j'ai mis 80px et 15px pour la taille des images, tu peux l'adapter à tes besoins et mettant par exemple 48px pour les deux dans ton cas
Salut,

Moi aussi j'ai eu le problème de l'image qui se répète, comme Nextw@y le signale, pour résoudre ce problème il suffit simplement de remettre à zéro la variable $img, juste avant le if par exemple.
C'est pas bien compliqué mais c'est toujours mieux de le signaler
++
JC
PS : c'est quoi ton plugin de prévisualisation là? C'est bien sympa!
salut à tous,

où place t on le [php]"; } $link = '[/php] dans le fichier functions.php
merci d'avance de vos réponses
où place t on le [php]"; } $link = '[/php] dans le fichier functions.php
merci d'avance de vos réponses
bonne question ... pareil
voilà voilà, la colorisation est réparée, c'est plus lisible maintenant je crois
Bonjour,
Merci pour votre code !
J'ai mis le titre du lien-image dans le champ "description" mais il apparaît tronqué et par dessus l'image au lieu d'être en dessous sur 2 lignes.
Comment faire pour le mettre en forme à l'endroit où je veux et dans la police de caractère. Quel est le code à mettre dans la feuille de style pour obtenir le même résultat que vous ?
merci
En fait la légende n'apparaît pas du tout...
ze sais pas pourquoi
merci de votre aide
qu'est-ce qui marche pas ? où ça donc ? donne un peu un lien va
Bonsoir,
Merci de votre réponse. Voici le lien du désastre ...
h t t p : // b u z z . l i t t e r a i r e. f r ee. f r/ d ot c l e a r /
Maintenant l'image est toute rapiécée sous IE avec un bout de texte
et sur Firefox l'image apparaît mais aucun texet.
comprends rien...
Merci par avance pr vos lumières,
c'est vraiment amusant de mettre ton lien comme ça, mais c'est chiant.
le bout de code que tu peux trouver sur ce site populaire est un exemple valable pour des images qui ont toutes la même taille, toi ici tu utilises des images plus grandes
ton image fait 130x93 et dans ta css tu as mis 150x80, c'est déjà mal parti
et puis le texte n'est pas censé apparaître du tout vu le display hidden
Hello;
Merci de ta réponse. Désolée d'avoir mis le lien ainsi, c'était pour éviter les robots.
Je n'arrive finalement pas à mettre l'image comme toi du moins avec le format actuel de mon visuel. Je vais donc le mettre en dur dans la page je pense.
Sinon, petite question bête : dans quel champs inscris tu l'intitulé sous l'image
c'est bien dans "Description" ?
mille mercis de ton aide et très bon réveillon un peu en avance !
l'intitulé sous l'image ? ici c'est juste une image de fond, ya pas de texte...
Je prends l'exemple de l'image sur la droite. Il y a une photo et en dessous inscrit "She wants revenge" c'est cela que j'appelle l'intitulé...
merci !
aaaaaaaah mais non hé, pour ça prend le plugin Cinecturlink !
ah ok ! merci ça sera sans doute plus simple en effet
mille mercis de ta patience,
bonne continuation
Salut Benjamin
Merci pour cette fonction, j'aurais voulu savoir comment la modifier pour ouvoir afficher via blogroll l'image avec à côté du texte, donc toujours le lien en pointant sur l'image, amsi pouvoir mettre du texte à coté via l'interface de blogroll.
Merci beaucoup
Je voudrais savoir si c'est normal que chez moi ça ne marche pas avec IE ? C'est nickel avec Ffox pourtant.... merci ^^
Bonjour
: !
J'ai le meme probleme que celui cité plus haut
l'image est repeté sur tous les autres liens en-dessous
L'autre astuce pour pallier à ce probleme ne fonctionne pas!
L'image fait bien 80px et 15px.
Aidez moi please
Et encore bravo pour ce site
tu pourrais le mettre en place sur ton site pour voir ?
merci
Salut,
merci beaucoup pour cet excellent truc. Par contre, j'ai de gros problèmes d'affichage sur mon site. Pourrais tu me donner un coup de pouce? en ce qui concerne les vignettes , comment faire pour forcer leur taille en redimensionnant l'image d'origine? (quitte à ce qu'elle soit déformée) J'aimerai avoir un damier de vignettes de 45 px de coté, pour que ce soit uniforme. (ou qui s'adapte avec la sidebar, je verrais. en modifiant dans le css, j'obtiens des vignettes de bonne taille, mais l'image est tronquée.
Bravo à toi en tous cas.
accessoirement, j'ai aussi le problème de l'image qui se repete. Actuellement, je n'ai que 3 liens marqués, dont un seul avec une image, et l'image apparait deux fois. j'ai essayé de mettre $img =""; dans le code, mais je dois pas le mettre au bon endroit, car après, j'ai plus rien d'affiché..
bon, j'ai retiré les modif, pas grave. Je verrais ça plus tard.
bonjour je n'arrive vraiment pas, quelqu'un peut m'aider ? je ne trouve pas les memes chose dans le fichier Functions et les autreS?
Voici ma version pour DC2:
../plugins/blogroll/_public.php
__________________________________________
$ext = strtolower(substr($title, -4));
if($ext == ".png" || $ext == ".gif" || $ext == ".jpg") {
$label = ((!$title) ? '' : ' <img src="'.html::escapeHTML($title).'"/>');
}
else {
$label = ((!$title) ? '' : ''.html::escapeHTML($title).'');
}
$link =
'<a href="'.html::escapeHTML($href).'"'.
((!$lang) ? '' : ' hreflang="'.html::escapeHTML($lang).'"').
((!$desc) ? '' : ' title="'.html::escapeHTML($desc).'"').
((!$xfn) ? '' : ' rel="'.html::escapeHTML($xfn).'"').
'>'.
$label.
'</a>';
__________________________________________
tu fais de l'archéologie toi
merci, ça peut servir, c'est gentil.