22 mayo 2009

Paginacion simple en Front-end Joomla


Programar componentes para Joomla es un verdadero desafio asi que aqui les traigo un ejemplo que les puede servir para paginar en el front-end, el componente no tiene un instalador solo hay que seguir los pasos de este mini tuto
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').'&nbsp;'; ?>
<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 '&nbsp;&nbsp;&nbsp;'.JText::_('Display Num').'&nbsp;';
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.

  • 05 mayo 2009

    Habilitar mod_rewrite para urls amigables DEBIAN

    Habilitar el mod_rewrite para uso de urls amigables

    # a2enmod rewrite

    Enabling module rewrite.

    Run '/etc/init.d/apache2 restart' to activate new configuration!

    Reiniciar los servicios de apache

    #/etc/init.d/apache2 restart

    probar la configuracion con script php

    Crear un virtualHost con soporte de lectura .htaccess, editar el archivo /etc/hosts/apache2/sities/available/default , al final del archivo agregue las siguientes lineas:

    <VirtualHost *:80>
    ServerName www.urlamiga.com
    DocumentRoot /var/www/examples/php/urls/
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
    DirectoryIndex index.php index.html index.htm
    </virtualhost>

    Nuevamente reiniciamos los servicios de apache.
    # /etc/init.d/apache2 force-reload

    Editar el archivo de hosts /etc/hosts, y en la linea 127.0.0.1 agregar el ServerName del VirtualHost antes creado:

    127.0.0.1 localhost www.urlamiga.com

    Guardar los suiguientes ficheros (rewrite.php y .htaccess) en /var/www/examples/php/urls/

    rewrite.php
    Crea un archivo php llamado rewrite.php con el siguiente codigo:

    <h2 align=center>
    <? if(isset($_GET['link'])){
    if($_GET['link']==1){echo"Enlace sin usar mod_rewrite";}
    elseif($_GET['link']==2){echo"Felicitaciones!! Tu has usado mod_rewrite de Apache y funciona correctamente";}
    else{echo"Verifica el modulo mod_rewrite de tu Apache";}
    }
    ?>
    </h2>
    <hr>
    <head>
    <title>Probar mod_rewrite en Apache Linux&lt;/title>
    </head>
    <body>
    <h1>Probar mod_rewrite en Apache Linux</h1>
    <p><a href="rewrite.php?link=1">Enlace uno </a> = rewrite.php?link=1</p>
    <p><a href="link2.html">Enlace 2</a&gt; = link2.html</p>
    <ul>
    <li>Prueba el enlace uno</li>
    <li>Luego prueba el enlace dos</li>
    <li>Si con el enlace dos te sale que la p�gina no fue encontrada entonces no tienes activado los .htaccess del apache o no funciona el mod_rewrite</li>
    </ul>
    </body>
    </html>


    .htaccess
    1. RewriteEngine On
    2. RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]


    Resultados:





    02 mayo 2009

    Compartir internet con LINUX

    Bueno esta vez toca del como compartir internet por medio de linux teniendo 2 tarjetas de red eth0 y eth1, para ello debamos configurar eth0 pa conexion modem y eth1 para red interna de tal manera que se vera como la siguiente figura:

    Hasta este punto no hagamos caso a las ip de la figura anterior solo es una representacion de las conexiones, para ello se utilizo debian lenny en su version estable, 2 tarjetas de red e iptables, configuracion.

    Editaremos el arhivo /etc/network/interfaces

    auto lo
    iface lo inet loopback

    #configuracion eth0 con conexion por medio dhcp
    auto eth0
    iface eth0 inet dhcp

    #onfiguracion eth1 con conexion statica red interna
    auto eth1
    iface eth1 inet static
    address 192.168.10.1
    netmask 255.255.255.0
    broadcast 192.168.10.255

    Ok con lo anterior servira para que cada vez que se reinicie el pc no se pierda la configuracion de las 2 tarjetas de red.

    Reiniciar los servicios de red

    #/etc/init.d/networking restart

    Con esto quedaran ya configuradas las eth* sin tener que reiniciar si deceas ver que efectivamente es la configuracion correcta de las eth* con el comando ifconfig -a.

    Ahora con iptables haremos la que todas la peticiones por eth1 salgan por eth0 y habilitar el forward

    #iptables -t nat -F
    #iptables -t nat -A POTROUTING -s 192.168.10.0/24 -d 0.0.0.0/0 -j MASQUERADE
    #echo 1 > /proc/sys/net/ipv4/ip_forward
    #iptables-save

    Con esto ya habremos de tener conexion en la red interna, ahora configuraremos nuestra red interna con la siguiente configuracion

    ip 192.168.10.3
    netmask 255.255.255.0
    puerta de enlace 192.168.10.1

    DNS
    192.168.10.1
    192.168.15.1 (ISP AXTEL)

    En este caso mi ISP es axtel si utilizaramos otro ISP coloquemos el que corresponda, co ello habra quedado la configuracion exacta de nuestro equipo y nuestra red interna.

    30 abril 2009

    Cambiar Hr del sistema y Bios desde la shel

    Aveces por solo tener el sistema base de un debian nos preguntamos del como configurar la fecha correctamente del sistema, aqui unos comandos basicos para que la hr del sistema y del Bios sea la correcta.

    Para la hr del sistema
    Ver la hr actual
    # date
    Sun Aug 24 23:52:32 SST 2006

    Actualizar Hr
    #date --set "2009-04-30 16:30"

    listo la hr del sistema esta conficurada ahora configurar o actualizar la hr de la BIOS

    # hwclock --set --date="2009-04-30 16:30"

    Verificando

    #hwclock
    jue 30 abr 2009 16:34:26 CDT -0.014329 segundos

    24 abril 2009

    Jotform crea tus formularios online

    Los formularios son métodos muy utilizados en páginas web para el llenado de cualquier tipo de datos que haga falta, muchos tenemos problemas a la hora de crearlos pues hay que saber de programación, saber como estructurarlos, validarlos, decidir que método de envío se utilizará.

    Con Jotform todo este trabajo se nos hace mucho más fácil y asequible para todos. Podemos crear formularios que van desde lo simple con campos como los clásicos como los cuadros de texto, áreas de texto, menús desplegables hasta lo verdaderamente avanzado como carga de archivos, botones casillas de verificación entre muchas cosas más.

    Los formularios los podemos crear personalizando el que aparece por defecto en la interfaz o empezando desde cero con la ayuda de un asistente para creación de formularios paso a paso.

    Las propiedades de cada campo pueden ser modificadas, dígase etiqueta, tamaño, descripción, etc. Además contamos con la opción de la vista previa lo que nos permite ver como va quedando nuestro trabajo. Los formularios están integrados para aceptar pagos por PayPal, Google Checkout, 2checkout y otros sistemas de pago, el registro es gratis y necesario a la hora de querer guardar, editar y utilizar los formularios realizados.

    Existe otro tipo de acceso a la herramienta y es utilizando una cuenta premium la cual tiene muchas más funcionalidades para crear nuestro formulario.

    La herramienta está en varios idiomas incluido el español.

    Screenshot ABRIL 2009

    Bueno antes que termine este mes quiero dejarles mi screenshot ABRIL, este screenshot es el de mi lugar de trabajo una debian lenny 5, I LOVE LENNY

    Excel 2013, convertir mes en texto a numero

    Si tienes un mes en formato ENERO este lo cambiara a 02, funciona en la versión de Excel 2013, solo se tienen que reemplazar J2 por la celda...