Aller au contenu

Organiser les pages résultant d'une recherche


Sujets conseillés

Posté

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

Posté

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.

Posté

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.

++

Veuillez vous connecter pour commenter

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



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