dotclear,plugin,google

Voici un nouveau plugin pour Dotclear2 qui a comme objectif de proposer des articles contenant un ou plusieurs des mots clefs utilisés par votre visiteur lors de sa précédente recherche dans Google.

Ce plugin permet de diminuer le nombre de rebonds et permet de garder vos nouveaux visiteurs plus longtemps sur votre blog.

Attention : Ce plugin ne fonctionne pas avec les plugins "memCache" et "staticCache".

Comment ça marche ?

Le plugin analyse les mots clefs passés dans le champs REFERER de la requête HTTP envoyée par le visiteur et propose une liste de billets qui peuvent correspondre à ce que recherche le visiteur.

La méthode est un peu intrusive, mais l'objectif de ce plugin est de proposer au visiteur le contenu qu'il recherche.

Télécharger le plugin

Voici les fichiers de ce plugin :

Installer le plugin

Après avoir installé ce plugin, éditez le fichier "post.html" de votre thème Dotclear2 et insérez le tag :

{{tpl:googleSpyPurposePosts num_links="6" num_keywords="3" title="A lire : " description="ce que vous voulez"}}

En dessous de :

<div class="post-content">{{tpl:EntryContent}}</div>
  • num_links = Le nombre billets à rechercher dans la base.
  • num_keywords = Les 'n' premiers mots clefs google à utiliser dans la recherche d'article, plus ce chiffre est grand plus le temps d'affichage de la page peut devenir important.
  • title = Le titre à positionner au dessus de la liste de liens.
  • description = Le texte qui s'affichera en dessous du titre (title).

Liste des mises à jour :

v0.1 :

  • Première release.

v0.2 :

  • Ajout d'un filtre sur les mots clefs de recherche.
  • Externalisation des paramètres.
  • Modification de la requête SQL.

v0.3 :

  • Mise en minuscule des mots clefs de recherche.
  • Correction de la requète SQL.

v0.4 :

  • Correction du split sur la chaine de caractères qui était incorect.
  • Correction du filtre sur les mots clefs.
  • Ajout de mots anglophone dans le filtre.
  • Ajout du paramètre "description"

v0.5 :

  • Correction de l'encodage du descriptif du plugin
  • Ajout d'une page d'aide dans le panneau d'administration de Dotclear2
  • Prise en compte de vos patch (numlink, vérification de la présence du REFERER, multi-blog).

v0.6 :

  • Gestion de Google Blogsearch

v0.7 :

  • Exclusion du billet en cours de lecture de la liste des billets proposés.
  • Mise en gras des mots recherchés dans la liste des billets proposés.

TODO :

  • Rendre paramétrable la liste des mots à exclure de la recherche.

Dotclear Labs

Ce plugin a été mis sur le Dotclear Labs :

http://lab.dotclear.org/browser/plugins/googleSpy

1. Le , 00:49 par tony
6babdf983d804779501947dd2f07e306

heu... tu pourrais nous faire voir en nous demandant de trouver ton blog en tapant des mots clés sous google ?

2. Le , 16:45 par Arnaud Boudou
42ee2952b5608cd39913003eaca62d2d

Salut, et tout d'abord merci pour ce plugin utile. En revanche, j'aurais quelques remarques (que j'espère constructives) à apporter :
- ne remonter que les articles pour lesquels « post_status » est égal à 1. Je ne pense pas qu'il soit souhaitable d'afficher les articles non publiés.
- trier les articles par « post_dt ». On peut très bien modifier un article pour le mettre à jour, et en même temps actualiser sa date de publication. Donc autant afficher les articles dans le même ordre que sur le blog.
- limiter la recherche plutôt à 10 articles que 5, pour laisser plus de choix (encore que ça doit dépendre des goûts des gens).
- ne pas inclure dans la recherches les mots de moins de 3 caractères. A priori, les articles comme « de », « du »,« le », etc sont peu pertinents.

3. Le , 21:52 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Pour tony :

http://www.google.fr/search?q=dotcl...

Pour Arnaud :

Merci Arnaud, c'est vrai que j'ai vite diffusé le plugin sans trop rentrer la tête dans le base de DC2.

Pour le filtre sur les mots j'y ai pensé et je vais rapidement le mettre en place

Pour le nombre d'articles je vais mettre un paramètre configurable.

Il faudrait aussi pouvoir avoir un système intelligent qui calcul le poids de chaque mot en fonction de leur fréquence d'utilisation.

Bref plein d'idées sont possibles, je vais diffuser une v0.2 dès ce soir.

Bonne soirée.

4. Le , 23:50 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Voilà la version 0.2 est en ligne. Le nombre d'articles à afficher et le nombre de mots à prendre en compte sont paramètrables.

Un fltre sur certains mots a été ajouté.

;-)

5. Le , 00:13 par pm2036
9ee6b4b9cd0aa7107ed4f90103f05173

C'est une idée géniale et un plugin plus que sympa.

Par contre, il faut désactiver le cache des templates pour que ça fonctionne :-( Sinon, on a que la première recherche mise en cache ou rien.

6. Le , 00:33 par pm2036
9ee6b4b9cd0aa7107ed4f90103f05173

Aller j'active le mode spam^^ on pourrait aussi imaginer coupler le plugin avec un système basé cette fois-ci sur les tags du billet ou bien les mots du corps du billet.

7. Le , 07:41 par Arnaud Boudou
42ee2952b5608cd39913003eaca62d2d

Merci pour cette version 2. Il subsiste juste un petit problème :)

la façon dont les requêtes SQL sont construite donne la chaîne suivante : « WHERE P.post_status=1 AND mot_clef_1 OR mot_clef2 OR mot_clef_3 » alors que la bonne requête doit être « WHERE P.post_status=1 AND (mot_clef_1 OR mot_clef2 OR mot_clef_3) ». Dans le premier cas, on remonte les billets pour lesquels on a « (P.post_status=1 AND mot_clef_1) OR mot_clef_2 OR mot_clef_3 »

8. Le , 08:27 par Arnaud Boudou
42ee2952b5608cd39913003eaca62d2d

Et un autre commentaire pour la route : avant de lancer la recherche, il faut convertir les mots clefs en minuscules : la recherche SQL est sensible à la casse, et tous les mots stockés dans le champ post_words sont en minuscules. Donc il suffit que les mots clefs comportent une majuscule pour ne pas être trouvés.

9. Le , 11:47 par mrnico
a8f855097bf5c047bec33a71ad41cf05

Super idée, merci !

10. Le , 21:06 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

pm2036 : Mon cache TPL est activé et tout marche (tpl_use_cache = true). Le cache TPL garde des fichiers PHP en cache et pas des pages HTML statiques.

Arnaud Boudou : Bien vu ! Je corrige ça de suite !

mrnico : Merci :-)

11. Le , 21:06 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Voilà la version 0.3 corrige tous les problèmes.

Bonne soirée !

12. Le , 21:39 par mrnico
a8f855097bf5c047bec33a71ad41cf05

tout baigne !

13. Le , 22:12 par Arnaud Boudou
42ee2952b5608cd39913003eaca62d2d

Et une nouvelle remarque dont la correction sera peut-être moins triviale.

J'ai dans ma liste de termes à ignorer " on " et " your ". Avec la recherche Google « play mp3 on your tomtom », le but est de ne considérer que les termes « play mp3 tomtom ». Sauf que le str_replace ne traite les occurences à remplacer que les unes après les autres.

Donc dans ce cas, on a un premier remplacement qui donne la chaîne « play mp3+your tomtom ». Du coup, " your " sera ignoré, vu que dans la chaîne il est sous la forme "+your ".

Bref, il y a un problème lorsque plusieurs termes à ignorer se suivent.

14. Le , 00:05 par jipi
4afd0db70d6b829634cf5e91c146eaf0

Quelle bonne idée que ce plug in. Merci pour ce bon boulot. Et quelle réactivité pour les corrections. Chapeau !

15. Le , 16:51 par Guillaume
48b0599250e14f0d51bcf802a277d0ec

Salut et merci pour ce plugin génial.

Je connaissais déjà ce truc sous wordpress et j'avoue qu'un tel plugin porté pour dotclear est top.
Juste une petite remarque pour l'améliorer encore

ligne 76 de _public.php tu as $buffer.="</ul><br><small>";
or pour etre valide xhtml il faudrait mettre $buffer.="</ul><br /><small>";

Autre chose est il prévu de pouvoir mettre en dessous du titre un texte explicatif du style :
"Bonjour, vous venez de www.google.fr (ou .com en fonction d'où vien l'internaute) à la recherche d'information sur MOTS CLES.
Ces articles peuvent vous intéresser :
.article 1
.article 2
.etc ..."

Merci encore en tous cas

16. Le , 17:07 par pm2036
9ee6b4b9cd0aa7107ed4f90103f05173

@prospere: effectivement ça fonctionne ^^ (la prochaine fois je réactualiserais correctement mon cache!)
Et mon deuxième commentaire était complétement HS! ça m'apprendra à poster en pleine nuit^^

Juste une remarque si le mot clé cherché pointe vers la page mais qu'il n'y a pas de post trouvé malgré tout, ça affiche "A lire:" puis rien.
Pour remedier à ça, juste avant le buffer, j'ai rajouté: if(!$rs->isEmpty())
et comme ça ça ne m'affiche quelque chose que si il y a des liens à afficher.

17. Le , 23:55 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Arnaud Boudou : J'ai modifié le filtre, il fonctionne parfaitement maintenant après plusieurs tests.

jipi : Merci !

Guillaume : La balise BR est déjà fermée dans la v0.3. Peux-tu confirmer ? L'option du texte descriptif fait parti de la version 0.4.

pm2036 : La version 0.4 check le nombre de posts trouvés

18. Le , 07:56 par Gilles
e61f975f361326a3e44b5b8b5f48b943

Salut.
Testé et surpris.
Test : dans "google.fr" => leader price pain => http://gilles.wittezaele.fr/blog/po...
A lire..., propose un autre billet qui me laisse songeur (aucun rapport entre eux) et surtout... URL fausse au niveau du chemin (je suis en path info).

19. Le , 10:27 par Arnaud Boudou
42ee2952b5608cd39913003eaca62d2d

Gilles : personnellement, ça ne me choque pas. Si l'on recherche le mot clef « price » sur ton blog, ça remonte le billet sur la Wii. Il faut savoir que cette extension remonte les billets pour lesquels il y a au moins un des mots clefs.

20. Le , 13:53 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Gilles tu as raison pour l'URL des l'articles, ils étaient relatif et pointait donc sur une page non connue.

Tu peux tester la nouvelle version du plugin pour voir si elle corrige le problème ?

Concernant les articles proposés, la recherche est basée sur un OR au niveau des mots clefs.
Je peux diffuser un plugin qui puisse supporter les recherches "OR" et "AND" ?

Le probléme est que la pertinence des articles sera meilleur, mais sur des petits blogs potentiellement, il n'y aura aucun article trouvé.

21. Le , 15:07 par Guillaume
48b0599250e14f0d51bcf802a277d0ec

Prospere,

Désolé de répondre si tard, c'est juste une question de sémantique XHTML.
Je sais je fais mon chieur mais bon ;)
En XHTML il ne faut pas utiliser <br>, mais <br /> tout simplement

Sur l'exemple de gilles, je constate une chose : dans la liste des billets connexe, il y a le billet lui-même. Ne serait il pas judicieux de l'enlever de cette liste ?

22. Le , 15:07 par Guillaume
48b0599250e14f0d51bcf802a277d0ec

Prospere,

Désolé de répondre si tard, c'est juste une question de sémantique XHTML.
Je sais je fais mon chieur mais bon ;)
En XHTML il ne faut pas utiliser <br>, mais <br /> tout simplement

Sur l'exemple de gilles, je constate une chose : dans la liste des billets connexe, il y a le billet lui-même. Ne serait il pas judicieux de l'enlever de cette liste ?

23. Le , 15:10 par Guillaume
48b0599250e14f0d51bcf802a277d0ec

J'oubliais,

merci pour la possibilité de description, c'est bien pratique ;)

24. Le , 15:23 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Guillaume, dans mon plugin le BR est correctement fermé ... ?!?

$buffer.="</ul><br/><small>";

25. Le , 15:24 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Il faut que je trouve une solution pour faire disparaitre le billet ...
Je vais certainement faire passer le post_id dans le paramètre du TPL.

26. Le , 09:41 par Guillaume
48b0599250e14f0d51bcf802a277d0ec

Propsère oui il est correctement fermé mais il faut un espace entre <br et /> en XHTML
toi tu as :
<br/> alors qu'il faut
<br />

Enfin dernière chose pour que ce soit la classe totale ;)
un index.php avec les explications d'installation et un exemple (image par exemple) et éventuellement l'historique des versions
En gros tes paragraphes : Comment ça marche ? | Installer le plugin | Liste des mise à jour
de ce billet :)

27. Le , 12:39 par lolo
41220b0e4aad81969496e3b75c3d0ba1

hello et merci pour ton plugin !
pourrais tu ajouter un utf8_encode() dans title et description ? (pour les accents).
merci.

28. Le , 20:33 par castor.toma
c60ed5b8615cc971c0ab9c633166beea

Est-il possible de faire une version où les articles proposés ayant le même sujet proviendront de tout les blogs de la plateforme ?

29. Le , 20:41 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

lolo, le titre et la description de quoi exactement ?
La description du plugin ?

30. Le , 20:48 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

castor.toma oui c'est tout à fait possible, d'ailleurs c'est le cas, la requête la requête réalisée cherche dans tous les blogs de la plateforme.

D'ailleurs c'est un bug que je n'avais pas encore remarqué. Il faudrait pouvoir rendre paramètrable l'option d'aller chercher sur les autres blog.

31. Le , 21:10 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

La page d'admin du plugin est en cours de réalisation. Une v0.5 sera diffusée dans la semaine.

32. Le , 23:22 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Quelqu'un a une idée de comment récupèrer l'id du billet courant au niveau de la requête SQL du plugin ?

$strReq ='SELECT P.post_url, P.post_title FROM '.$core->prefix.'post P WHERE P.post_status=1 and P.blog_id="'.$core->blog->id.'" and P.post_id !=

Je cherche à exclure le billet en cours d'affichage de la requête.

Si quelqu'un a une solution propre ...

33. Le , 07:14 par Phoenix
05a91228c6a82f5bbbc97e9d031a813c

J'ai du corriger ton plugin :)

if ( preg_match( $google_str,$_SERVER['HTTP_REFERER']) ) {
devient: if ( isset($_SERVER['HTTP_REFERER']) && preg_match( $google_str,$_SERVER['HTTP_REFERER']) ) {

et
$strReq .= "LIMIT 0,$numLinks";
devient: $strReq .= $core->con->limit($numLinks);

34. Le , 07:14 par Phoenix
05a91228c6a82f5bbbc97e9d031a813c

Heu sinon c'est un super plugin merci :)

35. Le , 10:28 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Phoenix merci pour tes commentaires, je vais corriger le plugin ASAP

36. Le , 12:56 par Phoenix
05a91228c6a82f5bbbc97e9d031a813c

tu peux aussi le rendre compatible multiblog :)
après le try{ tu met:

$blog = &$core->blog;
$blogid = $blog->id;

et ta requètes devient:

if (count($keywords) > 0){
$strReq ='SELECT P.post_url, P.post_title '.
'FROM '.$core->prefix.'post P WHERE P.post_status=1 '.
' AND blog_id=''.$blogid.'''.
' AND (';

c'est mieux :-)

37. Le , 23:28 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Voilà la version 0.5 est diffusées. Je n'ai pas trouver le moyen d'exclure le titre en cours d'affichage dans les propositions. Toujours pas d'idées ?

38. Le , 17:33 par Dagrouik
92b94689a9beb000d49bd3745ed68402

est-il possible de faire la même chose pour les requêtes blogsearch de Google ?

39. Le , 23:31 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Et oui .. C'est tout à fait possible et très simple en plus.

J'ai mis à jour le plugin, une version 0.6 supporte Blogsearch maintenant.

40. Le , 23:20 par chrys
352af5ec914a97029ba1773bdb32a3b9

Bonsoir,

j'utilise la 0.4 depuis pas mal de temps et je vais installer la 0.6 :)

une question :

A partir de ce plugin, est-il possible de faire un autre plugin du même genre qui consisterait à afficher dans une colonne du blog un widget comme ceci à titre d'exemple :

Titre h2 du widget par exemple :
"Mots clés recherchés sous Google"

puis, le widget affiche les mots clés recherchés par les internautes en vertical les uns à la suite des autres, par exemple :

ikea | grenoble | inauguration

au final, on aurait un widget qui afficherait en liste par exemple, les 5 dernieres requetes :

--

Ils sont tombés sur ce blog en tapant sous Google :

- grenoble | ikea | inauguration
- politique | grenoble | municipales
- prefecture | grenoble | carte | grise
- association | grenelle | alpes
- poubelle | grenoble - tramway

but : faire ressortir en page d'accueil dans une colonne les mots clés des internautes ayant choisi google pour nous trouver. Souvent, c'est rigolo de constater la serie de mots clés tapés par les internautes qui ont directement cliqué sur un lien google pour attérir sur nos blogs.

j'ai aussi vu ce genre de truc sur le blog - Grand Rouen - en haut à droite de ce blog, allez voir : en y accédant en recherchant sous google "grand rouen derby" (1er lien, 1ere page google)

est-ce une bonne idée ?

41. Le , 00:33 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Il faudrait pour cela garder en base de données les derniers mots clefs recherchés.

C'est faisable, cela demande juste du temps ;-p

Je cherche toujours une solution pour supprimer l'article en cours de lecture de la liste des articles à afficher. Quelqu'un a une idée ?
42. Le , 11:16 par fabrice
249399a5c73f67e8d81a8c7e8a9e6f67

Ton plugin est super, je le cherchais depuis longtemps.
Mais rien à faire, je suis la procédure mais rien ne s'affiche !!!
Pour preuve avec cette requete :
http://www.google.fr/search?q=diapo...

43. Le , 13:57 par Khaos Farbauti Ibn Oblivion
43a917635a74dba5825921ce67f0d82e

Idem pour moi, je viens d'installer la version 0.6 et rien ne s'affiche.
Quelque soit la recherche google qui m'amène sur mon blog, le bandeau googlespy n'apparait jamais.

44. Le , 19:48 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Vous avez bien mis la tag dans le fichier post.html ?

45. Le , 20:51 par Khaos Farbauti Ibn Oblivion
43a917635a74dba5825921ce67f0d82e

Oui, j'ai bien mis le tag. Juste en dessous du div de post-content

46. Le , 22:03 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

C'est étrange, c'est comme si le regexp ne fonctionnait pas :

$google_str = "/^http:\/\/([a-z]+).google\.([a-z]{2,3})|(co\.[a-z]{2})\//i";

47. Le , 06:31 par Khaos Farbauti Ibn Oblivion
43a917635a74dba5825921ce67f0d82e

Bon j'ai mis des "echo" un peu partout et il semblerait que le problème c'est que la requête SQL n'indique aucun résultat (et donc pas d'article similaire). Cela me parait assez surprenant, donc je vais essayer de manipuler un peu les critères.

48. Le , 06:47 par Khaos Farbauti Ibn Oblivion
43a917635a74dba5825921ce67f0d82e

J'ai trouvé pourquoi cela ne fonctionnait pas chez moi. Lors de la construction de la requête SQL, on avait : and P.blog_id="'.$core->blog->id.'"

Or pour que cela fonctionne chez moi, il faut que la valeur de blog_id soit entre quotes et non pas entre guillemets (donc : and P.blog_id=''.$core->blog->id.'\' )

Du coup cela m'étonne que cela puisse marcher pour d'autres personnes.

49. Le , 13:26 par Khaos Farbauti Ibn Oblivion
43a917635a74dba5825921ce67f0d82e

Oulah... désolé pour le flood

50. Le , 22:45 par Looic
3d8bdd2df06741fe7d05f9c2085f410b

Super plugin qui mérite à être connu.A référencer sur plugins.dotaddict.org !!

51. Le , 13:02 par Phoenix
05a91228c6a82f5bbbc97e9d031a813c

Je confirme la correction de Khaos Farbauti Ibn Oblivion en tout cas en ce qui concerne une base PostgreSQL.
Je pense que c'est valable aussi pour MySQL.

Courage, super plugin :)

52. Le , 09:54 par Fran6t
4ff83a9dd8406af8e3f5257d67ce51fb

Le lien dans a propos devant renvoyer sur ce billet est mauvais il fait revenir ici sur une erreur 404. Rien de grave mais cela doit augmenter tes stats de 404.
A+

53. Le , 16:52 par Pilou
ad41282d0455866bf1e978474b0e4332

Ludovic,
Ce plugin a t il été mis à jour pour pour DC2 RC1 ?
Merci de ta réponse !!

54. Le , 23:58 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

Oui Pilou,

Il fonctionne pour la RC1 ;-)

Par contre il n'est pas compatible avec tout les systèmes de cache.

55. Le , 00:03 par Pilou
ad41282d0455866bf1e978474b0e4332

Cool merci pour ta réponse.
Autre petite question : Tu as migré en RC1 ? tu utilises quels plugins ? tu as rencontré des probkèmes de compatibilité avec la béta 7?
Désolé pour mes question. Je sais que t'es pas la pour faire du support :):)

56. Le , 18:10 par pas perdus
5eb9cf5d4844ab50ca9978956eafd4d7

ça ne fonctionne pas chez moi...

57. Le , 09:29 par Osku
71294afafc072fedbf916367394f3e41

Salut Ludovic, quelques petites remarques :

  • Pourquoi n'utilises tu pas le behavior publicEntryBeforeContent ?
  • Dans la fonction bold je préférerais un <span class="GoogleSpy"> pour identifier les mots de la requête.

C'est mon avis :) sinon ça a l'air chouette. Et bienvenue sur le Lab

PS : merci pour les photos de dimanche aussi (oui je suis dessus)

58. Le , 09:52 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

@Osku : Merci pour tes deux remarques, c'est très gentil d'avoir jeté un coup d'oeil sur mon plugin. Tes remarques feront l'objet d'une 0.8 ;-)

59. Le , 02:40 par Nothing
fe5a14bfa0369cb0e2dbf189c7768221

Merci pour ce plugin mais ... il ne mache pas :(

J'ai vidé le cahe de mon répertoire, j'ai suivi la doc et donc j'ai :

<div class="post-content">{{tpl:EntryContent}}</div>

tpl:googleSpyPurposePosts num_links="6" num_keywords="3" title="A lire : " description="ce que vous voulez"

(hem, le blog formate le code html en texte...)

... sans succès aucun !

Alors comment debugguer, pour savoir où ça bloque ?

Qu'en est-il de la correction de "Khaos Farbauti Ibn Oblivion" ? Est-elle intégrée dans la version en téléchargement ?

Ce plugin est vraiment celui que je recherche depuis des mois ... pas dans l'installteur DotAddict d'ailleurs ? :(

J'espère vraiment avoir une petite réponse, merci d'avance !

60. Le , 15:59 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

@Nothing : Tu utilises un plugin de cache ? Comment as-tu testé le plugin (via une recherche sur Google ?). Merci.

61. Le , 02:44 par Goudie
72a11479d1b6916920cbb8cd84c85586

Je n'ai pas réussi à faire fonctionner ce plugin avec la dernière version de Dotclear. J'ai testé des requêtes... rien ne s'affiche :-( .

Dommage, il a l'air vachement pratique !

62. Le , 18:20 par michael
cbaf1b05d0a7264e9896ad8f8a99209f

bonjour a tous!
j'ai trouvé un jeu concours pour gagner un Coque iPhone 4/4S
http://www.jouerconcours.com/jeux-c...

bonne chance a tous

Ajouter un commentaire

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