Plugin Dotclear2 : GoogleSpy

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 :
- Package : http://www.geeek.org/share/plugin-googleSpy-0.7.zip
- Archive : http://www.geeek.org/share/plugin-googleSpy-0.7.tar.gz
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 :


Commentaires
heu... tu pourrais nous faire voir en nous demandant de trouver ton blog en tapant des mots clés sous google ?
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.
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.
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é.
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.
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.
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 »
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.
Super idée, merci !
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
Voilà la version 0.3 corrige tous les problèmes.
Bonne soirée !
tout baigne !
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.
Quelle bonne idée que ce plug in. Merci pour ce bon boulot. Et quelle réactivité pour les corrections. Chapeau !
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
@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.
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
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).
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.
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é.
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 ?
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 ?
J'oubliais,
merci pour la possibilité de description, c'est bien pratique
Guillaume, dans mon plugin le BR est correctement fermé ... ?!?
$buffer.="</ul><br/><small>";
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.
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
hello et merci pour ton plugin !
pourrais tu ajouter un utf8_encode() dans title et description ? (pour les accents).
merci.
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 ?
lolo, le titre et la description de quoi exactement ?
La description du plugin ?
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.
La page d'admin du plugin est en cours de réalisation. Une v0.5 sera diffusée dans la semaine.
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 ...
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);
Heu sinon c'est un super plugin merci
Phoenix merci pour tes commentaires, je vais corriger le plugin ASAP
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
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 ?
est-il possible de faire la même chose pour les requêtes blogsearch de Google ?
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.
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 ?
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 ?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...
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.
Vous avez bien mis la tag dans le fichier post.html ?
Oui, j'ai bien mis le tag. Juste en dessous du div de post-content
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";
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.
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.
Oulah... désolé pour le flood
Super plugin qui mérite à être connu.A référencer sur plugins.dotaddict.org !!
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
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+
Ludovic,
Ce plugin a t il été mis à jour pour pour DC2 RC1 ?
Merci de ta réponse !!
Oui Pilou,
Il fonctionne pour la RC1
Par contre il n'est pas compatible avec tout les systèmes de cache.
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 :):)
ça ne fonctionne pas chez moi...
Salut Ludovic, quelques petites remarques :
<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)
@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