Página 1 de 1

Paginación en memberlist

Publicado: 21 Dic 2010, 02:17
por javiexin
Hola,

Tengo una pregunta: hay alguna manera de hacer que la paginación de la lista de usuarios (memberlist) sea variable según la llamada?

Es decir, que se pueda hacer que una llamada a memberlist pagine cada 50 usuarios, otra cada 100 y otra no pagine en absoluto, sin cambiar nada en la configuración (es decir, que esta información se pase como parámetro de llamada).

Muchas gracias por la ayuda, saludos,
-javiexin

Paginación en memberlist

Publicado: 21 Dic 2010, 02:33
por leviatan21
Puedes hacer este cambio :

Abrir :
raíz/memberlist.php

Buscar :

Código: Seleccionar todo

        // Get us some users :D 
Antes, agregar :

Código: Seleccionar todo

        $config['topics_per_page'] = request_var('limit', $config['topics_per_page']); 
Con esto si llamas a la página de usuarios agregándole el parámetro limit=3 solo listará 3 usuarios por vez :

Código: Seleccionar todo

raíz/memberlist.php?limit=3
Espero que te sirva para lo que estás inventando :wink:

Paginación en memberlist

Publicado: 21 Dic 2010, 02:38
por javiexin
Muchas gracias leviatan21.

Por desgracia, no puedo hacer cambios en el código php, así que no puedo utilizar tu propuesta, pero es (casi) exactamente lo que necesitaría!

A ver si hay alguna otra propuesta que no requiera cambios en php...

Saludos,
-javiexin

Paginación en memberlist

Publicado: 21 Dic 2010, 02:46
por leviatan21
javiexin escribió:Por desgracia, no puedo hacer cambios en el código php, así que no puedo utilizar tu propuesta
Sin modificar archivos .php no hay muchas opciones de personalizar el foro... ¿ como has instalado hasta ahora los MODs que tienes ?

Paginación en memberlist

Publicado: 21 Dic 2010, 03:05
por javiexin
Hola,

Yo estoy en una instalación compartida, que tiene una única copia de los ficheros php para múltiples foros, y no se pueden modificar independientemente. Los mods instalados están disponibles para todos los foros que comparten los ficheros, y su instalación se hace de forma centralizada.

Para modificar o adaptar mi foro, yo sólo puedo modificar las plantillas (templates) y estilos (css), es decir, el código de cliente. Nada más, y nada menos...

Y se pueden hacer muchas cosas sólo con eso :) Aunque a veces, me gustaría poder hacer cositas sencillas como la que propones aquí!

Saludos,
-javiexin

Paginación en memberlist

Publicado: 21 Dic 2010, 03:33
por leviatan21
javiexin escribió:Yo estoy en una instalación compartida, que tiene una única copia de los ficheros php para múltiples foros, y no se pueden modificar independientemente. Los mods instalados están disponibles para todos los foros que comparten los ficheros, y su instalación se hace de forma centralizada.
Eso es una mala noticia, porque no se da soporte a foros pre-instalados :banned

Re: Paginación en memberlist

Publicado: 19 Oct 2011, 12:00
por javiexin
Hola,

Revivo este tema porque ahora sí puedo hacer ediciones al código PHP, y estoy intentando introducir este cambio que ya solicité en su momento.

Lo que me indicó en su momento leviatan funciona a la perfección, salvo un pequeño detalle: cómo hago para que el "limit=X" que yo pongo en una URL se propague cuando navego?

Es decir, veo una página con limit=20 y me gustaría que cuando pulso para ver otra página, mantuviera también este parámetro.

He intentado mirar el código de memberlist.php para hacer esto, pero no lo tengo muy claro...

Alguna ayuda? Muchas gracias,
-javiexin

Re: Paginación en memberlist

Publicado: 19 Oct 2011, 21:17
por leviatan21
Prueba esto :
Primero elimina el cambio anterior, luego :

Buscar :

Código: Seleccionar todo

// Check our mode...
Antes, agregar :

Código: Seleccionar todo

$limit        = request_var('limit', 0);
if ($limit)
{
    $config['topics_per_page'] = $limit;
}

 
Buscar :

Código: Seleccionar todo

			'first_char'	=> array('first_char', ''),
Debajo, agregar :

Código: Seleccionar todo

            'limit'            => array('limit', $limit), 

Re: Paginación en memberlist

Publicado: 19 Oct 2011, 21:34
por javiexin
Muchas gracias, leviatan...

Es un poco más complejo que lo que tú has puesto. Lo que al final he tenido que poner es lo siguiente:

Buscar:

Código: Seleccionar todo

		$u_hide_find_member = append_sid("{$phpbb_root_path}memberlist.$phpEx", "start=$start" . (!empty($params) ? '&' . implode('&', $params) : ''));
Añadir antes:

Código: Seleccionar todo

		// Allow changing the pagination; 0 disables pagination
		$limit = request_var('limit', '');
		if (is_numeric($limit))
		{
			$config['topics_per_page'] = request_var('limit', $config['topics_per_page']);
			$params[] = ("limit=" . $limit);
			$sort_params[] = ("limit=" . $limit);
		}
Esto CASI funciona del todo, hace exactamente lo que yo quiero, con una excepción: cuando estás en una página con "limit" puesto, y utilizas algún enlace de "ordenación", se pierde el límite. En la paginación ya no se pierde.

Lo puedes ver aquí:
http://www.exincastillos.es/foro/member ... p?limit=20
Por cierto, esto también es parte de este cambio (necesita algún retoque más):
http://www.exincastillos.es/foro/memberlist.php?limit=0
Y por último, en este caso, el parámetro es ignorado:
http://www.exincastillos.es/foro/member ... limit=algo

Saludos,
-javiexin

PD: Admito sugerencias de mejora, es el primer código PHP para phpbb que escribo...

Re: Paginación en memberlist

Publicado: 19 Oct 2011, 22:14
por leviatan21
javiexin escribió:Esto CASI funciona del todo, hace exactamente lo que yo quiero, con una excepción: cuando estás en una página con "limit" puesto, y utilizas algún enlace de "ordenación", se pierde el límite. En la paginación ya no se pierde.
Sería preferible :

Código: Seleccionar todo

        // Allow changing the pagination; 0 disables pagination
        $limit = request_var('limit', 0);
        if ($limit != 0)
        {
            $config['topics_per_page'] = $limit;
            $params[] = $sort_params[] = ("limit=" . $limit);
        }
 

Re: Paginación en memberlist

Publicado: 19 Oct 2011, 22:26
por javiexin
Lo he probado, y con ese código el segundo ejemplo que puse no funcionaría.

De todos modos, muchas gracias!
-javiexin