para ver funcionando el componente, en la siguiente figura se muestra la estructura de directorios que se deve formar en el directorio components de nuestro joomla:
Primero crearemos la tabla que contiene los registros a paginar en este caso crea un archivo sql o pega el codigo en tu phpmyadmin:CREATE TABLE IF NOT EXISTS `jos_edosmx` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`alias` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`))
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;
--
-- Dumping data for table `jos_edosmx`
--
INSERT INTO `jos_edosmx` (`id`, `title`,`alias`) VALUES
(1, 'Aguascalientes','aguascalientes'),
(2, 'Baja California','baja-california'),
(3, 'Baja California Sur','baja-california-sur'),
(4, 'Campeche','campeche'),
(5, 'Chiapas','chiapas'),
(6, 'Chihuahua','chihuahua'),
(7, 'Coahuila de Zaragoza','coahuila-de-zaragoza'),
(8, 'Colima','colima'),
(9, 'Distrito Federal','distrito-federal'),
(10, 'Durango','durango'),
(11, 'Guanajuato','guanajuato'),
(12, 'Guerrero','guerrero'),
(13, 'Hidalgo','hidalgo'),
(14, 'Jalisco','jalisco'),
(15, 'México','mexico'),
(16, 'Michoacán de Ocampo','michoacan-de-ocampo'),
(17, 'Morelos','morelos'),
(18, 'Nayarit','nayarit'),
(19, 'Nuevo León','nuevo-leon'),
(20, 'Oaxaca','oaxaca'),
(21, 'Puebla','puebla'),
(22, 'Querétaro Arteaga','queretaro-arteaga'),
(23, 'Quintana Roo','quintana-roo'),
(24, 'San Luís Potosí','san-luis-potosi'),
(25, 'Sinaloa','sinaloa'),
(26, 'Sonora','sonora'),
(27, 'Tabasco','tabasco'),
(28, 'Tamaulipas','tamaulipas'),
(29, 'Tlaxcala','tlaxcala'),
(30, 'Veracruz Llave','veracruz-llave'),
(31, 'Yucatán','yucatan'),
(32, 'Zacatecas','zacatecas');
Seguimos dentro del archivo pag.php introducimos el siguiente codigo
<?php
defined('_JEXEC')or die('Restricted Access');
//importando el contollador base
require_once(JPATH_COMPONENT.DS.'controller.php');
if($controller = JRequest::getWord('controller')){
$path = JPATH_COMPONENT.DS.'controller'.DS.$controller.'.php';
if(file_exists($path)){
require_once $path;
}else{
$controller = "";
}
}
$classname = 'PagController'.$controller;
$controller = new $classname();
$controller->execute(JRequest::getVar('task'));
$controller->redirect();
?>
contenido del fichero controller.php<?php
defined('_JEXEC')or die('Acceso Resntringido');
jimport('joomla.application.component.controller');
class PagController extends JController{
function display(){
parent::display();
}
}
?>
contenido /models/pag.php<?php
defined('_JEXEC') or die( 'Restricted access' );
jimport('joomla.application.component.model');
class PagModelPag extends JModel{
//obtiene el numero maximo de registros en la tabla
function getTotal(){
$db =& JFactory::getDBO();
$query = 'SELECT COUNT(*) '.' FROM #__edosmx ';
$db->setQuery($query);
return $db->loadResult();
}
function getData($limitstart,$limit){
$db =& JFactory::getDBO();
$query = "SELECT * FROM #__edosmx";
$db->setQuery( $query, $limitstart, $limit );
return $db->loadObjectList();
}
}
?>
contenido /views/view.html.php<?php
defined('_JEXEC')or die('Acceso Restringido');
jimport('joomla.application.component.view');
class PagViewPag extends JView{
function display($tpl = null){
global $mainframe, $option;
$params = &$mainframe->getParams();
$layout = JRequest::getCmd('layout');
$limitstart = JRequest::getVar('limitstart', 0, '', 'int');
$params->def('show_pagination_limit', 1);
$params->def('filter',2);
jimport('joomla.html.pagination');
$limit = $mainframe->getUserStateFromRequest('com_pag.'.$this->getLayout().'.limit', 'limit', $default_limit, 'int');
$total = & $this->get( 'Total' );
$pagination = new JPagination($total, $limitstart, $limit);
$model =& $this->getModel();
$datos = & $model->getData($pagination->limitstart,$pagination->limit);
$filter= JRequest::getString('filter');
$this->assign('datos',$datos);
$this->assignRef('params', $params);
$this->assignRef('pagination', $pagination);
parent::display($tpl);
}
}
?>
contenido views/tmpl/default.php<?php
defined('_JEXEC')or die('Acceso Restringido');
?>
<form action="<?php echo $this->action; ?>" method="post" name="adminForm">
<div style="text-align:center;">
<?php echo $this->pagination->getPagesLinks(); ?>
</div>
<table width="100%">
<tr>
<?php if ($this->params->get('filter')) :?>
<td align="left" width="60%" nowrap="nowrap">
<?php echo JText::_($this->params->get('filter_type') . ' Filter').' '; ?>
<input type="text" name="filter" value="<?php echo $this->escape($this->lists['filter']);?>" class="inputbox" onchange="document.adminForm.submit();" />
</td>
<?php endif; ?>
<?php if ($this->params->get('show_pagination_limit')) : ?>
<td align="right" width="40%" nowrap="nowrap">
<?php
echo ' '.JText::_('Display Num').' ';
echo $this->pagination->getLimitBox();
?>
</td>
<?php endif; ?>
</tr>
</table>
<table width="100%">
<tr>
<td align="center" class="sectiontableheader<?php echo $this->params->get( 'pageclass_sfx' ); ?>" width="5%" nowrap="nowrap">
<?php echo JText::_('id'); ?>
</td>
<td class="sectiontableheader<?php echo $this->params->get( 'pageclass_sfx' ); ?>" width="45%">
<?php echo JText::_('Titulo'); ?>
</td>
<td class="sectiontableheader<?php echo $this->params->get( 'pageclass_sfx' ); ?>" width="20%">
<?php echo JText::_('Alias'); ?>
</td>
</tr>
<?php
/**contenido de la tabla*/
foreach ($this->datos as $dato) : ?>
<tr class="sectiontableentry<?php echo ($item->odd +1 ) . $this->params->get( 'pageclass_sfx' ); ?>" >
<td><?php echo $dato->id;?></td>
<td><?php echo $dato->title;?></td>
<td><?php echo $dato->alias;?></td>
</tr>
<?php endforeach;?>
</table>
<div style="text-align:center;">
<?php echo $this->pagination->getPagesLinks(); ?>
</div>
ahora acceder a nuetro local, o donde tengamos alojado nuestro joomla con la siguiente url: http://localhost/index.php?option=com_pag
Se que es un ejemplo simple pero espero y alguien puede ampliarlo para el filtrado por busqueda y columnas.