Paginación en Drupal de un array de datos

drupal.jpg
Solucionex
09
Abr 13
La API de Drupal nos ofrece herramientas muy útiles para poder desarrollar nuevas funcionalidades, como por ejemplo, paginar un array de datos. Esto nos puede ser útil en el caso que necesitemos mezclar los resultados de dos vistas en un único array de resultados. Para empezar, creamos un módulo y definimos la siguiente función: /** Función para paginar los resultados de un array de datos **/ function _slx_custom_paginador($items,$num_per_page, $element=0) { $page = pager_find_page();//Página actual $offset = $num_per_page * $page;//Ventana de resultados //Inicializamos los valores del paginador pager_default_initialize(count($items), $num_per_page, $element); $newitems = array_slice($items, $offset, $num_per_page);//Elementos a mostrar return $newitems; } La función recibe como parámetros el array de datos ('$items'), el número de elementos que deseamos por página ('$num_per_page') y un identificador del paginador ('$element'), en el caso en el que deseemos varios paginadores distintos en la misma página. Nos retornará el array con los resultados que pertenecen a la ventana deseada. A continuación, en el template (tpl), podemos mostrar los resultados con un bucle 'foreach' del array que nos retorna esta función y realizamos una llamada a la función 'theme' de Drupal para que realice su magia: //Paginamos el array con 5 elementos por página y el identificador '0', ya que no introducimos ningún otro paginador $datos_slice = _slx_custom_paginador($datos,5,0); foreach($datos_slice as $dato) { print $dato; } //Mostramos el paginador, con su identificador '0' print theme('pager',array('element' => 0)); e voilà!!!