webleads-tracker

Limiter pager lors d'une recherche

Rémi
Avatar
Bonjour,

Lors d'une recherche par le biais du moteur de recherche (simple), nous avons constaté que le pager peut vite être "envahissant".

Dans le test en question nous avons eu plus de 200 liens dans le pager. L'idéal ça serait de pouvoir proposer un pager avec 5-6 liens : avec la page active, précédente, dernière page, les deux pages suivantes etc. exemple : "<< 1 2 3 ... 200 >>"

Quelqu'un a-t-il déjà rencontré ce problème et réussi à le contourner ?
Le KLUB

Willy [LA MYGALE]
Avatar
Je pense qu'avec un peu de javascript (jquery par exemple) c'est faisable.

Tu masque tous les numéros avec un hide(), tu check la page active $(#pager_current_page).html(), tu affiche les 5 numéros suivants la page active avec une boucle each() et un css display block ?

A tester c'est juste une idée.

Sinon tu demande un dev spécifique chez Medialibs !

Willy
Willy Leloutre [LA MYGALE]

Rémi
Avatar
Ça marche Willy, je vois à peu près l'idée !
On va regarder ça d'un peu plus près ... merci pour ta réponse :)

Bonne journée.

A bientôt.

Rémi
Le KLUB

Laurent
Bonjour,

J'ai exactement le même problème pour le pager d'une annuaire.
Avez-vous trouvé une solution, cela m'intéresse ?

Merci

Laurent

Rémi
Avatar
Bonjour,

Faute de temps, nous n'avons pas pu tester la proposition de Willy, désolé !
Il faudrait la tester ... ou voir avec Médialibs s'il n'y a pas une solution déjà existante ou bientôt disponible :)

Bon courage.
Le KLUB

Laurent
Ok merci pour ce retour.

Je vais regarder pour la fonction Ajax.
Mais si quelqu'un de Medialibs passe par là pour la soluce qu'il n'hésite pas !


Laurent
J'ai fait une fonction Jquery pour modifier l'affichage du pager.
Je vous en fait part, n'étant pas un spécialiste du javascript, cette fonctionnalité peut être surement améliorée ou simplifiée :

La fonction :

 
 
(function($){
	$.fn.initPager = function(params){
 
		//nb pages à afficher
		var nbPages = parseFloat(params);
		//numero de page courante
		var numCurrent = parseFloat($(this).children("a.pager_current_page").text());
		//longueur du pager
		var length = $(this).children("a.pager_default_page").length;
	
		//on masque toutes les pages
		$(this).children("a.pager_default_page").each(function() {
			
			$(this).hide();
 
		});
 
		//on teste si on est en début de pager
		if (numCurrent > nbPages) {
 
				//on teste si on est en fin de pager ou au milieu
				if ((numCurrent+nbPages)>length) {
					
					//on définie l'intervalle de pages à afficher
					var NumMin = (length+1)-nbPages;
					var NumMax = length+1;
					
				
				$(this).children("a.previous").prepend("... ");
				
				} else {
				
					//on définie l'intervalle de pages à afficher
					var NumMin = numCurrent;
					var NumMax = numCurrent+params;
					
					$(this).children("a.previous").prepend("... ");
					$(this).children("a.next").prepend("... ");
				}
					//on masque les pages
					$(this).children("a.pager_default_page").each(function() {	
								
						var numero = parseFloat($(this).text());
								
						if ((numero > NumMin) && (numero <= NumMax)) {
							$(this).show();
						} else {
							$(this).hide();
						}
						
					});
							
				}
		else {
				//on affiche les pages
				$(this).children("a").each(function() {	
								
					var numero = $(this).text();
								
						if (numero <= nbPages) {
							$(this).show();
						}
						
					});
					
					$(this).children("a.next").prepend("... ");
		}
 
	};
 
})(jQuery)
 
 


Appel de la fonction (on passe en paramètre le nombre de pages que l'on veut voir affichée) :

Donc par exemple si on veut avoir 8 pages, dans l'entête on doit écrire :

 
$(".pager").initPager(8);
 


Voilou

Rémi
Avatar
Merci pour le partage, c'est sympa :)

Nous testerons ça dès que nous serons à nouveau confronter au problème.

C'est dommage que ça ne soit pas initialement prévu dans e-majine d'autant que le webo-facto, dans la "gestion de tickets", au delà de 5 pages ce système est "en place" ^^

Bonne journée !
Le KLUB

Patrick
Bonjour,
Quelqu'un a pu tester cette fonction ? de mon côté, ça ne fonctionne pas...
Merci ;-)