Este documento proporciona una introducción al desarrollo de plantillas para Joomla. Explica conceptos clave como XHTML, CSS y PHP y cómo se usan juntos para crear plantillas dinámicas. También describe la estructura básica de archivos de una plantilla, el archivo templateDetails.xml y cómo usar la API de Joomla y técnicas como template overrides. El documento es una guía para aprender a crear plantillas personalizadas para sitios web basados en Joomla.
En esta edición de #JoomlaIO vamos a ver el desarrollo de plantillas para Joomla! en sus diferentes versiones: desde la versión 1.5 hasta la versión 3.0
A través de una presentación iremos viendo los siguientes puntos:
- Qué es una plantilla
- Estructura básica de archivos
- templateDetails.xml
- API de Joomla!
- Templates Overrides
- Ejemplo: index.php + css + params
- Diferencias entre las versiones
- Frameworks de desarrollo
- Herramientas de ayuda
Una vez finalizado este hangout tendremos las nociones básicas para comenzar a desarrollar nuestra plantilla para Joomla!
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...SergioIglesiasNET
Taller de desarrollo de plantillas para Joomla! 3.x impartido en el Joomla!Day 2013 España en la ciudad de Albacete. Snippets, minitutoriales (howto) y herramientas.
En esta edición de #JoomlaIO vamos a ver el desarrollo de plantillas para Joomla! en sus diferentes versiones: desde la versión 1.5 hasta la versión 3.0
A través de una presentación iremos viendo los siguientes puntos:
- Qué es una plantilla
- Estructura básica de archivos
- templateDetails.xml
- API de Joomla!
- Templates Overrides
- Ejemplo: index.php + css + params
- Diferencias entre las versiones
- Frameworks de desarrollo
- Herramientas de ayuda
Una vez finalizado este hangout tendremos las nociones básicas para comenzar a desarrollar nuestra plantilla para Joomla!
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...SergioIglesiasNET
Taller de desarrollo de plantillas para Joomla! 3.x impartido en el Joomla!Day 2013 España en la ciudad de Albacete. Snippets, minitutoriales (howto) y herramientas.
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
Trabajo de Investigación sobre el Framework de MilkZoft: ZanPHP, para la materia de Programación Web de la carrera ISC-2010
Instituto Tecnologico de Tehuacan.
HTML5 Nuevas Etiquetas Semánticas. Se presentan y describen las nuevas etiquetas del estándar HTML5. Aunque se repasan la mayoría de ellas se hace un mayor énfasis en etiquetas y atributos para formularios.
Empiezo contando qué es Bootstrap, sus ventajas e inconvenientes, y como empezar a usarlo.
Luego cuento detalladamente las distintas características del framework: el sistema de rejilla, la tipografía, las tablas, los formularios, los botones, las imágenes, los helpers...
Continúo explicando las facilidades que tiene para realizar diseños adaptables.
Sigo enumerando los distintos componentes del framework, y los distintos añadidos que tiene si además utilizas JavaScript.
Para terminar, comento como se puede personalizar, ya sea usando tu propio CSS, modificando el CSS de Bootstrap desde la página destinada a tal efecto, o directamente compilando los ficheros Less del core.
Nuestro Curso es un programa de gestión, diseño y administración web con Joomla 3.0 dirigido a principiantes y usuarios intermedios que conocen Joomla y desean ampliar sus conocimientos.
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
Trabajo de Investigación sobre el Framework de MilkZoft: ZanPHP, para la materia de Programación Web de la carrera ISC-2010
Instituto Tecnologico de Tehuacan.
HTML5 Nuevas Etiquetas Semánticas. Se presentan y describen las nuevas etiquetas del estándar HTML5. Aunque se repasan la mayoría de ellas se hace un mayor énfasis en etiquetas y atributos para formularios.
Empiezo contando qué es Bootstrap, sus ventajas e inconvenientes, y como empezar a usarlo.
Luego cuento detalladamente las distintas características del framework: el sistema de rejilla, la tipografía, las tablas, los formularios, los botones, las imágenes, los helpers...
Continúo explicando las facilidades que tiene para realizar diseños adaptables.
Sigo enumerando los distintos componentes del framework, y los distintos añadidos que tiene si además utilizas JavaScript.
Para terminar, comento como se puede personalizar, ya sea usando tu propio CSS, modificando el CSS de Bootstrap desde la página destinada a tal efecto, o directamente compilando los ficheros Less del core.
Nuestro Curso es un programa de gestión, diseño y administración web con Joomla 3.0 dirigido a principiantes y usuarios intermedios que conocen Joomla y desean ampliar sus conocimientos.
Presentación realizada en el Joomla!Day Málaga 2014.
En esta presentación se tratan los siguientes temas:
- Cómo extender las funcionalidades de Joomla utilizando extensiones que se pueden descargar del directorio oficial de extensiones de Joomla.
- Aprende a elegir buenas extensiones para Joomla con la información descriptiva que nos proporciona el JED.
- La descarga de extensiones de sitios web no oficiales puede insertar código malicioso en tu sitio web
- Caso práctico: Análisis de costes adicionales a la hora de utilizar una extensión y necesitar funcionalidades adicionales que no trae de forma gratuita.
- Listado de mis extensiones favoritas para administradores de múltiples sitios Joomla
- Listado de mis otras extensiones que se pueden encontrar en http://ayudajoomla.com/mejores-extensiones-joomla.html
- Listado de otras utilidades que no son extensiones, pero que utilizo para trabajar en mi día a día
Estructura básica de una plantilla de Joomla!. 2 de 5 Taller de Creación de plantillas de Joomla! impartido el 28 de febrero 2010 por el Grupo de Usuarios de Joomla! Guatemala
Presentación realizada en el Seminario de Gestores de Contenidos de Málaga (#CMSMalaga).
El objetivo de esta presentación era explicar "¿Qué es Joomla?" y mostrar las funcionalidades de este CMS.
Charla introductoria a Joomla impartida en el marco del "Be smart, be online forum", organizado por el Club de Marketing de La Rioja en Logroño los días 17-18 de septiembre de 2014
Joomla cms primeros pasos para administrar contenidos en la webxsolca
Joomla cms primeros pasos para administrar contenidos en la web. Joomla es un administrador de Contenidos. Esta presentación apoya a quienes están iniciando en el conocimiento de esta herramienta
www.phonemas.com
Click2Call Button
Botón de Llamada en la Web
Hace tiempo hice este taller de Dreamweaver y lo presente en el laboratorio de la institución para beneficio de los compañeros de trabajo. El mismo fluyó muy bien e incluso la participación del grupo fue excelente y aprendieron bastante sobre los diferentes temas que se abordaron en la presentación. También incluyo dentro de la misma un chiste culinario y personal mediante la introducción de una palabra que utilizo mucho al léxico de los compañeros.
Espero que disfruten de esta presentación y que les sea de utilidad en algún futuro.
Introducción a la programación para joomlaRoberto Segura
Introducción a la programación para Joomla usando un módulo de ejemplo.
Usado para el hangout: http://www.joomgouts.com/programas/3x12-introduccion-a-la-programacion-para-joomla-primeros-pasos
Presentación realizada en el Jooml Day Spain 2013 realizada en la ciudad de Albacete. Presenta una hoja de ruta sobre cómo afrontar la migración de un portal realizado con Joomla.
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
Plone es un excelente sistema de gestión de contenidos. Recientemente ha sido elegido como el mejor CMS no-PHP en un popular concurso anual. A pesar de esto, muchos desarrolladores web de Python encuentran complejo a Zope, el framework con el que esta desarrollado el CMS.
Ahora, ¿qué tal si pudieras usar Plone solo como un gestor de contenidos y tu framework favorito, cualquiera sea, para implementar un front-end de forma transparente, obteniendo una configuración basada sobre una aplicación probada y de bajo mantenimiento, como backend siendo libre para escribir tu propia aplicación, usando el poder y flexibilidad de tu framework web?
En esta charla, se mostrarán ejemplos realizados con un par de productos de terceros de Plone y front-ends en varios frameworks.
Slides del taller "Desarrollo rápido de páginas web con Joomla!" presentado durante las actividades del 9º Congreso Nacional y 6º Internacional de Informática y Sistemas Computacionales efectuado en Villahermosa, Tabasco, el 19 de septiembre de 2012.
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10Keopx
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
En el taller se mostrara la creación de un modulo básico, veremos ejemplos existentes y como poder aprovecharlos para hacer nuestros desarrollos a medida.
Es una sesión actualizada de la que ya di en la DrupalCamp 2014: https://2014.drupalcamp.es/es/node/210.html
Se explicara por encima algunos conceptos.
Puedes facilitar lo que deseas encontrarte en el taller, de esta manera intentare ajustarme a lo que los asistentes desearían conocer :)
Sera necesario tener instalado el entorno de desarrollo, un entorno con Drupal en LAMP, MAMP, WAMP o similar para poder trabajar.
Recomendación:
- Drupal 10. Instalado y funcionando.
- IDE de desarrollo. En la maquina virtual estara disponible Code.
- Se recomienda usar la maquina virtual para facilitar la sesión.
Algunos módulos que veremos, por ello es aconsejable instalarlos.
- Modulo Devel
- Modulo Coder
- Módulo Examples
Están disponibles maquinas virtuales o instaladores para facilitar:
- Docker (+ Lando) / Maquina virtual (VirtualBox 7.0)
- http://drupalcamp2023.keopx.net/ (recomendado)
Drupal 8 está a la vuelta de la esquina, y poco a poco, tenemos que ir viendo y acostumbrándonos a las novedades que nos trae. Ya llevamos un tiempo escuchando y viendo sesiones sobre algunas de las novedades más sonadas que nos trae, cómo por ejemplo, CMI, multilingual (esta vez de verdad de la buena!), views in core, etc. pero nadie nos habla de un compañero inseparable y que en D8 precisamente va a tener más importancia que nunca: nuestro colega JavaScript.
Esta presentación se llevó a cabo en la Drupal Camp Valencia 2014, y veremos qué novedades nos trae Drupal 8 en este sentido, repasaremos algunas buenas prácticas en desarrollos JS y todo vinculado dentro de Drupal. Algunos puntos de la sesión serán:
- Actualización de jQuery e inclusión de plugins. ¿Qué nos aporta?
- Domready. ¿Para qué lo quiero si tengo jquery?
- Backbone, underscore. Esteroides para nuestros JS.
- Otras bibliotecas del core: modernizr, etc.
- Repaso al objeto JavaScript Drupal. Theming con JavaScript
- Buenas prácticas JavaScript en nuestros desarrollos
Los mejores trucos y prácticas para configurar drupalSiteGround España
En nuestro webinar gratuito de este mes sobre Drupal tuvimos el placer de contar con Oskar Calvo, que nos dió sus consejos sobre “Los mejores trucos y prácticas para configurar tu Drupal” (#SGwebinar).
El webinar trató de buenas prácticas para tener un proyecto Drupal funcionando correctamente, tanto en la base de datos, como en la caché, en los módulos instalados, así como en las plantillas. Himcios un repaso a las configuraciones, tanto de módulos, base de datos y servidores sin entrar en detalles de programación.
Puedes leer más en Twitter #SGwebinar y en nuestro blog https://www.siteground.es/blog/webinars-buenas-practicas-configuracion-drupal
Presentación de la sesión del JoomlaDay ES 2023 dedicada al proceso de migración del gestor de contenidos (CMS) Joomla 4.
Más info: https://sergioiglesias.net/servicio-migracion-joomla-4
5. XHTML + CSS + PHP → XHTML
● Define la estructura de la información.
● Extensible Hypertext Markup Language (lenguaje extensible de
marcado de hipertexto).
● El lenguaje HTML no cumple al 100% las reglas del estándar XML.
Para poder aprovechar las ventajas del XML, se hizo necesaria una
evolución. del HTML hacia el xHTML, que no es más que una
redefinición del lenguaje haciendo más estrictas algunas de sus
formulaciones básicas (para que sea totalmente compatible con XML).
● Entre las reglas que forman parte del xHTML, pero no del HTML,
podemos citar la obligación de cerrar todas las etiquetas y el uso
exclusivo de minúsculas para las palabras del lenguaje (etiquetas).
● Es un estándar del W3C.
MasterClass Desarrollo Plantillas Joomla!
6. XHTML + CSS + PHP → CSS
● Define el diseño.
● Cascading Style Sheets (hojas de estilo en cascada).
● Tres formas de aplicar:
● CSS externa → recomendada.
● CSS interna.
● CSS en línea.
● Ventajas:
● Separa el diseño del contenido.
● Mejora el mantenimiento.
● HTML más claro de entender (e indexable).
● Distinto diseño para dispositivo: impresora, PDA...
● Es un estándar del W3C.
MasterClass Desarrollo Plantillas Joomla!
7. XHTML + CSS + PHP → PHP
● Lenguaje de programación del lado del servidor.
● Pre-Procesador de Hipertexto:
● Lenguaje de programación interpretado.
● Acceso a base de datos (MySQL).
● Ventajas:
● Desarrollo de páginas web dinámicas.
● Lenguaje multiplataforma.
● Cuidado con las versiones de PHP (5, 6).
● Aplicaciones creadas con PHP:
● Joomla!
● SugarCRM.
● FaceBook.
● Tuenti.
MasterClass Desarrollo Plantillas Joomla!
8. QUÉ ES UNA PLANTILLA
QUÉ ES UNA PLANTILLA
MasterClass Desarrollo Plantillas Joomla!
9. QUÉ ES UNA PLANTILLA
● Es la base de la aplicación de entrega de contenidos.
● Formada por diferentes archivos que controlan la estructura y el
diseño de la página y de sus contenidos.
● Ventajas:
● Proporciona una separación entre la estructura, el contenido y el estilo.
● HTML/XHML/HTML5 → estructura
● DB (MySQL, SQL Server...) → contenido
● CSS → estilo
MasterClass Desarrollo Plantillas Joomla!
11. FRAMEWORKS DE DESARROLLO
● Estructura de software compuesta de componentes
personalizables e intercambiables para el desarrollo de una
aplicación.
● Ventajas:
● Acelerar el proceso de desarrollo.
● Reutilizar código ya existente.
● Promover buenas prácticas de desarrollo (uso de patrones).
● Frameworks de plantillas en Joomla!:
● Gantry: http://www.gantry-framework.org/
● Warp: http://www.yootheme.com/warp/
● ZenGrid: http://www.joomlabamboo.com/joomla-templates/zen-grid-framework
● T3: http://www.joomlart.com/joomla/t3-framework-and-ja-purity-templates
● YJSG: http://yjsimplegrid.com/
MasterClass Desarrollo Plantillas Joomla!
12. ESTRUCTURA BÁSICA DE ARCHIVOS
ESTRUCTURA BÁSICA DE ARCHIVOS
MasterClass Desarrollo Plantillas Joomla!
14. ESTRUCTURA BÁSICA DE ARCHIVOS
● index.html: añade seguridad a las carpetas. Es un fichero vacío.
● index.php: contiene el HTML que define la estructura de la plantilla y
las llamadas PHP a la API de Joomla! (punto de entrada al template).
● params.ini: guarda los parámetros personalizables desde el admin.
● template_thumbnail.png: imagen miniatura de la plantilla.
● template_preview: a partir de 1.7. Imagen un poco más grande.
● css: carpeta con los archivos .css que necesita la plantilla.
● template.css: archivo principal con los estilos.
● images: carpeta con las imágenes utilizadas en la plantilla (y css).
● html: contiene vistas personalizadas de extensiones (técnica de
template overrides).
● templateDetails.xml: contiene información necesaria para la correcta
instalación de la plantilla. Define los parámetros personalizables.
MasterClass Desarrollo Plantillas Joomla!
15. TEMPLATEDETAILS.XML
TEMPLATEDETAILS.XML
MasterClass Desarrollo Plantillas Joomla!
16. TEMPLATEDETAILS.XML
● Imprescindible para que la plantilla sea reconocida por el admin.
● Se utiliza como instalador de la plantilla.
● Todo lo que no esté definido en él, no se instala.
● Datos divididos en 4 partes:
● Datos.
● Archivos.
● Posiciones.
● Parámetros.
● Los datos de los parámetros podrán ser utilizados desde el back para
cambiar la visualización.
● Relacionado con el fichero params.ini
MasterClass Desarrollo Plantillas Joomla!
17. TEMPLATEDETAILS.XML → DATOS
● Datos específicos de la plantilla: versión, autor, email, página web,
año, licencia y descripción.
● Para Joomla! 1.7 en adelante hay cambios.
MasterClass Desarrollo Plantillas Joomla!
18. TEMPLATEDETAILS.XML → ARCHIVOS
● Especificación de los archivos utilizados en la plantilla.
● Recuerda: lo que no se declare aquí, no se instala.
● Para incluir una carpeta completa, utilizar:
<folder>nombre_carpeta</folder>
MasterClass Desarrollo Plantillas Joomla!
19. TEMPLATEDETAILS.XML → POSICIONES
● Qué y cuántas posiciones tendremos en la plantilla.
MasterClass Desarrollo Plantillas Joomla!
20. TEMPLATEDETAILS.XML → PARÁMETROS
● Parámetros: para ser manejados desde el back. Hace que una
plantilla sea más versátil.
● Apartado ligado con el fichero params.ini
● Para Joomla! 1.7 en adelante hay cambios
MasterClass Desarrollo Plantillas Joomla!
22. API JOOMLA!
API JOOMLA! - JDOC
MasterClass Desarrollo Plantillas Joomla!
23. API JOOMLA! - JDOC
● <jdoc:include type=”head”/>
● Va dentro de la cabecera HTML (<head>).
● Muestra el title, metatags, feed y js (MooTools).
● $this->template
● Obtenemos el nombre de la carpeta que contiene nuestra plantilla.
● Uso: para cargar css, favicon, js y cualquier otro archivo.
● $mainframe->getCfg('sitename')
● Obtenemos el nombre del sitio.
● <jdoc:inclue type=”modules” name=”posicion” style=”estilo”/>
● Indica la carga de un módulo de una manera específica:
● name: posiciones cargadas en el fichero templateDetails.xml
● style: table (tabla vertical = columna), horz (tabla horizontal = fila), xhtml (divs),
rounde (divs anidados), raw (sin contenedor).
● También se pueden crear estilos propios.
MasterClass Desarrollo Plantillas Joomla!
24. API JOOMLA! - JDOC
● <jdoc:include type=”component”/>
● Cargamos el contenido principal del sitio (contenido de componentes):
artículos, secciones, categorías, calendarios...
● if($this->countModules('nombre_posicion')){}
● Condicional para saber si hay algún módulo en una posición determinada.
● $this->baseurl
● Contiene la dirección base de nuestro sitio.
● $this->language
● Contiene el idioma en el que se encuentra nuestro sitio.
MasterClass Desarrollo Plantillas Joomla!
25. TEMPLATE OVERRIDES
TEMPLATE OVERRIDES
MasterClass Desarrollo Plantillas Joomla!
26. TEMPLATE OVERRIDES
● Técnica para redefinir la presentación por pantalla de un
componente o módulo de Joomla!
● Se trata de una “clonación” de la vista de la extensión.
● Se incluye a partir de la versión 1.5.
● Ventajas:
● Personalizar el portal sin preocuparse de las actualizaciones de las
extensiones.
● Validación de estándares propuestos por la W3C.
● Conseguir un nivel adecuado de accesibilidad (algunas extensiones, incluso
las nativas, no cumplen con la accesibilidad).
● Importante: la extensión debe cumplir con MVC.
MasterClass Desarrollo Plantillas Joomla!
27. TEMPLATE OVERRIDES → USO
● Crear una carpeta llamada html dentro de nuestra plantilla:
● templates/plantilla/html/
● Dentro de esta carpeta crear las carpetas con los nombres de las
extensiones (componentes y/o módulos) que queramos “redefinir” o
“clonar”.
● Copiar en ellas el contenido de la carpeta tmpl (vistas) y realizar en
esos ficheros las modificaciones/adaptaciones necesarias.
● Joomla!, al generar la página web, mira a ver si existe una carpeta
html en la plantilla y si hay una “clonación” de la extensión que va a
mostrar. En caso afirmativo, muestra ésta en lugar de la original.
MasterClass Desarrollo Plantillas Joomla!
32. EJEMPLO: INDEX.PHP + CSS + PARAMS
● Insertar estilos para la maquetación de la plantilla.
● Conocer algunas clases que Joomla! carga por defecto:
● componentheading: muestra el título del componente.
● contentheading: muestra el título de los artículos.
● buttonheading: muestra iconos PDF, imprimir y enviar a un amigo.
● small: utilizado en varios elementos (como autor del artículo).
● createdate: muestra la fecha de creación del artíuclo.
● readon: utilizada en el enlace de “leer más...” de los artículos.
● article_separator: utilizada por etiqueta <span> para separar artículos.
● moduletable(+ sufijo):carga los div (y sufijo cargado desde back) de los
módulos.
● active: para ítem de menú activo.
● parent: cuando hay sub-ítems, para el elemento padre.
MasterClass Desarrollo Plantillas Joomla!
33. EJEMPLO: INDEX.PHP + CSS + PARAMS
● Otras clases:
● button: asociada a elementos de tipo botón.
● inputbox: asociada a elementos text-input.
● pagenav: asociada a paginación de artículos.
● modifydate: asociada a fecha de modificación del artículo.
● sectiontableentry1/sectiontableentry2: asociada a datos en tablas.
MasterClass Desarrollo Plantillas Joomla!
39. EJEMPLO: INDEX.PHP + CSS + PARAMS
● Íntimamente ligada al fichero templateDetails.xml:
● Sus parámetros se ponen en este fichero.
● Declaración:
● nombre_parametro_1=valor_1
nombre_parametro_2=valor_2
nombre_parametro_3=valor_3
● Llamada desde PHP
● <?php echo $this->params->get('nombre_parametro'); ?>
● Los estilos asociados se añaden en los ficheros .css (template.css)
MasterClass Desarrollo Plantillas Joomla!
42. DIFERENCIA ENTRE VERSIONES
● Novedades a partir de Joomla! 1.7:
● Salida de contenidos sin tablas: todos los archivos de salida están escritos
en xHTML 1.0 Strict.
● templateDetails.xml (estilos de plantilla): creación de variaciones en la
plantilla para una o varias páginas que pueden ser asignadas de forma
específica.
●
Novedades a partir de Joomla! 3.0:
● Incorporación de Twitter Bootstrap (framework CSS).
● Nuevas plantillas front y back adaptadas a móviles (boostrap).
● Actualización plantilla accesible Beez3.
MasterClass Desarrollo Plantillas Joomla!
43. DIFERENCIA ENTRE VERSIONES → TEMPLATEDETAILS.XML
● A partir de Joomla! 1.7:
MasterClass Desarrollo Plantillas Joomla!
44. DIFERENCIA ENTRE VERSIONES → TEMPLATEDETAILS.XML
● Parámetros en Joomla! 1.5:
MasterClass Desarrollo Plantillas Joomla!
45. DIFERENCIA ENTRE VERSIONES → TEMPLATEDETAILS.XML
● Campos de configuración a partir de Joomla! 1.7:
MasterClass Desarrollo Plantillas Joomla!
46. DIFERENCIA ENTRE VERSIONES → INDEX.PHP
● En Joomla! 1.5, La variable mainframe se definía así:
● $global mainframe;
● A partir de Joomla! 1.7, se define así:
● $mainframe = JFactory::getApplication();
MasterClass Desarrollo Plantillas Joomla!
47. FIN DE LA MASTERCLASS
Gracias por vuestra atención. Tenéis más información en:
atención
www.sergioiglesias.net Y www.twitter.com/sergiois
FIN DE LA MASTERCLASS
MasterClass Desarrollo Plantillas Joomla!
48. PUBLICIDAD
●
Libro Joomla! 1.6 – Guía de referencia en español
● Guía de referencia en español
● Minitutoriales
Introducción Instalar XAMPP
Novedades en Joomla! Instalar Joomla! 1.6
1.6 Gestionar permisos
Enlaces de interés Crear un artículo
Joomla! Crear un contacto
Acceso al panel de Integrar noticias
control Añadir un módulo
Sitio submenú
Usuarios Habilitar la vista de
Menús módulos
Contenido Añadir accesskey
Componentes Integrar DNI electrónico
Extensiones Enlaces de interés
Ayuda
http://www.bubok.es/libros/200879/Joomla-16--Guia-de-referencia-y-minitutoriales
MasterClass Desarrollo Plantillas Joomla!