hack,technorati

Je viens de finir un petit Hack pour ajouter des Tags Technorati aux tickets de DotClear.

Voici la liste des modifications à réaliser (pour Dotclear 1.21/1.22) :

- Ouvrir le fichier /inc/classes/class.wiki2xhtml.basic.php

- Remplacer le bout de code suivant :

$this->tags = array(
	'em' => array("''","''"),
	'strong' => array('__','__'),
	'acronym' => array('??','??'),
	'a' => array('[',']'),
	'img' => array('((','))'),
	'q' => array('{{','}}'),
	'code' => array('@@','@@'),
	'anchor' => array('~','~'),
	'del' => array('--','--'),
	'ins' => array('++','++'),
	'note' => array('$$','$$'),
	'word' => array('¶¶¶','¶¶¶')
);

par :

$this->tags = array(
	'em' => array("''","''"),
	'strong' => array('__','__'),
	'acronym' => array('??','??'),
	'a' => array('[',']'),
	'img' => array('((','))'),
	'q' => array('{{','}}'),
	'code' => array('@@','@@'),
	'anchor' => array('~','~'),
	'del' => array('--','--'),
	'ins' => array('++','++'),
	'note' => array('$$','$$'),
	'word' => array('¶¶¶','¶¶¶'),
	'tag' => array('','')
);

Recherchez le switch ($tag) et ajouter à l'intérieur des parenthèses :

case 'tag': 
   $res = $this->__parseTag($res,$tag,$attr,$type);
   break;

Rechercher la fonction parseAnchor() et ajouter la fonction ci-dessous juste avant celle-ci :

function __parseTag($str,&$tag,&$attr,&$type)
{

	$name = $this->protectAttr($str,true);
	return '<a href="http://technorati.com/tag/'.$name.'" rel="tag" class="tag">'.$name.'</a> <img src="/public/images/technobubble.gif"/>';

}

Je reconnais que c'est très crade comme bout de code .. mais ça marche ... .

Ensuite, pour ajouter des tags Technorati à vos billet DotClear il vous suffira d'utiliser deux '§' avant et après les mots que vous désirez.

1. Le , 00:47 par Ludovic
d41d8cd98f00b204e9800998ecf8427e

2. Le , 12:26 par JS
d41d8cd98f00b204e9800998ecf8427e

Tiens, tu va peut etre pouvoir me dire à quoi ca sert les tags technorati ?
J'en vois depuis un moment, mais impossible de comprendre à quoi ca sert...

3. Le , 13:44 par Ludovic
d41d8cd98f00b204e9800998ecf8427e

Cela permet à technorati de référencer ton tickets par mots clef et en même temps de permettre aux visiteurs de ton site d'aller visiter les articles référencés sur Technorati correspondants à ces mêmes mots clef

4. Le , 14:42 par JS
d41d8cd98f00b204e9800998ecf8427e

Bon, en tout cas, j'ai testé, et ton hack marche plutot bien
en tout cas, il fait ce qu'on lui demande...

5. Le , 20:01 par Ludovic
d41d8cd98f00b204e9800998ecf8427e

Par contre n'oublie pas d'utiliser le plugin "Ping" à chaque nouveau Billet sur ton blog si tu veux que Technorati référence tes nouveaux billets rapidement

6. Le , 11:37 par JS
d41d8cd98f00b204e9800998ecf8427e

ouais, je sais, ca fait un moment que je l'ai installé, je m'en servais plus depuis un moment, mais là, je vais me relancer...

t'a pas une idée sur comment automatiser le ping ? C'est chiant d'aller cliquer, faudrait arriver à faire en sorte que lorsque tu enregistre, hop, ca ping direct...

7. Le , 12:13 par Ludovic
d41d8cd98f00b204e9800998ecf8427e

Le ping automatique est prévu dans les prochaines version de DotClear .. En attendant ça doit être possible en faisant un appels direct au pluggin "Ping" à chaque nouveau post.

8. Le , 14:29 par JS
d41d8cd98f00b204e9800998ecf8427e

ouaip
faudra que je regarde ca dès que j'aurai un peu de temps :)

9. Le , 21:08 par gUiLe
d41d8cd98f00b204e9800998ecf8427e

Salut ami puteolien

j'en connais un qui c'est fait chié dans le code !!!

Néanmoins bien joué, c'est parfait!

merci !

10. Le , 20:09 par JS
d41d8cd98f00b204e9800998ecf8427e

y'a un bug avec les accents dans les tags, si on en met, la fonction protectAttr() renvoie une chaine vide...
Du coup, j'ai modifié un peu le truc pour que ca encode correctement les accents pour technorati (je sais pas ce que c'est comme encodage, mais en tout cas, y'a pas la fonction php toute faite...) bref, j'y suis allé à tatons et ça marche plutot pas mal :

function protectTags($str, $name=false)
{
$astr1 = array("à", "é", "è", "ê","ï", "ù", "î");
$astr2 = array("%C3%A0","%C3%A9","%C3%A8","%C3%AA","%C3%AF","%C3%B9","%C3%AE");
return str_replace($astr1, $astr2, $str);
}

donc au lieu d'appeler protectAttr() tu appel la nouvelle fonction et c'est niquel !

voilu voilu

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.