Home Tutoriales Plantillas Paginación con Imagenes en Joomla

Paginación con Imagenes en Joomla

icoDetalles Tutorial - Nivel : Intermedio, Versión Joomla : 1.5.x, Formato : texto y video.
Joomla nos muestra por defecto una paginación en texto, en este tutorial veremos como cambiar la paginación de algunos items por imágenes, utilizando la sobreescritura (overrides) del archivo pagination.php

 

En el siguiente video se muestra a través de un ejemplo la personalización de la paginación.

Suscríbete a monitojoomla en youtube para que puedas ver todos los videos publicados

 

Generalidades

El core de Joomla y muchos templates tienen por defecto la paginación en texto, tal como se muestra en la siguiente imagen, utilizando la técnica de sobreescritura (overrides) de la paginación podemos personalizar nuestra paginación.

img1

 

Modificando el archivo pagination.php

Nos basamos en el archivo pagination.php del template beez ( /templates/beez/html/pagination.php ) y lo copiamos a la siguiente ruta de nuestro template /templates/miTemplate/html/, posteriormente modificamos las funciones pagination_item_active y pagination_item_inactive.

function pagination_item_active(&$item) {
 
 switch ($item->text){
 case JText::_('Start'):
 $cadImg = "<img src='images/stories/navegacion/primero.gif'";
 break;
 
 case JText::_('Prev'):
 $cadImg = "<img src='images/stories/navegacion/anterior.gif'";
 break;
 case JText::_('Next'):
 $cadImg = "<img src='images/stories/navegacion/siguiente.gif'";
 break;
 case JText::_('End'):
 $cadImg = "<img src='images/stories/navegacion/fin.gif'";
 break;
 default:
 $cadImg = $item->text;
 break;
 }
 
 $cad = "<li><strong><a href=\"".$item->link."\" title=\"".$item->text."\">".$cadImg."</a></strong></li>";
 
 
 return $cad;
}


function pagination_item_inactive(&$item) {
 switch ($item->text){
 case JText::_('Start'):
 $cadImg = "<img src='images/stories/navegacion/primero_.gif'";
 break;
 
 case JText::_('Prev'):
 $cadImg = "<img src='images/stories/navegacion/anterior_.gif'";
 break;
 case JText::_('Next'):
 $cadImg = "<img src='images/stories/navegacion/siguiente_.gif'";
 break;
 case JText::_('End'):
 $cadImg = "<img src='images/stories/navegacion/fin_.gif'";
 break;
 default:
 $cadImg = $item->text;
 break;
 }
 
 $cad = "<li>".$cadImg."</li>";

 return $cad;
}

Al realizar las modificaciones anteriores obtenemos la paginación como se muestra en la siguiente imagen

img2

 

Conclusión

La paginación es parte importante de un buen diseño de template y a través de la técnica de sobreescritura (overrides) podemos personalizarla de acuerdo a nuestras necesidades.

 

 

Comparte este postDel.icio.us! Google! Live! Facebook! Twitter! Joomla Free PHP
Comentarios (28)
  • Santiago
    avatar
    ¡Felicidades!

    Excelente tutorial te felicito nuevamente y ya lo eh aplicado y me funciona perfectamente.

    Saludos y gracias!
  • Ivan Martinez
    avatar
    Hola!,

    Mi Template de joomla, no tiene la carpeta html, con lo cual he de suponer que me coge de system la paginación.

    Como puedo añadir override en el template?

    Gracias.
  • Jhon Marreros
    avatar
    Hola Ivan

    Crea la carpeta html dentro de tu template y luego busca el archivo pagination.php, este archivo lo puedes sacar de otro template como beez, luego sigues los pasos indicados en el tutorial.

    Saludos
  • Ivan Martinez
    avatar
    Hola Jhon,

    Lo primero Gracias por tu rapida respuesta, decirte que acabo de probar lo que me comentas y me sigue sin funcionar, me sigue cojiendo la paginación de system.

    Es raro, tengo la ultima version de joomla, y la paginación la quiero para el com_virtuemart.

    He probado tambien crear la carpeta html dentro de donde va el template del complemento virtuemart.

    no se que se me puede escapar.

    Muchisimas Gracias.
  • Jhon Marreros
    avatar
    Bueno, el detalle que mencionas de viertuemart es importante, al parecer virtuemart tiene su propia paginación en productos.

    Este tutorial es para la paginación de artículos en joomla.

    No puedo darte una respuesta rápida de como sería en virtuemart, pero revisaré el tema para un futuro tutorial.

    Saludos.
  • Ivan Martinez
    avatar
    Ahora mismo me acabo de dar cuenta de lo que me comentas.

    El complemento virtuemart lleva su propia paginación, concretamente el fichero que pagina es "pageNavigation.class.php".

    Gracias por todo, ahora intentare mirar a ver si para el complemento virtuemart se pueden crear (overrides).

    Un placer, y seguire su blog ya que es de gran utilidad.
  • raul
    avatar
    me gusta el trabajo que estas haciendo, sigue hacia delante, muy buena página.
  • Salomé
    avatar
    Hola, he seguido tus tutoriales y son demasiado buenos...

    Este en especial me interesa mucho, pero no me funciona.

    Cree la carpeta html dentro de mi plantilla nueva, copie del bezz el archivo pagination.php y cambié las dos clases asi como explicas en el tutorial, pero nop, no me cambia nada en mi paginación. ¿Qué podrá estar sucediendo?
  • Jhon Marreros
    avatar
    Hola Salomé, es difícil darte una respuesta sin ver todo tu sitio web, te sugiero hacer la prueba en una instalación limpia de joomla y con una plantilla por defecto tal como lo menciono en el video, eso te servirá para que puedas evaluar que posibles problemas tienes.

    Suerte.
  • Salomé
    avatar
    Gracias...

    Te cuento que ya aparece, pero me tocó también mover los estilos desde el css de pagination, pagination li y pues ya va teniendo forma el paginador.

    El que si no quiere tomar la imagen es el que en tu código está como "Next" yo lo tengo en español y tengo es Próximo.
  • Maxwell
    avatar
    Saludos,

    A mi me sucede lo siguiente:

    * << (la imagen)
    * < (la imagen)
    * 1
    * 2
    * > (la imagen)
    * >> (la imagen)

    * = <li>

    ---

    Gracias de anticipadas, excelentes aportes.
  • Maxwell
    avatar
    Perdon por no ser mas explicito, la paginacion se me muestra de forma vertical y cada item esta precedido de una viñeta. ¿Puedes ayudarme porfavor?
  • Jhon Marreros
    avatar
    Hola Maxwell

    Tienes que utilizar archivos de estilos para darle un aspecto horizontal, revisa CSS para menúes horizontales, eso te dará una idea.

    Saludos
  • Maxwell
    avatar
    Gracias, eso haré.
  • Raul Navas
    avatar
    Hola!
    Enhorabuena por tu site y la ayuda que proporcionas.

    Tengo un problema de validación con tu método al no cerrar los tags...

    Puedes comprobarlo validando esta misma:
    http://www.mascreatividad.com/fotoilustracion.html

    ¿Hay algún modo de solucionarlo?

    Gracias!
  • Raul Navas
    avatar
    Ok! ya lo solucione.
    Para que el código sea valido hay que añadir a cada linea que llama a la imagen: por ejemplo

    cadImg = "<img src='images/stories/navegacion/siguiente_.gif'";

    Esto: alt='Siguiente' />
    (antes de cerrar la doble comilla)

    Salu2!
  • jordi
    avatar
    Buenas Jhon seguí el tutorial y he conseguido hacer la paginación correctamente. Me han salido todos los errores anteriores, menú en horizontal y el icono delante de las imágenes. En mi caso modifique el template_css.css el apartado li {
    float:left
    }
    y borre todas las referencias al icono.
  • Alejandro Belmar
    avatar
    Me funciono perfecto solo que no puedo quitar el pagina x de x abajo, como podría hacer eso?
  • Pablo
    avatar
    Hola, voy al archivo pagination.php que se encuentra en beez/html. pero no me salen los codigos que muestras. Me sale esto en la funcion que dices:

    function pagination_item_active(&$item) {
    return "<li><strong><a href=\"".$item->link."\" title=\"".$item->text."\">".$it em->text."</a></strong></li>";
    }
  • Pablo
    avatar
    Olvidalo, no habia visto el video.Saludos
  • Norgelo
    avatar
    Hola colegas, una vez mas acudo a su ayuda y desde ya gracias por lo que puedan hacer, se trata de que misitio es un periodico online cuyos canales son item de menus pero que son paginas principales cada uno de ellos, con tres columnas, las cuales tienen indistitamente modulos con noticias asociadas a la categoria en cuestion. Ahora, la jefa de redaccion me dice que hace falta paginar porque las noticias pasadas a veces se consukltan y no se pueden buscar con una paginacion visible, en fin. QUE me puse manos a la obra y trabajae la paginacion desde el plugin pagebreak, luego instale unos asociado a k2 que se llama uberbreack, y el resultado es cero, en las catehgorias y item de menu las tengo en automatico, pero aun asi es nulo el resultado, he revisado el fichero category.php del template de k2 y nada igual. les pido que me ayuden incluso con una posible explicacion de pasos exenciales que debo o debi haber hecho. EL sitio del que hablo es www.cubasi.cu y responde a un organo de pr...
  • Andrés
    avatar
    Hola, antes que nada muchas gracias por los excelentes tutoriales que realizas.

    Sobre este en particular quería preguntarte dónde encuentro el archivo pagination.php en Joomla 1.7 porque no lo pude hacer ni en el template que estoy usando ni en los que vienen por defecto.

    Desde ya, muchas gracias.

    Saludos.
  • Jhon Marreros Guzman
    avatar
    Hola Andrés

    No debería haber cambios en esta parte para Joomla 1.7, intenta trabajar con el mismo archivo de Joomla 1.5 y nos cuentas.

    Saludos.
  • Jose
    avatar
    Buenas te quería dar las gracias por el tutorial. Tengo un problema y es que aunque todo esto me ha quedado claro no tengo ni idea de como crear los iconos y tampoco he encontrado iconos de paginación en internet, me gustaría saber si podrías subir los iconos que usas en el tutorial por favor.
  • Carol
    avatar
    Hola a todos, yo lo que necesitaba era cambiar la paginación cuando en un articulo incluyo un pagebreak, guiandome con este articulo y con la ayuda mi hermano programador.. logre hacerlo y se ve muy bien, justo como lo necesitaba, pueden ver el link de ejemplo en http://www.pixeltech.com.co/clientes/pilarvaldez

    reemplaze el texto <<Prev - Próximo>> por imágenes con flechas.
    el archivo que edite esta en plugins/content/pagebreak.php

    el código que cambie es este desde la linea 273

    // Next >>
    $next = '<a href="'. $link_next .'">' . $pnSpace . JText::_( '' ) .' <img src="images/stories/navegacion/siguiente.png" border="0" title="Siguiente"/></a>';
    }
    else
    {
    $next = JText::_( '' );
    }

    if ( $page > 0 )
    {
    $page_prev = $page - 1 == 0 ? "" : $page - 1;

    $link_prev = JRoute::_( '&limitstart='. ( $page_prev) );
    // << Prev
    $prev = '<a href=&quo...
  • Matias
    avatar
    Hola John,

    Muchas gracias por tus tutoriales. Son muy buenos!!.

    Te escribo porque tengo problemas para personalizar la paginacion en Joomla 1.6.

    He localizado el fichero pagination.php en libraries/joomla/html y, como aparentemente permite el override, lo he copiado en /templates/miTemplate/html/.

    El problema con el que me encuentro es que el contenido del pagination.php es distinto al del que viene por defecto en las instalaciones de Joomla 1.5

    ¿me podrías ayudar con este asunto?

    ¡¡Muchas gracias!!
  • Ruben
    avatar
    Hola comentar, que este método para joomla 1.7 y k2 es efectivo a medias. Para que te muestre las imágenes en estilo blog de k2, hay que dejar las direcciones de las imagenes de la siguiente forma:
    ../images/stories/navegacion/primero_.gif. Es importante poner "../", sino es incapaz el sistema de reconocer las imágenes. Pero el problema viene cuando intentas mostrar la relación de item de una categoría, ya que las imagenes para mostrar las paginas se pierden al cambiar por completo la dirección de estas imagenes quedando de esta forma:
    tusistio/index.php/k2/itemlist/images/stories/navegacion/anterior_.gif .
    Si alguien le ha pasado el mismo problema y ha sido capaz de solucionarlo, comentar cual es remedio para corregirlo.
  • Carmen
    avatar
    Hola Rubén, ¿Lo solucionaste?, me ocurre lo mismo.

    Gracias
Escribir comentario
Gravatar enabled