Recursos web, diseño, joomla!, tutoriales, opinión, algunas noticias...

Suscríbete a través del feed RSS
Recibe los últimos artículos a tu e-mail
Realizar una búsqueda

Cómo crear un template para Joomla! (Primera parte) Compartelo!
martes, 27 de marzo de 2007

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:

Estructura de un template en Joomla!

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:

  • mosShowHead(): Esta función al invocarla muestra la información metatag, el titulo y favicon. Se lo usa entre <head> y </head>.
  •  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:

 

HTML
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Fixed Width CSS Layouts - 3 Column - fw-34-3-col</title>
  5. <link rel="stylesheet" type="text/css" href="main.css" />
  6. </head>
  7.  
  8.  
  9.    <!-- Begin Wrapper -->
  10.    <div id="wrapper">
  11.    
  12.          <!-- Begin Header -->
  13.          <div id="header">
  14.      
  15.            This is the Header     
  16.          
  17.      </div>
  18.      <!-- End Header -->
  19.      
  20.      <!-- Begin Left Column -->
  21.      <div id="leftcolumn">
  22.      
  23.            Left Column
  24.      
  25.      </div>
  26.      <!-- End Left Column -->
  27.      
  28.      <!-- Begin Content Column -->
  29.      <div id="content">
  30.            
  31.             <a href="#">Download this CSS Layout</a>     
  32.      
  33.      </div>
  34.      <!-- End Content Column -->
  35.      
  36.      <!-- Begin Right Column -->
  37.      <div id="rightcolumn">
  38.      
  39.            Right Column
  40.      
  41.      </div>
  42.      <!-- End Right Column -->
  43.      
  44.      <!-- Begin Footer -->
  45.      <div id="footer">
  46.            
  47.          This is the Footer   
  48.          
  49.        </div>
  50.      <!-- End Footer -->
  51.      
  52.    </div>
  53.    <!-- End Wrapper -->
  54.    
  55. </body>
  56. </html>

 

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:

 

PHP
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  3. <!--Incorporo el Título, Info Meta, y Favicon-->
  4. <?php mosShowHead(); ?>
  5. <!--Obtengo mi estilo en cascada-->
  6. <link href="<?php echo $mosConfig_live_site;?>/templates/nombre_del_template/css/template_css.css" rel="stylesheet" type="text/css" />
  7.  
  8. </head>

 

Lo primero que se hizo fue mostrar toda la información metatag, titulo del documento y el favicon. Esto se hizo con la directiva <? php mosShowHead(); ?>. Por otro lado utilizando la variable <?php echo $mosConfig_live_site;?>  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:

 

PHP
  1. <!-- Begin Header -->
  2.         <div id="header">
  3. <!-- Muestro el nombre del sitio -->   
  4. <h1><a href="<?php echo $mosConfig_live_site; ?>"><?php echo $mosConfig_sitename; ?></a></h1>   
  5.          
  6.   </div>
  7. <!-- End Header -->

 

Con <?php echo $mosConfig_sitename; ?> estamos mostrando el nombre del sitio. A su vez se utiliza <?php echo $mosConfig_live_site; ?> para poder crear un link.

Lo siguiente será cargar y mostrar el contenido principal y los módulos:

 

PHP
  1. <!-- Begin Left Column -->
  2.   <div id="leftcolumn">
  3.      
  4. <!-- Cargo los modulos left a la izquierda -->   
  5. <?php mosLoadModules ( 'left',-2);?> 
  6.      
  7.   </div>
  8. <!-- End Left Column -->
  9.      
  10. <!-- Begin Content Column -->
  11.   <div id="content">
  12.  
  13. <!-- Cargo el contenido principal -->         
  14. <?php mosMainBody(); ?>   
  15.      
  16.   </div>
  17. <!-- End Content Column -->
  18.      
  19. <!-- Begin Right Column -->
  20.   <div id="rightcolumn">
  21.  
  22. <!-- Cargo los modulos right a la derecha -->   
  23. <?php mosLoadModules ( 'right',-2);?> 
  24.      
  25.   </div>
  26. <!-- End Right Column -->

 

La lectura del documento es fácil. En el div 'leftcolumn' cargaremos los módulos predispuestos en la posición 'left' (<?php mosLoadModules ( 'left',-2);?>). Estos serán mostrados en diferentes divs. Lo mismo sucede con el div 'rightcolumn' y los módulos en posición 'right' (<?php mosLoadModules ( 'right',-2);?>). Mientras tanto, el contenido principal del documento se muestra en la columna central a través de <?php mosMainBody(); ?>.

Finalmente nos queda el footer. Aqui podemos poner lo que queramos o incluir los datos predispuestos en 'footer.php'. Para eso:

 

PHP
  1. <!-- Begin Footer -->
  2.   <div id="footer">
  3.  
  4. <!-- Cargo el footer -->       
  5. <?php include_once('includes/footer.php'); ?> 
  6.          
  7.   </div>
  8. <!-- End Footer -->

 

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:

 

PHP
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <!--Incorporo el Título, Info Meta, y Favicon-->
  6. <?php mosShowHead(); ?>
  7. <!--Obtengo mi estilo en cascada-->
  8. <link href="<?php echo $mosConfig_live_site;?>/templates/nombre_del_template/css/template_css.css" rel="stylesheet" type="text/css" />
  9. </head>
  10.  
  11. <body>
  12.  
  13. <!-- Begin Wrapper -->
  14.    <div id="wrapper">
  15.    
  16. <!-- Begin Header -->
  17.         <div id="header">
  18. <!-- Muestro el nombre del sitio -->   
  19. <h1><a href="<?php echo $mosConfig_live_site; ?>"><?php echo $mosConfig_sitename; ?></a></h1>   
  20.          
  21.   </div>
  22. <!-- End Header -->
  23.      
  24. <!-- Begin Left Column -->
  25.   <div id="leftcolumn">
  26.      
  27. <!-- Cargo los modulos left a la izquierda -->   
  28. <?php mosLoadModules ( 'left',-2);?> 
  29.      
  30.   </div>
  31. <!-- End Left Column -->
  32.      
  33. <!-- Begin Content Column -->
  34.   <div id="content">
  35.  
  36. <!-- Cargo el contenido principal -->         
  37. <?php mosMainBody(); ?>   
  38.      
  39.   </div>
  40. <!-- End Content Column -->
  41.      
  42. <!-- Begin Right Column -->
  43.   <div id="rightcolumn">
  44.  
  45. <!-- Cargo los modulos right a la derecha -->   
  46. <?php mosLoadModules ( 'right',-2);?> 
  47.      
  48.   </div>
  49. <!-- End Right Column -->
  50.      
  51. <!-- Begin Footer -->
  52.   <div id="footer">
  53.  
  54. <!-- Cargo el footer -->       
  55. <?php include_once('includes/footer.php'); ?> 
  56.          
  57.   </div>
  58. <!-- End Footer -->
  59.      
  60.    </div>
  61. <!-- End Wrapper -->
  62.    
  63. </body>
  64. </html>

 

Descargar ejemplo .

En la segunda parte explicaré un poco sobre los atributos CSS más importantes de este CMS.

 

 


¿Te interesó este artículo?Puedes suscribirte al feed RSS ó dejar tu email para recibir las últimas noticias, tal como lo hacen actualmente las 2513 personas que siguen al blog




 Comentarios (52)
 1 Escrito por HernanMDQ website, el 10-08-2007 16:49
Excelente Lea. Gracias por este gran aporte a la comunidad. Espero con ansias tu segundo tutorial. 
 
Salu2.
 2 Escrito por Diego, el 10-08-2007 16:52
Luego de muchas lunas ya va naciendo mi primera plantilla. Aún asi esperare pues a la segunda parte de tu tutorial que me ha despejado varias dudas para evitar el simple copiar y pegar. :D
 3 Escrito por Jaozze, el 10-08-2007 16:52
Excelente tutorial ;)
 4 Escrito por Erick Mines L. website, el 10-08-2007 16:53
Hola amigos, quisiera dar un pequeño aporte para complementar este articulo. En www.aulaideal.com estamos desarrollando una serie de videotutoriales (curso) sobre mambo/joomla. 
Desde la Instalacion en Local hasta la configuracion y construccion de plantillas. 
Espero que os entretengais 
Un abrazo
 5 Escrito por Lozano, el 10-08-2007 16:54
Perfecto!. Me gustan las explicaciones concretas y sencillas. Saludos.
 6 Escrito por fullman, el 10-08-2007 16:55
Excelente trabajo! Simplificaste mi día de hoy...gracias
 7 Escrito por Fede, el 10-08-2007 16:55
genial, simple, concreto. 
Gracias Leo.
 8 Escrito por Maurício, el 10-08-2007 16:56
genial... Gracias
 9 Escrito por joseBedoya, el 10-08-2007 16:56
Excelente tutorial, espero ponerlo en práctica, ya que tengo que hacer pronto algo en Joomla.
 10 Escrito por paco, el 10-08-2007 16:58
Esta muy bien el tutorial verdaderamente Felicidades!! 
Pero no sabes de alguna manera para evitar tantas tablas del core? 
Así sea hackeandolo no importa pero esas tablas son lo unico que no me gusta de joomla y me hace vacilar 
Cualquier material o algo así que tengas a bien recomendarnos te lo agradecería también en el alma tio
 11 Escrito por Leandro website, el 10-08-2007 16:59
Existe una versión de Joomla!, llamada "Accesible Joomla!" (a8e) la cual es una modificacion a la original con varios cambios con respecto a la carga del contenido, en vez de cargar todo en tablas, lo hace en diferentes divs. En su página oficial están los parches o puedes descargar el paquete entero de instalación. La gran mayoria de clases y identificadores son iguales que la versión original, por lo cual el tutoriales para crear platillas sirve igual. 
 
Por otro lado te comento que para la versión 1.5 de Joomla! está pensado dejar un poco atras la incorporación del contenido a través de tablas. Saludos
 12 Escrito por paco, el 10-08-2007 17:00
Whow gracias por la respuesta.... 
 
Y felicidades por tu blog te tengo marcado entre los que leo a diario
 13 Escrito por Carlos Vazquez, el 10-08-2007 17:01
Hola, Leandolo, está buenísimo tu tutorial. Mil gracias por el aporte. Que excelente aporte a la red.
 14 Escrito por Otaplin, el 10-08-2007 17:02
Hola Leandono. 
Excelente tutorial !! 
Mviene de mucha utilidad yo solo modifique una plantilla bastante que ya parece otra pero nunca hice una desde 0 asi que muchas gracias !! 
 
Solo una consulta como puedo modificar la resolucion a la que se adapta mi plantilla (es de 1024x768) lo que pasa es que quiero dejarla a 1640 x 1200 
 
Saludos y muchas gracias
 15 Escrito por Leandro website, el 10-08-2007 17:03
Modifica los valores de las columnas en el template_css.css, aunque, en mi opinión, hacer un diseño a 1640 x 1200 es demasiado. Saludos
 16 Escrito por Roger Martinez Hernandez, el 10-08-2007 17:03
Felicidades esto es de lo mejor que he encontrado en español "tras el telón de Mr. Joomla" sin embargo me gustaria saber si Leandono tiene algun articulo o conoce alguno para poder editar mas aun las llamadas de los modulos [mosLoadModules()] es decir, cuando me interesa un modulo en especial pero no todos los elementos que la componen. Se que esto debi escribirlo en la primera parte pero crei que aqui se tocaria un poco ese punto, a pesar de que tengo esa duda aun, no dejo de pensar que se lleva un 10...
 17 Escrito por German, el 10-08-2007 17:04
Excelente tutorial, muchas gracias! 
estoy tratando de migrar mi sitio de Blogspot a Joomla y la verdad que sin tener casi conocimientos me hiciste todo mas facil.
 18 Escrito por dicinio, el 10-08-2007 17:05
Buen Aporte a la comunidad! gracias, esto tambien me estimula a aportar mi plan es hacer un video tutorial para realizar templates detalladamente si es que alguien se anima a ayudar en este proyecto,espero que escriban a Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla  
Saludos a todos y sigamos adelante!!
 19 Escrito por inzael, el 10-08-2007 17:06
Muchas gracias Leandono, es un tutorial muy sencillo y comprensible.
 20 Escrito por Newflaco2001, el 10-08-2007 17:06
Te pasaste Leando muy bueno este tutorial recien acabo de leer la priemra parte voy a la segunda y de seguro me ayudaras mucho enla creacion de mi propia plantilla. 
Sigue adelante, leyendo se aprende. Y practicando mucho mas.
 21 Escrito por Jorge, el 10-08-2007 17:07
Genial tutorial! Espero poder hacer una plantilla desde cero, limpia, con mi propio diseno.
 22 Escrito por carlos c, el 28-08-2007 22:55
por que usar el div wrapper porfavor responder a mi consulta...gracias
 23 Escrito por breyson, el 29-08-2007 14:12
Excelente...al fin estoy entendiendo este asunto...espero aprender pronto para enviar aportes
 24 Escrito por akhenaton website, el 14-09-2007 01:54
Amigos Tengo un problema y lo cuelgo aqui con ls ezperanza de una ayuda. En m web uso joomla, c/templates bajadas de la web,y no me duran una semana funcionando que luego con las encuentra el sistema. error y me linkea a http 404. Alguno sabe que puede ser? Gracias X cualquier ayuda.
 25 Escrito por jorgechess website, el 18-09-2007 05:50
¿por que usar el div wrapper porfavor responder a mi consulta...gracias? 
Se usa para meter todas los contenidos o diseño en una caja, o contenedor. El diseño con CSS es ir contruyendo cajas, en este caso el wrapper las contiene a todas.
 26 Escrito por jose maria, el 19-09-2007 16:39
Gracias, es bueno 
saludos
 27 Escrito por oldie, el 24-09-2007 16:17
Muy bueno este tutorial... acabo de empezar con joomla! y way!
 28 Escrito por maria, el 24-09-2007 20:49
hi :) 
como puedo incorporar a un menu normal de joomla mi propio menu desplegable. te agradeceria un monton please
 29 Escrito por OoO, el 04-10-2007 14:12
Huh un poco rollo... :S
 30 Escrito por carlos, el 06-10-2007 19:23
oye pues muy bien tutorial...por fin ya comprendi bien esto...me imaginaba que asi funcionaba pero no estaba seguro....gracias por este buen aporte......
 31 Escrito por Gustavo Alzate, el 26-10-2007 19:49
Hago todo lo que dice el tutorial, pero cuando voy a subir el comprimido joomla me dice que: ERROR: No encuentro el archivo de configuración XML en el paquete. 
 
y abajito muestra esto: Archivo de desinstalación no encontrado: 
C:\xampp\htdocs\joomla\media\install_47225f50350a3\cea_templ ates\ No entiendo
 32 Escrito por Alberto website, el 31-10-2007 13:32
Excelente tutorial me a servir mucho esta grossisimo thanks...
 33 Escrito por MaLkAvIaN_NeT website, el 10-11-2007 20:09
uno de los pocos tutoriales entendibles y loables de la red
 34 Escrito por Joan website, el 24-11-2007 06:32
Una pregunta, como hago para que cargue un css diferente según la resolución del navegador? Es decir, uno para 800x600 y otro para el resto de resoluciones
 35 Escrito por Goku_db, el 30-12-2007 00:58
excelentes tutos una pregunta sirve para crear un template para blogger ¿? disculpen la ignorancia jeje
 36 Escrito por roque website, el 03-01-2008 16:17
Escrito por Gustavo Alzate, el 26-10-2007 19:49  
Hago todo lo que dice el tutorial, pero cuando voy a subir el comprimido joomla me dice que: ERROR: No encuentro el archivo de configuración XML en el paquete.  
 
y abajito muestra esto: Archivo de desinstalación no encontrado:  
C:\xampp\htdocs\joomla\media\install_47225f50350a3\cea_templ ates\ No entiendo 
 
 
// desabilita php secure
 37 Escrito por Leandro website, el 03-01-2008 18:00
El ejemplo de esta parte del tutorial no es para instalar. La tercera parte es la que contiene la plantilla ya lista para probar. Saludos
 38 Escrito por Locuro website, el 05-01-2008 13:04
Muy bueno,la verdad, muy detallado lleno de explicaciones \"entendibles\" y concreto. 
Muchas gracias Leandro. Gran aportación.
 39 Escrito por wilson website, el 30-01-2008 11:18
Aprender a crear plantilla de de cero me parecía todo un martirio y traumatico pero con esta explicación espero lograr crear una gracias LEO saludos
 40 Escrito por Eduardo website, el 04-02-2008 09:58
Hola señor leando, muchas gracias por su tutorial. 
Muy didactico y la verdad es bueno que publiques estos tutoriales para poder ganarno la vida, jeje. 
Saludos sr profesor chuack
 41 Escrito por jairo, el 07-02-2008 10:42
bueno este momento cuando son exactamente casi 9 de la mañana empesare a realizar los primeros pasos para la realizacion de un templates para joomla 1.5cr4 espero tener suerte hoy
 42 Escrito por Raptor_00 website, el 14-02-2008 13:22
exelente hermano... deseo terminar ya las otras partes del articulo...
 43 Escrito por RODRIGO website, el 02-03-2008 15:31
TE SOBRASTE, MUCHISIMAS GRACIAS, QUE DIOS TE BENDIGA LEO POR NO SER EGOISTA Y COMPARTIR TUS CONOCIMIENTOS. TE FELICITO ES MUY BUENO TU TUTORIAL, SOY PSICOLOGO PERO ME INTERESA EL DISEÑO WEB, CON TU APORTE ME ENTENDI EL MANEJO DE LAS PLANTILLA EN JOOMLA. MUCHISIMAS GRACIAS DE NUEVO Y QUE DIOS TE LO MULTIPLIQUE. 
 
TENGO UNA PREGUNTA.¿COMO HAGO PARA QUE MI PAGINA SE AJUSTE AUTOMATICA A CUALQUIER RESOLUCION DE PANTALA, O COMO PUEDO CENTRARLA PARA QUE EN RESOLUCION 1024*768 Y SUPERIORES SE VEA CENTRADA. GRACIAS.
 44 Escrito por rafa, el 10-04-2008 09:52
asads
 45 Escrito por Claudia, el 15-04-2008 03:11
Necesito agregar un en el header de mi sitio de manera de poder mostrar imágenes diferentes de fondo (del header) según se pique en los items del menú.Cómo se hace eso? ya edité el index del template pero al agregarle las etiquetas e incluirle el módulo se me descuadra. Te agradecería me puedas orientas. Gracias
 46 Escrito por djeork website, el 22-05-2008 15:22
men ya he visto el segundo tutorial correr por internet no se si sera el mismo pero aver si lo chekeas y nos explica gracias por el tuto voy hacer mi template
 47 Escrito por djeork website, el 22-05-2008 15:23
men dsiculap ya lo tenias toy un poco ciego pero gracias
 48 Escrito por Carlos P, el 23-05-2008 18:18
Gracias por este importante Aporte. Gente como tu es la que ayuda para que podamos desarrollar libremente en la web. Gracias por todo.
 49 Escrito por martin website, el 23-05-2008 22:21
oye mi estimado, no muy le agarro todavia, me puedes explicar con piedritas, gracias... 
 
lo que pasa que no se mucho sobre esto pero me gustaria saber, y me pierdo en donde colocar lo que indicas arriba. 
 
Gracias
 50 Escrito por diego, el 29-05-2008 11:48
necesito ayuda por favor..... 
necesito saber como agregar una imagen en Right Column y colocarle un link de modo q pueda acceder con solo hacer clic en la imagen. porfa necesito ayuda


 
< Anterior   Siguiente >

Puedes suscribirte al blog de dos formas

Ingresando tu e-mail:

Utilizando el canal RSS:

Realizar una búsqueda