This document was uploaded by user and they confirmed that they have the permission to share
it. If you are author or own the copyright of this book, please report to us by using this DMCA
report form. Report DMCA
Overview
Download & View How To Make Joomla Templates as PDF for free.
Cómo crear un template para Joomla! Primera parte sobre como crear un template para Joomla!
A diferencia de otros tutoriales que explican como crear un template para Joomla!, en este, no sera necesario ningún programa del tipo Dreamweaver, ni nada por el estilo, tan solo un editor de textos y conocimiento básico de HTML, CSS y PHP (no mucho).
La estructura básica de un template de Joomla! consta de:
• • • • •
'Index.php' el cual contendrá el HTML y las directivas PHP; 'TemplateDetails.xml', esencial para la instalación del template y su reconocimiento en la administración; Una carpeta llamada 'css' que contendrá el estilo en cascada 'template_css.css'; Una carpeta llamada 'images' que contendrá las imágenes utilizadas para el diseño de la plantilla; 'Template_thumbnail.png', una pequeña imagen que funcionará como previsualizacion del template en la administración.
Por lo tanto un template en Joomla! tendrá la siguiente apariencia:
Todos las plantillas van alojadas en la carpeta 'templates', dentro del directorio raiz de Joomla!. En este caso la plantilla será de tres columnas, header y footer [ Ver Layout ] [ Descargar ]. No es la esencia de esta guia explicar cómo crear el layout, existen varios sitios para descargarlos y ahorrar trabajo. Creación del index.php. Con tan solo saber como se desempeñan tres funciones PHP y dos variables ya se puede empezar con la creación del index...
Funciones: • • •
1
mosShowHead(): Esta función al invocarla muestra la información metatag, el titulo y favicon. Se lo usa entre y . mosMainBody(): Se utiliza para mostrar el cuerpo principal del documento. Se lo usa en el body del documento. mosLoadModules (): Carga los módulos en una posición predispuesta y en un estilo determinado. Para eso posee dos parámetros (posición , estilo). El primero dirá que módulos cargar (left, right, user1, user2, user3, top, etc). El segundo parámetro dirá en que forma cargarlos: 1= horizontal (cada modulo se cargan en celdas en una única fila), 0= normal (cada modulo se cargan en celdas en una
única columna), -1= raw (los módulos se cargan en bruto y sin título), -2= XHTML (muestra a los módulos en divs), -3= extra divs (similar al anterior, pero con más divs). De esta forma si tenemos mosLoadModules (left, -2) cargará los módulos predispuestos en la posición 'left' y los mostrará en diferentes divs. Otro ejemplo. Si tenemos mosLoadModules (user2, 1) cargamos los módulos predispuestos en la posición 'user2' y los mostrará de manera horizontal. Variables: •
•
$mosConfig_live_site: Esta variable contiene la URL del sitio en cuestión. Asi por ejemplo la variable $mosConfig_live_site para este sitio es http://www.leandrodonofrio.com. Se la utilizará para cargar el CSS. $mosConfig_sitename: Contiene el nombre del sitio en cuestión. Asi la variable $mosConfig_sitename para este sitio es Leandono´s Blog.
Con esto ya podemos empezar. El paquete de descarga del layout posee dos archivos, 'index.html' y 'main.css'. Al estilo en cascada lo renombramos 'template_css.css' y lo guardamos en la carpeta 'css' anteriormente creada. En tanto que a index.html lo abrimos con nuestro editor de textos. Veremos un código similar a:
Lo que haremos será copiar todo el código y pegarlo en un nuevo archivo. Este último lo guardamos como 'index.php' y lo metemos dentro de la carpeta de nuestro template. Lo siguiente será insertar las funciones PHP y las variables para cargar el contenido a nuestra plantilla. Para eso abrimos el archivo recién guardado. Empezaremos por la cabecera del documento:
Lo primero que se hizo fue mostrar toda la información metatag, titulo del documento y el favicon. Esto se hizo con la directiva . Por otro lado utilizando la variable se cargo el estilo en cascada del documento guardada en la carpeta 'css' dentro del directorio de nuestro template (nombre_del_template). Esta carpeta se ubicará en el directorio 'templates' cuando hallamos instalado la plantilla. Siguiendo con el header del documento lo que haremos será mostrar el nombre del sitio y linkearlo:
Con estamos mostrando el nombre del sitio. A su vez se utiliza para poder crear un link. Lo siguiente será cargar y mostrar el contenido principal y los módulos:
PHP 1. 2.
3. 4. 5. 6. 7.
8. 9. 10. 11.
12. 13. 14. 15. 16.
17. 18. 19. 20.
21. 22. 23. 24. 25.
26.
La lectura del documento es fácil. En el div 'leftcolumn' cargaremos los módulos predispuestos en la posición 'left' (). Estos serán mostrados en diferentes divs. Lo mismo sucede con el div 'rightcolumn' y los módulos en posición 'right' (). Mientras tanto, el contenido principal del documento se muestra en la columna central a través de . Finalmente nos queda el footer. Aqui podemos poner lo que queramos o incluir los datos predispuestos en 'footer.php'. Para eso:
PHP 1. 2. 8.
4
Editando el archivo 'footer.php' (dentro del directorio 'includes', en la carpeta raiz de Joomla!) podremos cambiar la información a mostrar. Y asi terminamos el 'index.php', el resultado final es:
Descargar ejemplo . En la segunda parte explicaré un poco sobre los atributos CSS más importantes de este CMS. En esta continuación me enfocaré a hablar sobre el CSS de la plantilla. Pensaba explicar también la creación de ' TemplateDetails.xml ' pero debido a lo largo que es este capítulo preferí dejar la explicación para la tercera parte. La apariencia de la plantilla cuando terminemos será:
Está inspirado en Sangre Brillante, una plantilla de Jonathan Lewenhaupt (que seguramente adaptaré más adelante).
El CSS de Joomla!
A diferencia de otros CMS, en Joomla! no queda elemento que no podamos modificar a través de CSS. Esto es porque posee clases y estilos específicos para cada módulo, componente, mambots, los que ya vienen por default y los que podemos crear nosotros en la administración.
6
Dependiendo del punto de vista esta inmensa cantidad de información puede ser un poco desorientadora o convertirse en una ventaja. De cualquier forma, Gustavo enlista todas las clases y elementos de Joomla! (podrán ver que es bastante). Por eso lo que vamos a hacer es poner a punto la maquetacion que teniamos y luego explicar los elementos y clases más importantes de este CMS [ Leer más ]
Puesta a punto de la maquetación.
Recuerdan que en la primera parte partimos de un layout a tres columnas, header y footer [ Ver Layout ]. Lo único que hicimos con él fue tomar su CSS para crear el archivo ' template_css.css '. Ahora modificaremos a este último para dejar la maquetación "en bruto". En otras palabras sacaremos los colores de fondo, bordes, tipo de fuente y tamaño. Además quitaremos el alto de las tres columnas. Por lo tanto el CSS original era:
En el ejemplo especificamos un color, padding y alineación del texto. Además especificamos como se deben mostrar las listas. Vean que se le agregó una imagen llamada ' lista.gif ' la cual está guardada en la carpeta ' images ' dentro del template. 9
•
.createdate / .modifydate: Controlamos la fecha de creación / modificación del artículo. Ejemplo:
.pagenav_next / .pagenav_prev / .back_button: Son las clases que controlan los links ' Siguiente ' , ' Anterior ' y ' Volver '
CSS
CSS
Estilos referentes a los módulos
Conté en la primera parte, que nosotros podemos especificar el estilo en que se mostraran los módulos: tablas, divs, en bruto. El asunto es que cada estilo posee clases diferentes. Por ejemplo si nosotros cargamos un módulo en divs [ mosLoadModules (left, -2) ] la clase contenedora será ' moduletable '. En cambio si cargamos un modulo con extra divs[ mosLoadModules (left, -3) ] la clase será ' module '. Lo mismo sucede si cargamos el modulo en tablas. Yo en este caso solamente me voy a abocar a nombrar las clases si cargamos los modulos en divs (-2) simplemente porque así se cargaron en el ejemplo del primer tutorial. En todo caso, si cambian el estilo de carga tengan en cuenta lo que dije.
•
.moduletable: Cada modulo será cargado en un div diferente. Cada uno de estos divs tendrán la clase ' moduletable '. Ejemplo:
CSS 1. .moduletable{ 2. margin-bottom:20px; 3. }
En el ejemplo hicimos que cada modulo cargado esté separado unos 20px.
10
•
.moduletable h3: Es el título de cada módulo. Ejemplo:
De esta forma especificamos el color, borde, fuente y padding de la caja de introducción de texto. Además al pasar el mouse sobre él cambia el color de fondo.
Clases personalizadas para los módulos
11
Al principio conté que son muchas las posibilidades que nos da Joomla! para personalizar la plantilla. También nombre que es posible crear nuestras propias clases para cada módulo. Sin ir más lejos, al instalar Joomla! dos módulos tendrán por default clases personalizadas: el módulo ' Menú principal ' y el módulo ' Menú superior '. En la administración, si entramos a la configuración de cualquiera de estos dos módulos veremos en la zona de parámetros:
Es decir que podemos especificar una clase tanto para el modulo como para los elementos del menú en sí (esta ultima opción es solo para módulos del tipo menú). En el primer caso al modulo que contiene ' Menú principal ' se le agrego el sufijo ' _menu ' por lo cual la clase final será ' moduletable_menu '. Noten que el sufijo ' _menu ' se acopló a la clase ' moduletable ' nombrada más arriba. En el segundo caso se añadió el sufijo ' -nav ' a los elementos del ' Menú superior '. De esta manera la clase resultante para cada elemento será ' mainlevel-nav '
Estilos de los menús
Los módulos del tipo menú son los que más posibilidades de personalización entregan. Además de poder crear una clase única para cada modulo y cada elemento del menú, nos permiten elegir de que manera mostrar los elementos: de forma vertical, de forma horizontal o en lista:
La manera de mostrar los elementos va a depender del tipo de menú que tengamos. Tanto en la manera ' Vertical ' como ' Horizontal ' los elemento se cargan en una tabla. Si elegimos ' lista ', los elementos se cargan en una unica lista. Por eso es conveniente tener en cuenta como esta puesto este parámetro para que no existan problemas al diseñar la plantilla.
Estilos globales:
Ahora nos queda agregar un par de reglas para elementos globales como body, img, li, a, etc. Es muy 12
importante las reglas que establezcamos en la hoja de estilos en cascada con respecto al body del documento. Esto es debido a que el editor WYSIWYG de Joomla! tomará estas reglas para mostrarnos el contenido a medida que lo vamos agregando. Por eso, recomiendo que las reglas de body tan solo sean sobre el tipo de fuente, color, y color del background:
Si por ejemplo especificamos más reglas (alineación del texto, imagen de fondo, etc) cuando estemos usando el editor WYSIWYG será muy dificultoso crear los artículos. En caso de que necesitemos agregar más información del estilo, tan solo creamos un div contenedor del body y ahí si ponemos las reglas que queramos. Especificamos un par de reglas para los demás elementos:
Con esto terminamos el archivo ' template_css.css ' , el resultado final ordenado es:
CSS 1. 2. 3. 4. 5.
/*---------------------------------------------------Template de ejemplo para Joomla! version: 1.0 date: 09/04/07 author: [Leandro D´Onofrio] 6. email: [ [email protected] dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla ] 7. website: [www.leandrodonofrio.com] 8. Maquetación: 9. Created by Keith Donegan of Code-Sucks.com 10.E-Mail: [email protected] dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla 11.You can do whatever you want with these layouts, 12.but it would be greatly appreciated if you gave a link 13.back to http://www.code-sucks.com 14.------------------------------------------------------*/ 15. 16. 17./* Estilos globales 18.------------------------------------------------------*/ 19.* { 20.margin: 0; 21.padding: 0; 22.border: 0; 23.} 24. 25.body{ 26.font: 1.1em/1.4em Georgia, "Times New Roman", Times, Serif; 27.background: #FFFFFF; 28.color: #4F4F4F; 29.} 30. 31.img { 32.padding: 4px 18px 4px 8px; 33.} 34. 35.a{ 36.text-decoration:none; 37.color: #235033; 38.} 39. 40.li { 41.list-style:none; 42.} 43. 44.li a { 45.font: 1.1em Georgia, "Times New Roman", Times, Serif; 46.color:#046380; 47.} 14
No se agregó nada más de lo que se mostró, tan solo comentarios para organizar el CSS [Descargar ejemplo ] Como bien dije antes , solo queda por explicar la creación del archivo 'templateDetails.xml'. Además había quedado en poner un par de puntos que no pude mostrar anteriormente. El archivo templateDetails.xml Dicho es una parte esencial para la instalación y reconocimiento de la plantilla en la administración de Joomla!. Además con él podemos brindar información sobre el autor, datos de contacto, licencia, etc. Básicamente tendremos las siguientes etiquetas y sus correspondientes datos:
XML 1. 2. <mosinstall version="1.0" type="template"> 3. Nombre del template 4. Version del template 5. Fecha de creación 6. Nombre del autor 7. E-mail del autor 8. Url del autor 9. <description>Una breve descripción 10. 11. Archivos de la plantilla 12. 13.
Más alla de los datos de autor y nombres, es muy importante que especifiquemos correctamente todos los archivos de la plantilla, con su correspondiente carpeta contenedora y formato de archivo. En caso de no especificar alguno, sencillamente ese archivo no será reconocido ni instalado...
En nuestro caso, con la plantilla de ejemplo que estamos creando tendremos:
XML 1. 2. <mosinstall version="1.0" type="template"> 3. Green Joomla! 4. 1.0 5. 04/2007 6. Leandro D´Onofrio 7. [email protected] dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla 8. http://www.leandrodonofrio.com/ 9. <description>Sencilla plantilla en tonos verdes 10.
Guardamos el archivo y lo situamos en la carpeta raiz de la plantilla. Queda crear la imagen 'template_thumbnail.png' que actuará de preview en la administración. Lo ideal es que sea una captura de la plantilla, con un tamaño aproximado de 200x150 px. Una vez hecho, seleccionamos todos los archivos (index.php, templateDetails.xml, template_thumbnail.png) y carpetas (css e images) y los comprimimos en zip. Y eso es todo, ya hemos terminado una plantilla para Joomla!. Me quedan aclarar unos puntos más. Notas aparte sobre index.php •
.En la primera parte del tutorial, al crear el index, dentro de la cabecera teníamos:
PHP 1. 2. 3. 4. 5. 6.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 7. Lo cual no está mal, pero añadiendo un par de cosas podemos mejorarlo:
PHP 1. 2. <meta http-equiv="Content-Type" content="text/html; " /> 3. 4. id ) { 6. initEditor(); 7. } 8. 9. mosShowHead(); 10.?> 11. 12. 13. En primer lugar se incorporó la directiva PHP '' para mostrar una codificación correcta en la plantilla. En segundo lugar además de mostrar el titulo, metatags y favicon con 'mosShowHead()', se agregó una función condicional, para que, si configuramos al sitio 'fuera de línea', aun asi podamos seguir viéndolo nosotros, no así las demás personas (veran el mensaje que hayamos especificado en la configuración). Finalmente se incorporó la directiva 'getTemplate(); ?>' en la ruta de obtención del estilo en cascada. Esta es la manera genérica para cargar un CSS en Joomla!, así no será necesario poner el nombre de la plantilla para cada index.php que hagamos.
18
•
Mostrar un diseño si tal modulo está publicado. Para eso:
1. 2. 3. 4. 5.
PHP
Se creó una función condicional, en palabras, si el modulo user1 está publicado mosCountModules('user1') - mostramos todo que hay entre las llaves contenedoras (el div "caja" y el contenido del modulo). En caso de no estar publicado dicho modulo, no se mostrará nada (ni el div "caja" ni el modulo)
Notas aparte sobre el CSS En la segunda parte del tutorial ponía énfasis en las reglas que vamos a incorporar al body del documento. El problema radica que el editor WYSIWYG de Joomla! toma estas reglas para mostrar el contenido a medida que lo vamos agregando. Si no podemos cumplir con esto, una solución es crear un estilo en cascada aparte y especificar en las opciones del editor WYSIWYG que cargue a este cuando estamos creando contenido. El archivo en cuestión se llamará 'editor_content.css', lo guardamos junto a 'template_css.css' dentro del directorio 'CSS' y tendrá estas reglas:
Lo siguiente será ir a las opciones del editor (Administrador de Mambots --> Editor WYSIWYG TinyMCE) y en la opción Template CSS classes ponemos No. Guardamos y listo, cada vez que estemos trabajando con el editor, el contenido se mostrará según editor_content.css. Ahora si, eso es todo, sientanse libres de hacer con la plantilla lo que quieran.