Lorsqu'on atterit sur une page d'un site SPIP après une recherche les mots recherchés se trouvent surlignés. C'est assez utile. Mais cela gâche aussi l'apparence de la page. Une fois qu'on se décide à lire la page on peut vouloir « éteindre » le surlignement. Est-ce que un plugin existe qui propose déjà cette fonctionnalité ?
On 16/04/10 17:40, Guy Cesaro wrote:
> Tu fais un squelette sans le surlignement et un bouton modifie le
> squelette appelé en conservant les paramètres ? Tout ça dans des inclure
> ajax ?
Euh... Un autre squelette ? Cela veut dire quand même recharger la page, non ?
Moi je pensais plutôt afficher un bouton «Eteindre» si la présence des <span> surlignement est détectée. Et ce bouton déclenchera une modif CSS de ces spans par jQuery.
recharger le bloc de résultats de recherche sera nécessaire puisque le traitement du surlignage ajoute une class CSS. Ce bloc s’il est dans un inclure peut se recharger sans recharger la page.
Tu fais un squelette sans le surlignement et un bouton modifie le
squelette appelé en conservant les paramètres ? Tout ça dans des inclure
ajax ?
Euh… Un autre squelette ? Cela veut dire quand même recharger la page, non ?
Moi je pensais plutôt afficher un bouton «Eteindre» si la présence des surlignement est détectée. Et ce bouton déclenchera une modif CSS de ces spans par jQuery.
Je ne suis pas sur d’avoir compris mais en ce qui me concerne, j’ai créé le fichier squelettes/inc/surligne.php dans lequel j’ai simplement mis cette fonction :
<?php
function surligner_mots($texte) {
return $texte;
}
?>
De cette façon, SPIP ne surligne plus les résultats de ma recherche.
Lorsqu’on atterit sur une page d’un site SPIP après une recherche les mots recherchés se trouvent surlignés. C’est assez utile. Mais cela gâche aussi l’apparence de la page. Une fois qu’on se décide à lire la page on peut vouloir « éteindre » le surlignement. Est-ce que un plugin existe qui propose déjà cette fonctionnalité ?
recharger le bloc de résultats de recherche sera nécessaire puisque le
traitement du surlignage ajoute une class CSS. Ce bloc s'il est dans un
inclure peut se recharger sans recharger la page.
Il me semble que ça s'était valable avant SPIP 2.
Mais que SPIP 2 fait ça via du javascript, dynamiquement, au chargement de la page...
Et du coup, la question de Paolo a tout son sens !
Heu vite fait comme ça en passant, une solution simple :
Un plugin qui ajoute un lien jQuery (présnet uniquement si #ENV{recherche} vaut quelque chose) qui s'occupe de coller un background transparent à tous les éléments qui portent la fameuse classe "surlinge" et zou...
++
b_b
Le 16/04/2010 18:11, Paolo a écrit :
On 16/04/10 17:40, Guy Cesaro wrote:
> Tu fais un squelette sans le surlignement et un bouton modifie le
> squelette appelé en conservant les paramètres ? Tout ça dans des inclure
> ajax ?
Euh... Un autre squelette ? Cela veut dire quand même recharger la page,
non ?
Moi je pensais plutôt afficher un bouton «Eteindre» si la présence des
<span> surlignement est détectée. Et ce bouton déclenchera une modif CSS
de ces spans par jQuery.
pour info moi j'utilise la syntaxe donnée par denisb
<?php
// On ne veut pas du jaune apres recherche google ou SPIP
// Ca fait tâche avec certains themes
// Et si besoin on definira la classe .spip_surligne
function surligner_mots($page) {
return $page;
}
Ca marche aussi en SPIP 2 et comme thomas je le met dans
squelettes/inc/surlign.php
Fil m'a dit sur irc que le surlignement est dans c'est dans
./prive/javascript/SearchHighlight.js
Il disait aussi dans mes logs
[09:33] <_fil_> oui ça pourrait être mieux fait
[09:33] <_fil_> avec un cookie par exemple
[09:34] <_fil_> à la place de l'analyse du referer
Sinon on peut aussi redéfinir la classe .spip_surligne
Heu vite fait comme ça en passant, une solution simple :
Un plugin qui ajoute un lien jQuery (présnet uniquement si #ENV{recherche} vaut quelque chose) qui s'occupe de coller un background
transparent à tous les éléments qui portent la fameuse classe "surlinge"
et zou...
Oui, exactement cela. Car je veux avoir le surlignement -- mais pouvoir l'éteindre simplement, d'un clic, sans devoir recharger la page.
<a href="#" onclick="jQuery('.spip_surligne').removeClass('spip_surligne');return false;">Eteindre le surlignement</a>
Y a surement une lame du couteau suisse qui fait deja ça.
Cédric
Le 16 avr. 2010 à 22:39, Paolo a écrit :
On 16/04/10 22:25, Bruno Bergot wrote:
Heu vite fait comme ça en passant, une solution simple :
Un plugin qui ajoute un lien jQuery (présnet uniquement si #ENV{recherche} vaut quelque chose) qui s'occupe de coller un background
transparent à tous les éléments qui portent la fameuse classe "surlinge"
et zou...
Oui, exactement cela. Car je veux avoir le surlignement -- mais pouvoir l'éteindre simplement, d'un clic, sans devoir recharger la page.
On 16/04/10 22:46, cedric.morin@yterium.com wrote:
<a href="#" onclick="jQuery('.spip_surligne').removeClass('spip_surligne');return false;">Eteindre le surlignement</a>
Y a surement une lame du couteau suisse qui fait deja ça.
Un plugin qui ajoute un lien jQuery (présnet uniquement si #ENV{recherche} vaut quelque chose)
Le lien/bouton que Cédric propose marche très bien.
Mais le test sur #ENV{recherche} ne marche pas.
- D'abord, prive/javascript/SearchHighlight.js agit non seulement sur des recherches SPIP mais aussi des receherches Google, Yahoo, etc., ou #ENV{recherche} n'est jamais utilisé.
- Et aussi #ENV{recherche} vaut quelque chose seulement sur la page qui présente la liste de liens trouvés. Dès qu'on clique pour passer vers la page d'un de ces résultats #ENV{recherche} disparaît et le surlignement apparaît.
Cela joue (je pense) sur le « referrer ».
Est-ce que avec jQuery il faut relire la page pour voir si une classe spip_surligne existe ?
Ou peut-être SearchHighlight.js nous rend une façon plus direct pour nous dire s'il a trouvé quelque chose sur la page ?
Un plugin qui ajoute un lien jQuery (présnet uniquement si #ENV{recherche} vaut quelque chose)
Le lien/bouton que Cédric propose marche très bien.
Mais le test sur #ENV{recherche} ne marche pas.
- D'abord, prive/javascript/SearchHighlight.js agit non seulement sur des recherches SPIP mais aussi des receherches Google, Yahoo, etc., ou #ENV{recherche} n'est jamais utilisé.
- Et aussi #ENV{recherche} vaut quelque chose seulement sur la page qui présente la liste de liens trouvés. Dès qu'on clique pour passer vers la page d'un de ces résultats #ENV{recherche} disparaît et le surlignement apparaît.
Cela joue (je pense) sur le « referrer ».
Est-ce que avec jQuery il faut relire la page pour voir si une classe spip_surligne existe ?
Il faut tester la présence de la fonction SearchHighlight, ce qui donne ça :
<a href="#" onclick="jQuery('.spip_surligne').removeClass('spip_surligne');return false;" style="display:none;" id="SearchHighlight_off">Eteindre le surlignement</a>
<script type='text/javascript'>
jQuery(function(){
if (jQuery.fn.SearchHighlight && jQuery('.spip_surligne').length)
jQuery('#SearchHighlight_off').show();
});
</script>
On pourrait d'ailleurs ajouter ce bout de script par défaut (dans le du surlignement), ce qui permettrai dans un squelette
de simplement insérer ce qu'on veut avec l'id SearchHighlight_off pour éteindre le surlignement.
On 17/04/10 10:53, cedric.morin@yterium.com wrote:
On pourrait d'ailleurs ajouter ce bout de script par défaut (dans le du
surlignement), ce qui permettrai dans un squelette de simplement insérer ce
qu'on veut avec l'id SearchHighlight_off pour éteindre le surlignement.
Je comprends que tu proposes d'insérer un bout de cela dans SearchHighlight.js pour rendre plus simple à afficher/cacher le lien ? Alors, stp oui !