Le filtre “J’ai de la chance !” II

Voici une évolution du filtre j’ai de la chance pour spip qui, ma foi, rend la contrib pour le moins indispensable.

Je réexplique la fonctionnalité pour ceux qui n’auraient pas encore compris. C’est un filtre de contenu auquel correspond un nouveau raccourci : [!quelque chose]

Ex: quand j’écris [!spip] dans un article, il est transformé en un lien qui renvoie vers http://www.spip.net

Cà évite de taper l’url en entier chaque fois qu’on en a besoin.

Comment çà marche ? C’est tout simple, j’utilise la fonction “J’ai de la chance” de Google [1].

Ce qui fait que si j’écrit [!spip], cela produit l’url http://www.google.fr/search?hl=fr&q=spip&btnI= [2] qui redirige automatiquement vers le site de spip.

Quoi de neuf dans la version II ? Et bien maintenant plutôt que d’avoir http://www.google.fr/search?hl=fr&q=spip&btnI= dans votre article, maintenant vous avez la vraie url, soit http://www.spip.net.

Pour ce faire, j’ai utilisé la fonction de Metin Arman qui permet de renvoyer l’ultime redirection produite par une url.

Pas mal non ?

Mais on peut s’en servir pour d’autres utilisations. Exemple, un glossaire par mot clé synonyme, c’est à dire dont le mot clé n’est pas défini dans la base.

Si je créé ce raccourci wikipedia [?Appliquette] ( ex: Appliquette), Wikipedia renvoie sur le moteur de recherche car aucun lien n’a été défini pour ce mot. On voit d’ailleurs dans les résultats que le premier est le bon : applet.

On va modifier le code ci-dessous pour que le raccourci renvoie directement sur la page pour applet. C’est simple, il suffit d’ajouter dans la requête de google (le paramètre q de l’url) :

site:fr.wikipedia.org

Ce qui donne :

        return preg_replace('@\[\!(.+?)\]@e', "'<a class=\"spip_out\" href=\"'.getLocation('www.google.fr', '/search?hl=fr&q='.urlencode('\\1').'+site%3Afr.wikipedia.org&btnI=').'\">\\1</a>'", $texte);

On pourrait même utiliser plusieurs glossaires et renvoyer la définition de celui qui est le plus pertinent pour le mot clé !

Pour installer ce filtre dans votre site SPIP, éditez le ficher ecrire/mes_options.php3 et insérez les lignes suivantes :

/*
 *   +----------------------------------+
 *    Nom du Filtre :    J'ai de la chance II
 *   +----------------------------------+
 *    Date : mercredi 12 septembre 2006
 *    Auteur :  Balluche      + balluche PtJ free.fr                                      
 *   +-------------------------------------+
 *    Fonctions de ce filtre :
 *     Appelle la fonction "J'ai de la chance" de Google sur un mot clé
 *   +-------------------------------------+ 
 *  
 * Pour toute suggestion, remarque, proposition d'ajout
 * reportez-vous au forum de l'article :
 * http://balluche.free.fr/?992/Le-filtre-J-ai-de-la-chance-II
*/

//author : Metin Arman on 27/01/2002 for zend forums
//url : http://www.zend.com/phorum/read.php?num=3&id=14652&thread=14626
function getLocation($host, $path ='/')
{
	$http_ver = '1.0'; // version 1.0 ar 1.1
	$fp = fsockopen ($host, 80, $err_no, $err_str, 30);
	if (!$fp) {
		echo "ERROR: $err_str ($err_no)<br>\n";
	}
	else {
		if ($http_ver == '1.0') {
			fputs ($fp, "GET ".$path." HTTP/1.0\r\n\r\n");
		}
		else {
			fputs ($fp, "GET ".$path." HTTP/1.1\r\nHost:".$host."\r\n\r\n");
		}
		while (!feof ($fp)) {
			$line = fgets($fp, 4096);
			if (eregi("location:", $line)) {
				$headers_tmp = split(" ", $line, 2);
				$location = trim($headers_tmp[1]);
				break;
			}
			else {
				$location = 0;
			}
		}
		fclose ($fp);
	}
	return $location;
}

//balluche:24/02/2006:Appelle la fonction "J'ai de la chance" de Google sur un mot clé
//12/07/2006:j'utilise la fonction de Metin Arman pour récupérer l'url finale
function chance($texte)
{
	return preg_replace('@\[\!(.+?)\]@e', "'<a class=\"spip_out\" href=\"'.getLocation('www.google.fr', '/search?hl=fr&q='.urlencode('\\1').'&btnI=').'\">\\1</a>'", $texte);
}

//si cette fonction existe déjà, il faut insérer les lignes avant le return
function avant_propre($texte) {
   $texte = chance($texte);
   return $texte;
}

// FIN du Filtre chance
?>

Footnotes

[1Voir le bouton en page d’accueil

[2Cliquez pour voir.

updated on 4 June 2007

Discussion

Aucune discussion

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom