Programación para Joomla

Tutoriales y manuales de programación para Joomla 2.5 y 3. Aprende con nosotros a desarrollar tus propiar componentes para Joomla 2.5 y 3.x. Además podrás encontrar trozos de códigos útiles para tus desarrollos Joomla.

Editando los archivos de Joomla con notepad++

logo notepadA la hora de implementar un sitio  con Joomla es una tarea prácticamente obligatoria tener que editar algunos de los ficheros con los que estamos trabajando.

Si vas a cambiar algún parámetro del archivo configuration.php, desarrollar una extension, modificar los archivos de una plantilla para Joomla o crear los archivos de idioma correspondientes, te verás con la necesidad de editar algún fichero. 

 

Mi aplicación favorita para la edición de los archivos de Joomla es Notepad++ y en este artículo quiero enseñarte el funcionamiento de un plugin que te permitirá editar directamente los archivos que alojados en un servidor.

Programación de extensiones en Joomla avanzada

En Ayuda Joomla ya hemos publicado varios tutoriales básicos para aprender a desarrollar nuestras primeras extensiones para Joomla 1.6, en concreto son estos tres tutoriales realizados por Xavier Pacheco y Jordi Vila del equipo de Web Actualizable:

Quería compartir con vosotros una presentación muy interesante correspondiente a un taller avanzado de programación que se impartió en el JoomlaDay 2009 de Barcelona por Fernando Hidalgo y Juan Luis Pérez. La presentación esta centraba en desarrollo de extensiones para Joomla 1.5, pero los conceptos son extrapolables facilmente para la versión 1.6

Esquema de la base de datos de Joomla 1.6

En uno de los tantos artículos que se nos quedan colgados, he encontrado uno dedicado al esquema de la base de datos del Joomla 1.6. Aquí lo tenéis a vuestra disposición para compararlo con el esquema de Joomla 1.5 y que podáis profundizar sobre Joomla 1.6 antes de que salga la versión definitiva (recordad que hoy ha salido Joomla Beta 11).

Aquí teneis la captura del esquema (click para agrandar):

joomla_1.6_database_schema

Además desde la web fuente (www.torkiljohnsen.com) se expone en su web una serie de razones de por qué, según su juicio, este esquema es bastante mejorable:
  • Nombre de las tablas: defiende que, por consistencia, se debería adoptar el nombre en plural, ya que que en estas normalmente contienen más de una fila de datos.
  • Nombre del campo clave en las tablas: en la mayoría de los casos se usa el nombre 'id' para identificar dicha clave en las tablas, sin embargo existen tablas en lo que esto no se cumple.
  • Teniendo que ver con lo anterior, los campos clave de las tablas son numéricos autoincrementales pero dichos campos clave no son del mismo tipo en todos los casos.

Puedes seguir leyendo los inconvenientes que, según Torkil Johnsen, tiene dicho esquema para la nueva versión de Joomla que todos estamos esperando para su versión estable.

 

Enlace | Lista deficiencias esquema de base de datos

Enlace | Esquema de base de datos

Cómo cambiar la cantidad de paginas mostradas en la paginación de Joomla

Joomla, por defecto, nos muestra una cantidad de 10 páginas en los links de paginación, tal como se muestra en la siguiente imagen.

Paginación de Joomla por defecto

Pero en ciertas ocasiones existe la necesidad de modificar este número de páginas mostradas, esto se puede conseguir de las siguientes maneras:

Primera Forma : Modificando el Core de Joomla

Esta es la forma más rápida y además no sólo podemos disminuir la cantidad, sino también aumentarla.

En nuestra instalación de Joomla ubicar el siguiente archivo:

/libraries/joomla/html/pagination.php

Posteriormente abrimos este archivo y localizamos la línea 96 aproximadamente, tal como se muestra en la siguiente imagen:

Displaypages

Modificamos las variable $displayedPages por el número deseado.

Segunda Forma : Overrides de pagination.php

Consiste en hacer una sobreescritura (overrides) del archivo pagination.php en el template de nuestro sitio. Esta técnica permite trabajar la reducción de la cantidad de páginas sin modificar el core de joomla.

El siguiente enlace permite descargar el archivo pagination.php (esta basado en el archivo pagination.php del template beez) .

Descargar archivo de ejemplo

Las modificaciones consisten en:

  • Se agregó una función llamada mostrarSubpaginacion.
  • Se modificó la función pagination_list_render, es en esta última función se define la cantidad de páginas mostradas (por defecto 5 paginas).

Para utilizar este archivo, se debe copiar a la siguiente ruta: /templates/miTemplate/html/ , para cambiar la cantidad de páginas modificar la variable $cantidadMostrar en la línea 95.

 

Como nota adicional, utilizando la técnica de overrides del archivo pagination.php podemos además cambiar otros aspectos visuales, como por ejemplo cambiar el texto de navegación de la paginación por imágenes, tal como lo muestra el siguiente publicado en mi blog : Tutorial de paginación con imágenes en Joomla


Sobre el autor
Logo monito joomlaJhon Marreros Guzmán es Ing. de sistemas, especialista en Diseño y programación WEb, apasionado por temas de tecnología web y especialmente por el CMS Joomla. Cuenta con su propio blog sobre Joomla en el que se pueden encontrar tutoriales y consejos muy interesantes. Visítalo en www.monitojoomla.com

Eliminar el meta tag Generator

Muchos usuarios de Joomla están interesados en eliminar la etiqueta meta tag generator que aparece en el código fuente de cualqueir página Joomla. Esto se hace por razones de seguridad para hacer menos obvio que sitio web funciona con Joomla.


<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

Con tan solo añadir la siguiente línea de código PHP en el archivo index.php de la plantilla será eliminada.


<?php  $this->setGenerator(null); ?>

Al realizar este cambió el meta tag generator debe aparecer como el siguiente


<meta name="generator" content="" />

En lugar de null también es posible pasarle una cadena de texto con el contenido que queremos. Por ejemplo "Sitio web desarrollado por XXX".

Bloquear el uso de tp=1

Hace ya tiempo os contabamos en Ayuda Joomla como podíais conocer la posición de un módulo en Joomla. De esta forma a la hora de trabajar en nuestro sitio web se podía conocer facilmente donde estaba definido cada zona de módulos, pero además cualquier persona podría ver estas posiciones en nuestra web o nosotros podríamos verlas en otros sitios web.

En Joomla Argentina han publicado el siguiente método paara evitar que puedan conocer la posición de los módulos de Joomla. Para ello solo hay que colocar la siguiente línea de código en archivo index.php de vuestra plantilla.


JRequest::setVar('tp', 0);

Esta linea tiene que ser colocada despues de:


// no direct access defined('_JEXEC') or die('Restricted access');

Vía | Joomla Argentina

Pasar parámetros a un wrapper en Joomla

La semana pasada estuve desarrollando una aplicación que accedía a la base datos de joomla y  a unas bases de datos externas, para ello pensé en crear un script en php que hacía todo el trabajo y utilizar el componente wrapper para mostrar todo el resultado dentro de un portal Joomla. Desarrollé toda la aplicación como si de una aplicación web normal se tratase y cuando llego la hora de usar el wrapper me di cuenta que no permitía pasar parámetros en la URL.

 

San Google bendito vino al rescate con una interesante solución de Thomas Kahl. Esta solución se basa en la modificación del componente com_wrapper, este componente pertenece al core, por lo que si actualizáis vuestra versión de Joomla y este componente es actualizados deberéis volver a realizar la modificación.

 

  •  Haz una copia de seguridad del archivo /components/com_wrapper/wrapper.php
  • Abre el archivo en el editor de textos y ve a la línea 35.
  • Busca el siguiente texto:   $url = $params->def( 'url', '' );
  • Inserta el siguiente bloque de texto a continuación:

 foreach ($_GET as $key => $value) { 
     if ($key<>"option" && $key<>"Itemid") { 
          $url.=(strpos($url,"?")) ? "&" : "?";
          $url.="$key=$value"; 
     }
}

  •  Guarda el archivo y prueba que funciona.

Para probar el funcionamiento me imagino que tendréis que utilizar una cadena similar a esta:
http://wwww.tudominio.com/index.php?option=com_wrapper&view=wrapper&Itemid=XX¶m1=AA¶m2=BB....
 
Donde XX será el ID del Wrapper y param1=AA será el primer parámetro que reciba el script, param2=BB el segundo parámetro y así sucesivamente hasta utilizar todos los parámetros necesarios para el script. 

 

Esquema de la base de datos de Joomla 1.5

Esta semana he estado profundizando un poco en el funcionamiento interno de Joomla. Concretamente he estado indagando un poco como se almacena internamente los artículos.

Al principio estaba utilizando las aplicaciones que ofrece Mysql Tools para estudiar como se relacionaba cada tabla, pero resultaba un poco tedioso estar visualizando las tablas para ver como se relacionaban las claves.

Usando google llegué a un enlace en el sitio web oficial para los developers de Joomla que tenía este fantástico esquema en el que podéis ver todos los campos de cada tabla del core de Joomla y como se relaciona entre sí. Este esquema fue creado por Torkil Johnsen sobre la versión de Joomla 1.5 alpha 2, no es que sea la última versión de Joomla, pero no viene nada mal. En su sitio web podéis encontrar  el diagrama descargable para FabFORCE DBDesigner4.

Espero que os sea tan útil como lo ha sido para mi. Pulsad sobre la imagen para verlo más grande.

 

 

Base de datos de Joomla 1.5

Configurar php.ini para Joomla

Para poder utilizar el gestor de contenidos Joomla es necesario tener configurado correctamente el archivo php.ini. En este artículo se comentan las líneas de configuración del archivo php.ini que se deben modificar, ya que la instalación por defecto no suele cumplir los requisitos de Joomla.

Usando un editor de texto se debe abrir el archivo php.ini de configuración y modificar las siguientes lineas:

  • Buscar la línea Magic_quotes_gpc = on; y sustituirla por Magic_quotes_gpc = off;
  • Buscar la línea Display errors = off;y sustituirla por Display errors = on;
  • Buscar la línea Extension_dir = ”./” y sustituirla por Extension_dir = ”c:\php5\ext”. Esta suele ser la ruta por defecto donde suelen estar instaladas las extensiones dentro de la carpeta de instalación de php. Si no tienes instalado PHP puedes ver como se hace en este articulo
  • Buscar la línea Session.save_path = “n:\tmp” y sustituirla por session.save_path="c:\tmp". En realidad se puede emplear cualquier otra carpeta para guardar la sesiónes, es muy importante tener en cuenta que la carpeta debe estar creada y que tenga los permisos correspondientes para que pueda ser escrita la variable de sesión.
  • Descomentar las siguientes líneas (para descomentar una linea en php quitar el ; inicial)
    1. Extension = php_mysql.dll
    2. extension = php_mysqli.dll
  • Para que los cambios efectuados al archivo php.ini tenga efecto es necesario reiniciar el servidor web.

Una vez se haya configurado el archivo php.ini y se debe reiniciar el servidor web para que acepte la nueva configuración de php.