Aller au contenu

Organiser les pages résultant d'une recherche


william_dallas

Sujets conseillés

Bonjour,

J'ai récupérer un petit script (https://confluence.cornell.edu/display/CUWEBFORUM/Using+PHP+to+wrap+Google+Search+Appliance+results+in+your+site%27s+template)pour afficher les résultats du moteur de recherche google appliance. Tout marche bien sauf que lorsqu'un mot clé est présent sur de nombreuses pages, voici ce qui s'affiche sur mon site :

Result page: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

J'aimerai plutot présenter ca de la facon suivante :

Result page: < 1 2 3 ... 97 98 >.

Voici la fonction qui retourne les pages :

public function getResultsetLinks() {
$links = array();
for ($resultsPageNum = 1; $resultsPageNum <= $this->lastResultsPageNum; $resultsPageNum++) {
if ($resultsPageNum == $this->resultsPageNum) {
$links[] = $resultsPageNum;
} else {
$url = $this->baseQueryURL . "resultsPageNum=" . ($resultsPageNum);
$links[] = "<a href=\"$url\">$resultsPageNum</a>";
}
}
return $links;
}

Si vous avez une idée, je suis preneur!

Merci

P.S: si vous voulez voir la totalité du code, télécharger le CUSD_Search.zip

Lien vers le commentaire
Partager sur d’autres sites

Essaye avec ça (et dis-moi si ça ne marche pas, je n'ai pas pu le tester) :

public function getResultsetLinks() {
$links = array();
$autour = 2;
$debut = $fin = false;
$intervalle = '... ';
$num_debut = $this->resultsPageNum-$autour;
$num_fin = $this->resultsPageNum+$autour;
$tab_autour = array();
for($i = $num_debut; $i <= $num_fin; $i++)
$tab_autour[] = $i;
for ($resultsPageNum = 1; $resultsPageNum <= $this->lastResultsPageNum; $resultsPageNum++) {
if($resultsPageNum == 1 || $resultsPageNum == $this->lastResultsPageNum || in_array($resultsPageNum, $tab_autour)) {
if ($resultsPageNum == $this->resultsPageNum) {
$links[] = $resultsPageNum;
} else {
$url = $this->baseQueryURL . "resultsPageNum=" . ($resultsPageNum);
$links[] = "<a href=\"$url\">$resultsPageNum</a>";
}
}
elseif($resultsPageNum != $this->resultsPageNum && !$debut) {
$links[] = $intervalle;
$debut = true;
}
elseif($resultsPageNum != $this->resultsPageNum && !$fin) {
$links[] = $intervalle;
$fin = true;
}
}
return $links;
}

Je viens de rédiger un article sur le sujet, si tu souhaites plus d'explications : Gestion d'un système de pagination.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse mais ca ne marche pas tout à fait comme je le veux. Maintenant j'obtiens ceci :

Result page: 1 ... ... 98 >

Et si je clique sur suivant les pages ne change pas, c'est toujours la 1 et la 98.

Je voudrais que lorsqu'on clique sur "suivant" le Result page deviennent : 2 ... ... 98 >

Si tu as une idée pour corriger ca, ca serait parfait, moi je vais essayer aussi et je te tiens au courant.

++

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...