Tutorial: Crear un template para Joomla! 1.5 (Segunda parte)
sábado, 15 de diciembre de 2007

Joomla!

Segunda parte que explica la creación de un template para Joomla! 1.5

 

 

 

Para la creación del index.php, lo primero que haremos será insertar el HTML que formará la maquetación de la plantilla. Para eso partiremos desde este layout de Code-Sucks [ descargar ], que posee un diseño básico de tres columnas, barra de navegación, header y footer.
Una vez descargado el ZIP, al descomprimirlo veremos dos archivos: 'index.html' y 'main.css'.

 

  • A 'main.css' lo renombramos 'template.css' y lo guardamos en la carpeta 'css' creada antes. Más adelante nos centraremos en este estilo en cascada.

  • Por otro lado abrimos a 'index.html' con nuestro editor, copiamos todo el código HTML y lo pegamos en un nuevo archivo llamado 'index.php'. Lo guardamos en la carpeta principal de la plantilla.

 


Lo siguiente será borrar todo el contenido de ejemplo y la información en la cabecera de 'index.php' para luego insertar las directivas PHP que cargaran el contenido de Joomla!


Por lo tanto 'index.php' quedará...

 

 

 

index.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.  
  5.  
  6. </head>
  7.  
  8. <body>
  9.  
  10.    <!-- Begin Wrapper -->
  11.    <div id="wrapper">
  12.    
  13.          <!-- Begin Header -->
  14.          <div id="header">
  15.      
  16.      
  17.          
  18.      </div>
  19.      <!-- End Header -->
  20.      
  21.      <!-- Begin Navigation -->
  22.          <div id="navigation">
  23.      
  24.    
  25.          
  26.      </div>
  27.      <!-- End Navigation -->
  28.      
  29.      <!-- Begin Left Column -->
  30.      <div id="leftcolumn">
  31.      
  32.  
  33.      
  34.      </div>
  35.      <!-- End Left Column -->
  36.      
  37.      <!-- Begin Content Column -->
  38.      <div id="content">
  39.            
  40.  
  41.      
  42.      </div>
  43.      <!-- End Content Column -->
  44.      
  45.      <!-- Begin Right Column -->
  46.      <div id="rightcolumn">
  47.      
  48.  
  49.      
  50.      </div>
  51.      <!-- End Right Column -->
  52.      
  53.      <!-- Begin Footer -->
  54.      <div id="footer">
  55.            
  56.  
  57.          
  58.        </div>
  59.      <!-- End Footer -->
  60.      
  61.    </div>
  62.    <!-- End Wrapper -->
  63.    
  64. </body>
  65. </html>

 

 

Lo siguiente será ir incorporando las directivas que cargaran toda la información para que la plantilla funcione. Aquí es cuando comienzan muchas de las nuevas caracteristicas en la creación de plantillas para Joomla! 1.5.

 

 

  •  <jdoc:include type="head" /> (nueva caracteristica): Esta directiva irá dentro de la cabecera de la plantilla. Cargará el título de la página en cuestión, metatags, feed, y framework. Esto último me parece más que destacable: Joomla! a partir de esta versión decide usar como framework javascript a Mootools . Y esto lo hace de forma nativa, es decir que no nos dá la posibilidad de elegir entre cargarlo o no (a menos que editemos algun archivo fuente). Obviamente no hay que tomarlo para mal, sino al revés, entre lineas el equipo de Joomla! nos esta diciendo que echemos rienda suelta a nuestra imaginación y utilicemos a Mootools para añadir efectos, nuevas propiedades o lo que queramos a la plantilla. En otras palabras, que explotemos todo su potencial.
    Otro hecho destacable es que ahora no se carga más el favicon del sitio, sino que tendremos que añadir las líneas manualmente para mostrarlo. Es por eso que 'favicon.ico' es uno de los archivos que puede integrar la plantilla.

  • $this->template: Obtendremos el nombre de la carpeta contenedora de nuestra plantilla. Se puede utilizar para cargar el estilo en cascada, favicon y cualquier archivo que queramos y se encuentre dentro de esta carpeta.


Con esto ya podemos obtener la cabecera de la plantilla, que queda:

 

 

Cabecera de index.php
  1. <head>
  2. <jdoc:include type="head" />
  3. <link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
  4. </head>

 

 

Seguimos para el resto del documento:

 

  • $mainframe->getCfg('sitename') (nueva característica): Obtendremos el nombre del sitio en cuestión. Lo utilizaremos para mostrarlo en el header. 

 

  • <jdoc:include type="modules" name="posición" style="estilo" /> (nueva característica): Con esta directiva estamos indicando la carga de un módulo en particular y de una manera especifica.
    Esto se establecerá a partir de los parámetros 'name' y 'style'. En el caso del primero, escribiremos la posición de módulos que queremos cargar. Por ejemplo, si deseamos todos los módulo derechos, el parámetro será 'name="right"'. El segundo parámetro posee algunas variantes, el uso de cada una va a depender de nuestras necesidades. Las variedades de estilo pueden ser 'table', 'horz', 'xhtml', 'rounded' y 'raw'. Tanto con 'table' como con 'horz' el contenido del módulo será cargado a través de tablas, la diferencia es que el primer parámetro lo hará de forma vertical (a través de una columna) y el segundo lo hará horizontalmente (a través de una fila). Si utilizamos 'xhtml' el contenido en vez de ser cargado en tablas será insertado en DIVs. El parámetro 'rounded' es similar a 'xhtml' con la diferencia que carga el contenido en varios DIVs anidados. Este último se suele utilizar para realizar bordes redondeados a los módulos a través de imágenes. Finalmente el parámetro 'raw' cargará el contenido solamente sin contenedores ni título.
    Ejemplo: si queremos insertar en DIVs todos los módulos izquierdos en determinada parte del sitio, la directiva quedará conformada así: <jdoc:include type="modules" name="left" style="xhtml" />
    Otro ejemplo: Queremos cargar los módulos que se encuentran en la posición 'top' de manera horizontal: <jdoc:include type="modules" name="top" style="horz" />
    En caso de no especificar el estilo, por default el valor será 'table'.

 

 

  • <jdoc:include type="component" /> (nueva característica): Utilizándola cargaremos el contenido principal del sitio (artículos, secciones, categorías, etc). A diferencia de la inclusión de módulos, esta directiva no posee parámetros para manejar en donde cargar el contenido.

 

 

Aprendiendo esto ya estaremos resolviendo el 80% de index.php. Mostrando el nombre del sitio, cargando los módulos y el contenido principal en la secciones pertinentes, el body del archivo quedará:

 

Body de index.php
  1. <body>
  2.  
  3.    <!-- Begin Wrapper -->
  4.    <div id="wrapper">
  5.    
  6.          <!-- Begin Header -->
  7.          <div id="header">
  8.      
  9.        <h1><a href="index.php"><?php echo $mainframe->getCfg('sitename');?></a></h1>
  10.          
  11.      </div>
  12.      <!-- End Header -->
  13.      
  14.      <!-- Begin Navigation -->
  15.          <div id="navigation">
  16.      
  17.        <jdoc:include type="modules" name="top" style="xhtml" />
  18.          
  19.      </div>
  20.      <!-- End Navigation -->
  21.      
  22.      <!-- Begin Left Column -->
  23.      <div id="leftcolumn">
  24.      
  25.          <jdoc:include type="modules" name="left" style="xhtml" />
  26.      
  27.      </div>
  28.      <!-- End Left Column -->
  29.      
  30.      <!-- Begin Content Column -->
  31.      <div id="content">
  32.            
  33.          <jdoc:include type="component" />
  34.      
  35.      </div>
  36.      <!-- End Content Column -->
  37.      
  38.      <!-- Begin Right Column -->
  39.      <div id="rightcolumn">
  40.      
  41.          <jdoc:include type="modules" name="right" style="xhtml" />
  42.      
  43.      </div>
  44.      <!-- End Right Column -->
  45.      
  46.      <!-- Begin Footer -->
  47.      <div id="footer">
  48.            
  49.        <!--Cargo el footer-->
  50.          <?php include_once('includes/footer.php'); ?>
  51.          
  52.        </div>
  53.      <!-- End Footer -->
  54.      
  55.    </div>
  56.    <!-- End Wrapper -->
  57.    
  58. </body>

 

 

 

Para la carga de los módulos se utilizó el estilo 'xhtml' es decir, en DIVs.
De forma completa, el archivo quedará:

 

index.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. <jdoc:include type="head" />
  5. <link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
  6. </head>
  7.  
  8. <body>
  9.  
  10.    <!-- Begin Wrapper -->
  11.    <div id="wrapper">
  12.    
  13.          <!-- Begin Header -->
  14.          <div id="header">
  15.      
  16.        <h1><a href="index.php"><?php echo $mainframe->getCfg('sitename');?></a></h1>
  17.          
  18.      </div>
  19.      <!-- End Header -->
  20.      
  21.      <!-- Begin Navigation -->
  22.          <div id="navigation">
  23.      
  24.        <jdoc:include type="modules" name="top" style="xhtml" />
  25.          
  26.      </div>
  27.      <!-- End Navigation -->
  28.      
  29.      <!-- Begin Left Column -->
  30.      <div id="leftcolumn">
  31.      
  32.          <jdoc:include type="modules" name="left" style="xhtml" />
  33.      
  34.      </div>
  35.      <!-- End Left Column -->
  36.      
  37.      <!-- Begin Content Column -->
  38.      <div id="content">
  39.            
  40.          <jdoc:include type="component" />
  41.      
  42.      </div>
  43.      <!-- End Content Column -->
  44.      
  45.      <!-- Begin Right Column -->
  46.      <div id="rightcolumn">
  47.      
  48.          <jdoc:include type="modules" name="right" style="xhtml" />
  49.      
  50.      </div>
  51.      <!-- End Right Column -->
  52.      
  53.      <!-- Begin Footer -->
  54.      <div id="footer">
  55.            
  56.        <!--Cargo el footer-->
  57.          <?php include_once('includes/footer.php'); ?>
  58.          
  59.        </div>
  60.      <!-- End Footer -->
  61.      
  62.    </div>
  63.    <!-- End Wrapper -->
  64.    
  65. </body>
  66. </html>

 

 

Si cargamos el archivo como plantilla, y utilizando el estilo en cascada que aun no hemos editado, veremos algo similar a esto: 

 

 

Joomla! 1.5
 

Queria dejar para lo último otra nueva característica, presisamente 'countModules' la cual es una función condicional para realizar acciones dependiendo de los módulos que esten publicados. Ejemplo: Si tenemos publicado los modulos left, right y user1, entonces la plantilla debe ser a 3 columnas. En caso contrario debe mostrarse un diseño a 2 columnas.
La escritura de esta función es:

 

countModules
  1. <?php if($this->countModules(‘condición’)) : ?>
  2.    si se cumple la condicion, realizar una acción
  3. <?php else : ?>
  4.    si no se cumple, realizar otra acción
  5. <?php endif; ?>

 


La condición puede ser:

 

  • countModules('left'): Se cumple la condición si existe un módulo publicado en la posición 'left'
  • countModules('left and right') : Se cumple la condición si existe un módulo publicado en la posición 'left' y 'right'
  • countModules('left or right') : Se cumple la condición si existe un módulo publicado en la posición 'left' ó 'right'
  • countModules('left + right') : Devuelve el número total de módulos en las posiciones 'left' y 'right'


Seguramente más adelante hagamos una plantilla práctica usando esta metodología.

 

 

Descargar ejemplo de esta segunda parte.



En el próximo articulo nos enfocaremos en el estilo en cascada.

 

 

 




 Comentarios (7)
 1 Escrito por DragoN website, el 15-12-2007 22:19
excelente manual, creo que también puede ser útil este tutorial completo sobre joomla, desde su instalación hasta su manejo. 
 
http://www.dragonjar.us/tutorial-de-joomla.xhtml
 2 Escrito por sergio armando website, el 16-12-2007 16:24
Que bien ya hacia mucho esperaba la segunda parte muy bien echo el tutorial
 3 Escrito por David website, el 05-02-2008 13:53
Estupendo!!  
Eres un fiera Leandro! 
Esta nueva versión de Joomla promete mucho. 
Saludos a todos.
 4 Escrito por Pedro, el 19-03-2008 05:00
Estupendos manuales e información, se agradece mucho encontrar esta información. 
 
Enhorabuena y gracias.
 5 Escrito por liliana, el 04-05-2008 12:34
hola¡  
felicitaciones por esta segunda parte ¡muy buena¡ llevaba mucho esperandonla, porfis cuando terminas la tercera enviala pronto. 
gracias
 6 Escrito por Juan, el 31-05-2008 20:49
el tutorial es muy bueno, pero si descargo la zip e intento instalarlo no me deja. Cual es el motivo
 7 Escrito por Tatiana Carrera, el 03-06-2008 19:29
Hola, sabes me ha servido toda tu información, pero cuando vas a publicar lo del estilo en cascada, me gustaria por favor en tablas y en divs, y si puedes hacer alguna explicacion extra de los estilos en cascada te agradeceria mucho. 
Nuevamente gracias 
Taty


  • Por favor, mantenga el tópico de los mensajes en relevancia con el tema del artículo.
  • Lenguaje inapropiado será borrado.


Nombre:
E-mail:
Sitio Web:
Comentario:

Código:* Code

 
Delicious
Mister Wong
< Anterior   Siguiente >

Suscribirse por feed


Suscribirse por e-mail

Tu dirección de correo