Qué es una Plantilla Joomla!?



Documentos relacionados
1 DISEÑO WEB de ANCHO FIJO con 2 COLUMNAS FLOTANTES

Capítulo 1 Documentos HTML5

MAQUETACIÓN CON CSS. Elementos principales. Diseño fijo, líquido, elástico

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

CAJA DE ESQUINAS REDONDEADAS Y ANCHO FIJO ver. 3

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Manual CMS Mobincube

Marta Soler Tel: Fax: TUTORIAL DEL GESTOR DE CONTENIDOS DOTNETNUKE

Creación de una página web accesible sencilla

Gestión de plantillas en Joomla!

La ventana de Microsoft Excel

GUÍA PARA LA INSTALACIÓN Y USO DE WORDPRESS BY MASTERHACKS. Guía de instalación y uso de Wordpress Página 1

HTML. HyperText Markup Language (Lenguaje de Marcas de Hipertexto)

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Curso PHP Módulo 1 R-Luis

TUTORIAL SOBRE CÓMO CREAR Y GESTIONAR UN BLOG CON BLOGGER

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Crear la base de datos antes de la instalación de Wordpress.

Laboratorio 8. Hojas de estilo, plantillas y bibliotecas en Dreamweaver

Internet Information Server

MANUAL DE USUARIO CMS- PLONE

Curso de PHP con MySQL Gratis

La única regla que debe de tener presente siempre, es que cada etiqueta que abra <etiqueta> debe de cerrarla en el mismo orden < /etiqueta cerrada>.

Mi primera web... Pues bien una vez que tengamos el documento abierto, podemos empezar a trabajar de dos formas:

HTML & Fila Zilla. Temario:

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

DISEÑO WEB ADOBE DREAMWEAVER CS3

Tutorial básico. Apunte creado por imedia Creativa

Diseño de páginas web 2011

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas.

Operación Microsoft Access 97

Wenceslao Zavala.

5.- Crear páginas web con Nvu

Manual hosting acens

MANUAL TECNICO DE ING BIZBOX

Plantilla de texto plano

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

ESTRUCTURA DE LOS SITIOS DE CATEDRAS

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Acronis License Server. Guía del usuario

Administración de portales Joomla (II)

Sharepoint es un producto de Microsoft destinado al desarrollo de Intranets Corporativas y Portales Públicos (manejador de contenidos).

Introducción al desarrollo web (idesweb)

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos.

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Una guía rápida para. Crear Boletines de Noticias

MANUAL COPIAS DE SEGURIDAD

Maquetación web con 960 Grid System y Drupal

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

Sección de Introducción.

HIPERVÍNCULOS. Es posible asignar un vínculo a un texto, a una imagen, o a parte de una imagen

Manual Sistema de Afiliados Lomas Travel

El módulo de texto plano es un sencillo editor. Al seleccionarlo en la caja de módulos, el área central adoptará al siguiente aspecto:

Laboratorio 6. Creación de sitios Web - Dreamweaver

Lectura No. 3. Contextualización. Nombre: Página web DISEÑO DIGITAL 1. Para qué te sirve saber elaborar una página web?

Creando una webquests

Virtual-C: Una Herramienta para Administración de Contenidos en Sitios Web

Gestor de contenidos de la plataforma web

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

para jóvenes programadores

Uso de Visual C++ Pre-Practica No. 3

Diseño WEB. Nivel: 5º semestre Horas semanales: 3 horas Código: Créditos: 2 créditos

Instalar Joomla. Objetivo: descargar Joomla, instalar Joomla

ELABORACIÓN DE PÁGINAS WEB. CBTIS No. 02 ISC. RICARDO GARCÍA LÓPEZ

Gestión de Extensiones en Joomla!

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

TEMA 9 CREACIÓN DE PÁGINAS WEB

MANUAL DE CREACIÒN DE PAGINAS WEB CON LA APLICACIÓN ON-LINE JIMDO

MANUAL DE. manual de Joomla JOOMLA

Bootstrap: Introducción práctico en el Diseño Web

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA

13.1. Tablas dinámicas de Excel

Tarea 1 Diseño Web en entorno cliente José Luis Comesaña

MANUAL DE CAPACITACIÓN Sistema Joomla WEB CMS 2.5. HogarPara. SusNiños.

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

Qué es y para qué sirve Excel2007?

Introducción al desarrollo web (idesweb)

Gestor de Contenidos CMS. Prof: Ing. Henrry Servitá

PASOS PARA CREAR UNA PÁGINA WEB

Cómo gestionar menús en Drupal 7

Creación del sitio web del Laboratorio F1

Kaldeera Advanced Forms 2009 Guía del usuario

PLANTILLAS DE DOCUMENTOS EN WORD 2007

Figura 4.6: Prototipo de la pantalla de inicio.

Manual de NVU Capítulo 5: Las hojas de estilo

Manual de uso del Taglib de Template Saga

Manual de Administración Solución ADSL Profesional

Lic. Saidys Jiménez Quiroz Tecnología e Informática Grado 7 CESCOJ 2011

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

TUTORIAL PARA REDIMENSIONAR FOTOS

5. Composer: Publicar sus páginas en la web

APLICACIONES INFORMÁTICAS de BASE de DATOS

Tablas en HTML. Tipos de celdas. Ing. Tomás Urbina Programación Web y Desarrollo de la Plataforma Web

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Manual de Instalación y uso de FTP

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Transcripción:

Qué es una Plantilla Joomla!? Una plantilla Joomla! consiste en una serie de archivos dentro del CMS Joomla! que controlan la presentación del contenido. Una plantilla Joomla! no es un website; no se puede considerar como un website totalmente diseñado. La plantilla son las bases fundamentales de diseño definidos para tu sitio Joomla! Para producir el efecto de un website completo, la plantilla trabaja mano a mano con el contenido albergado en la base de datos Joomla! Un ejemplo de lo explicado lo podemos ver en la Figura 9.1. fig. 9.1 La figura 9.1, en la parte A muestra la plantilla en uso con contenido de ejemplo. La parte B muestra la plantilla tal y como se vería en una instalación de Joomla! con muy poco o nada de contenido. La plantilla define una serie de estilos. Por lo tanto, cuando se inserte, el contenido va a heredar los estilos definidos en la plantilla como, por ejemplo, los estilos de link, menús, navegación, tamaño de texto y colores. Es importante fijarse en que las imágenes asociadas con el contenido (las fotos de las personas, en la figura) no son parte del template pero que la imagen de la cabecera sí que lo es. Usar una plantilla para un CMS como Joomla! tiene una serie de ventajas e inconvenientes: - Hay una completa separación entre contenido y presentación, especialmente cuando se usa CSS para crear el layout (en oposición a crear el index.php mediante tablas). Éste es uno de los criterios fundamentales para crear un sitio que contemple los estándares web. - Una nueva plantilla, y por lo tanto, una nueva imagen completa para la web, puede ser aplicada al instante. Cambiando la plantilla puedes conseguir posicionar el contenido de forma diferente así como cambiar completamente los colores y gráficos - Puede ser más complicado implementar distintos layouts para un mismo website. Aunque se pueden aplicar distintas plantillas a distintas páginas del site, esta funcionalidad no es totalmente fiable. La mejor opción sería utilizar condicionales en PHP y crear un layout dinámico que adapte el número de columnas dependiendo del contenido publicado.

Lo mínimo que necesita saber Los websites modernos separan el contenido de la presentación utilizando una tecnología llamada Cascade Style Sheets (CSS). En Joomla!, la plantilla controla la presentación del contenido. Proceso de Diseño en el Localhost La página web que se visualiza en un website creado en Joomla! no es estática. Esto significa que es generado dinámicamente desde el contenido albergado en la base de datos. La página que se visualiza es creada mediante distintos comandos PHP que se encuentran en el template, lo que presenta algunas dificultades en la fase de diseño. Actualmente es común utilizar un editor what you see is what you get (WYSIWYG) como, por ejemplo, Dreamweaver. Esto facilita que el diseñador no tenga que teclear código HTML. Esto no es posible en el diseño de templates para Joomla! ya que los editores WYSIWYG no pueden mostrar una página dinámica, lo que hace que los diseñadores tengan que teclear el código HTML a mano y previsualizarla desde un servidor de pruebas con PHP. Con una conexión rápida esto se puede realizar mediante un servidor web remoto, pero muchos diseñadores utilizan un servidor local en su propia computadora. Un servidor local es un software que permite servir páginas web en el ordenador del diseñador. No hay una forma correcta para crear una página web. Va a depender más de la experiencia de cada diseñador. Los más enfocados al diseño acostumbran a crear una imagen del layout en un programa gráfico como GIMP o Photoshop y posteriormente rompen la imagen para ser usada en la maquetación de la web. Los más enfocados a la tecnología habitualmente saltan directamente al CSS y empiezan a teclear código. De todas formas, como se ha mencionado, el diseñador de plantillas Joomla! está limitado por no poder ver el resultado de su código directamente en su editor. El proceso de diseño modificado es como sigue: - Hacer la edición con un editor HTML y guardar los cambios. - Tener un servidor local (localhost) funcionando para ejecutar Joomla!. - Ver lo editado en un navegador, como, por ejemplo, Firefox. - Volver al paso 1. Lo Mínimo Que Se Necesita Saber Cuando se crea un template, se necesita tener Joomla! funcionando en un servidor web (local o remoto) para poder hacer cambios y recargar, al momento, la página de salida. Una plantilla está compuesta por varias carpetas y archivos. Estos archivos van en su propia carpeta, dentro del ditectorio templates de Joomla! Por ejemplo, si tenemos 2 plantillas, llamadas voodoo y elements, el directorio queda así: /templates/element /templates/voodoo El directorio de una plantilla debe tener el mismo nombre que la plantilla. Obviamente estos nombres son sensibles a mayúsculas y minúsculas y no pueden contener espacios. Dentro del directorio de una plantilla hay dos archivos muy importantes: /element/templatedetails.xml /element/index.php

Los nombres y ubicaciones de estos dos archivos deben estar exactamente así, porque es como los va a buscar el núcleo de Joomla! templatedetails.xml Este archivo le dice a Joomla! qué otros archivos son necesarios cuando un usuario carga una página que usa esta plantilla. (Notar la D mayúscula). También contiene detalles sobre el autor y los derechos de autor. Su otro uso es para instalar la plantilla desde la administración del sitio. index.php Presenta el sitio y le indica al núcleo de Joomla! dónde mostrar los distintos componentes y módulos. Es una combinación de PHP y (X)HTML. Muchas plantillas usan otros archivos, además de templatedetails.xml e index.php. Es convencional (pero no requerido por el núcleo de Joomla!) ubicarlos así: /element/template_thumbnail.png /element/css/template.css /element/images/logo.png Otros archivos de una plantilla /element/template_thumbnail.png Captura de pantalla de la plantilla (usualmente reducida a unos 140 por 90 píxeles). Funciona como imagen de Previsualizar visible en el Administrador de Plantillas de la administración del sitio, y en el módulo de selección de plantillas para los usuarios (si estamos utilizando dicho módulo). /element/css/template.css CSS de la plantilla. El nombre de este archivo y la carpeta son opcionales, pero hay que explicar dónde está ubicado en el index.php. You can call it what you like. Se suele usar este nombre, pero veremos ventajas en tener más de un CSS. /element/images/logo.png Imágenes que vienen con la plantilla. Por razones de organización, muchos diseñadores las ponen en una carpeta llamada images. Aquí pusimos una imagen llamada logo.png como ejemplo.[/html] templatedetails.xml El fichero templatedetails.xml incluye todos los ficheros que forman parte de una plantilla. Esto incluye también información como el autor y los derechos de autor (copyright). Esta información se muestra también en la parte de administración del sitio en la sección Administrador de Plantillas. A continuación se muestra un ejemplo de fichero XML: HTML <?xml version="1.0" encoding="utf-8"?> <install version="1.5" type="template"> <name>templatetutorial15</name> <creationdate>august 2007</creationDate> <author>barrie North</author>

<copyright>gpl</copyright> <authoremail> compassdesigns@gmail.comthis email address is being protected from spam bots, you need Javascript enabled to view it </authoremail> <authorurl>www.compassdesigns.net</authorurl> <version>1.0</version> <description>first example template for Chapter 9 of the Joomla Book</description> <files> <filename>index.php</filename> <filename>templatedetails.xml</filename> <filename>js/somejsfile.js</filename> <filename>images/threecol-l.gif</filename> <filename>images/threecol-r.gif</filename> <filename>css/customize.css</filename> <filename>css/layout.css</filename> <filename>css/template_css.css</filename> </files> <positions> <position>user1</position> <position>top</position> <position>left</position> <position>banner</position> <position>right</position> <position>footer</position> </positions> <params> <param name="colorvariation" type="list" default="white" label="color Variation" description="color variation to use"> <option value="blue">blue</option> <option value="red">red</option> </param> </params> </install> Vamos a explicar algunas de las líneas que aparecen: <install version="1.5" type="template">. El contenido del documento XML son instrucciones para el instalador del sitio. La opción type="template" informa al instaladore de que estamos instalado una plantilla para Joomla 1.5. <name>templatetutorial15</name>. Define el nombre de la plantilla. El nombre que insertas aquí será usado también para crear el directorio de la plantilla en el directorio templates. El nombre no debe incluir ningún character que el sistema no pueda reconocer, por ejemplo espacios. Si instalas manualmente, necesitas crear el directorio con el mismo nombre que el nombre de la plantilla. <creationdate>august 2007</creationDate>. La fecha en la cuál se ha creado la plantilla. Este es un campo sin formato (libre) y puede tener un formato como May 2005, 08-June-1978, 01/01/2004, y otros muchos. <author>barrie North</author>. El nombre del autor de esta plantilla [md] preferentemente tu nombre. <copyright>gpl</copyright>. La información sobre los derechos de copia va en este elemento. Una licencia para Desarrolladores y Diseñadores puede encontrarse en los foros de Joomla. <authoremail> compassdesigns@gmail.com Esta dirección de correo electrónico se encuentra protegida de los robots de spam, necesitas tener javascript activado para poder verlo </authoremail>. Dirección de correo electrónico donde puede ser contactado el autor de la plantilla.

<authorurl>www.compassdesigns.net</authorurl>. La dirección web del autor de la plantilla. <version>1.0</version>. La version de la plantilla. <files></files>. Ficheros utilizados por la plantilla. Los ficheros utilizados en la plantilla se encierran entre etiquetas <filename> HTML <files> <filename>index.php</filename> <filename>templatedetails.xml</filename> <filename>js/somejsfile.js</filename> <filename>images/threecol-l.gif</filename> <filename>images/threecol-r.gif</filename> <filename>css/customize.css</filename> <filename>css/layout.css</filename> <filename>css/template_css.css</filename> </files> La sección ficheros (files) contiene todos los ficheros genéricos como el código fuente PHP para la plantilla o la miniatura de la plantilla para su previsualización. Cada fichero listado en esta sección se encuentra encerrado por las etiquetas <filename> </filename>. También incluye cualquier fichero adicional; aquí en el ejemplo se invoca un un fichero javascript que es requerido por la plantilla. Todos los ficheros de imágenes que la plantilla utiliza son listados en la sección <files>. Cada fichero listado se encuentra definido por las etiquetas <filename> </filename>. La información de la ruta donde se encuentran los ficheros, es relative al directorio raíz de la plantilla. Por ejemplo, si la plantilla está en el directorio llamado Tuplantilla (YourTemplate), y todas las imágenes se encuentran en el directorio imágenes (images), dentro de Tuplantilla (YourTemplate), la dirección correcta de la ubicación es: <filename>images/my_image.jpg</filename> Por ultimo ninguna plantilla de estilo (stylesheets) es listada en la sección ficheros.. <positions></positions>.las posiciones de los módulos disponibles en la plantilla. <params></params>. Esto describe parámetros que van a ser pasados, para permitir funciones avanzadas de las plantillas, como cambiar el color de la plantilla. index.php Qué hay actualmente en el fichero index.php? Es la combinación de (X)HTML y PHP que determina todo sobre la presentación y las capas de las páginas. Primero, echemos un vistazo a una parte crítica de las plantillas válidas, el atributo DOCTYPE al principio del fichero index.php file. Este es un pequeño trozo de código que va en la parte superior de la página En la parte superior de la página, tenemos esto en nuestra plantilla: Código PHP: <?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' );?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> La primera sentencia PHP simplemente se asegura de que no se puede acceder directamente al fichero por seguridad. El atributo DOCTYPE de una página web es uno de los componentes fundamentales,

indica cómo va a ser mostrada una página por un navegador, específicamente, cómo el navegador interpreta CSS. Para permitirte una comprensión total, una observación de alistapart.com dice: Cita: [Información en el sitio W3C's sobre DOCTYPEs ] escrito para tecnófilos por tecnófilos. Y cuando digo tecnófilos, no me refiero a los profesionales corrientes como tu y yo. Digo tecnófilos cuando me refiero a los que nos hacen sentir como una abuela la primera vez que recibe un correo electrónico.. Por otra parte, puedes utilizar múltiples DOCTYPEs. Básicamente, el DOCTYPE informa al navegador como interpretar la página. Aquí las palabras estricto y transicional empiezan saliendo alrededor del float (float:left y float:right habitualmente). Esencialmente, desde que empezó la web, los diferentes navegadores tienen diferentes niveles de soporte para CSS. Esto hace por ejemplo que Internet Explorer no comprenda un commando "min-width" utilizado para configurar la anchura mínima de una página. Para generar el efecto, necesitas utilizar mejoras (hacks) en la CSS. Some say that serving XHTML as text/html is considered harmful. If you actually understand that statement you are well ahead of the game and beyond this guide. You can read more at hixie.ch/advocacy/xhtml. El HTML Estricto (o XHTML) es el que es interpretado exactamente como dictan los estándares. Un DOCTYPE Transicional permite a la página mostrar algunos pequeños trozos diferentes a los estándares. Para complicar las cosas, tenemos un modo llamado chapuzas (quirks). Si el DOCTYPE es incorrecto, no actualizado, o no se encuentra, el navegador utiliza el modo chapuzas. Esto es una manera de compatibilidad marcha atrás, para Internet Explorer 6, por ejemplo, dibujamos la página como si fuera para IE4. Desafortunadamente, algunas personas acaban en modo chapuza de manera accidental. Esto ocurre habitualmente de dos maneras: Utilizan una declaración diferente de DOCTYPE a la de la página de la WC3, y el enlace acaba como DTD/xhtml1-strict.dtd, excepto si es el enlace relativo al servidor de la WC3. Necesitas la ruta completa y mostrarlo al inicio. Microsoft configura IE6 por lo tanto tienes páginas validas pero se muestran en modo chapuza. Esto ocurre porque tenemos una declaración xml puesta antes del DOCTYPE. En el siguiente ejemplo es una sentencia XML (después del DOCTYPE): Código PHP: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language;?>" lang="<?php echo $this->language;?>" > La parte sobre el modo chapuza de IE6 es importante. En este capítulo solo estamos diseñando para IE6+ (Internet Explorer 6 ó superior), con lo que nos tenemos que asegurar que esto funcionan en un modo estándar. Esto minimizará las mejoras que tengamos que hacer posteriormente. NOTA Haciendo una página web que cumple los estándar, podrás mostrar un botón xhtml válido en la página, esto no tiene ninguna dificultad en la codificación, o incompresibles etiquetas. Esto significa que el código que haces utilizando DOCTYPE dice lo que quieres, nada más! Diseñando tu sitio con estándares puedes reducir un nivel lo que muestras y cómo quieres mostrarlo. Aquí tienes algunos prácticos enlaces, que te pueden ayudar a comprender el

DOCTYPE y el modo chapuzas: www.quirksmode.org/css/quirksmode.html www.alistapart.com/stories/doctype www.w3.org/qa/2002/04/web-quality http://forum.joomla.org/index.php/topic,7537.0.html http://forum.joomla.org/index.php/topic,6048.0.html Más contenidos de index.php Luego incluimos el cabezal ("header"). En este caso usaremos un cabezal con poco contendido, pero suficiente para un sitio en producción. <?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' );?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language;?>" lang="<?php echo $this->language;?>" > <head> <jdoc:include type="head" /> <link rel="stylesheet" href="templates/system/css/system.css" type="text/ css" /> <link rel="stylesheet" href="templates/system/css/general.css" type="text/css" /> <link rel="stylesheet" href="templates/<?php echo $this->template?>/css/ template.css" type="text/css" /> </head> Ya vimos lo que hace DOCTYPE. Lo siguiente: <?php echo $this->language;?> trae el idioma marcado en la configuración global del sitio. La próxima línea trae información para el cabezal que también está en la configuración global del sitio: <jdoc:include type="head" /> En una instalación por defecto esa información para el cabezal traída de la configuración global incluye: Código PHP: <title>welcome to the Frontpage</title> <meta name="description" content="joomla! - the dynamic portal engine and content management system" /> <meta name="generator" content="joomla! 1.5 - Open Source Content Management" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="robots" content="index, follow" /> <meta name="keywords" content="joomla, Joomla" /> <link href="http://www.compassdesigns.net/content/frontpage/feed/1/rss/"

rel="alternate" type="application/rss+xml" title="rss 2.0" /> <link href="http://www.compassdesigns.net/content/frontpage/feed/1/atom/" rel="alternate" type="application/atom+xml" title="atom 1.0" /> <script type="text/javascript" src="http://localhost/joomla-1.5rc2/media/ system/js/mootools.js"></script> <script type="text/javascript" src="http://localhost/joomla-1.5rc2/media/ system/js/caption.js"></script> Partes de esa información de cabezal son creadas al vuelo, específicamente para el artículo que el usuario está viendo. Incluye algunos metadatos, direcciones URL para RSS y archivos estándar de javascript. Las últimas líneas del cabezal incluyen archivos de CSS: <link rel="stylesheet" href="templates/system/css/system.css" type="text/ css" /> <link rel="stylesheet" href="templates/system/css/general.css" type="text/css" /> <link rel="stylesheet" href="templates/<?php echo $this->template?>/css/ template.css" type="text/css" /> Los primeros dos archivos, system.css y general.css contienen estilos genéricos de Joomla. el tercer archivo es todo el CSS específico de la plantilla, en este caso llamado template.css. El siguiente trozo: <?php echo $this->template?> devuelve el nombre de la plantilla actual. Podríamos escribir el nombre directamente, pero de esta forma el código es más genérico, y al escribir una plantilla nueva podríamos copiar esto junto con todo el código del cabezal sin tener que cambiar nada. El CSS puede estar compuesto por cualquier número de archivos, por ejemplo CSS condicionales para diferentes navegadores. El que ponemos a continuación solamente se utilizaría con Internet Explorer 6: <!--[if lte IE 6]> <link href="templates/<?php echo $this->template?>/css/ieonly.css" rel="stylesheet" type="text/css" /> <![endif]--> Este otro es una técnica para usar parámetros en una plantilla: <link rel="stylesheet" href="templates/<?php echo $this->template? >/css/<?php echo $this->params->get('colorvariation');?>.css" type="text/ css"

Cuerpo de plantilla en blanco para Joomla 1.5 La creación de nuestra primera plantilla será muy muy fácil! Listos? Todo lo que necesitamos hacer es usar una declaración Joomla que inserta el contenido de los módulos y el mainbody. HTML <body> <?php echo $mainframe->getcfg('sitename');?><br /> <jdoc:include type="module" name="breadcrumbs" /> <jdoc:include type="modules" name="top" /> <jdoc:include type="modules" name="left" /> <jdoc:include type="component" /> <jdoc:include type="modules" name="right" /> </body> En este punto (si hace un preview), nuestro sitio no se ve muy impresionante. Figura 9.3 Una plantilla sin estilo

La plantilla contiene lo siguiente en un razonable orden lógico: Nombre del sitio Módulo superior Módulos de la izquierda Contenido principal Módulos de la derecha Lo mínimo que necesita saber La plantilla más básica simplemente carga los módulos de Joomla y el mainbody (componente). La disposición y el diseño es parte del CSS, no de Joomla. El objetivo es tratar de entrar lo más cerca posible del atributo semántico como sea posible. Desde un punto de vista Web, significa que una página puede ser leída por cualquier persona [md] un navegador, un spider, o un screen reader. El diseño semántico es la piedra angular de la accesibilidad. NOTA Lo que tenemos aquí es en realidad sólo el potencial de diseño semántico. Si tuviéramos que ir adelante y poner al azar módulos en lugares aleatorios, tendríamos un lío. Una consideración importante para sitios CMS es que la plantilla es tan buena como la totalidad de su contenido. Esto es lo que a menudo saltan los diseñadores cuando se trata de validar sus sitios. Notará que hemos utilizado la primera de una serie de comandos específicos para Joomla para crear este producto: Código PHP: <?php echo $mainframe->getcfg('sitename');?><br /> <jdoc:include type="module" name="breadcrumbs" /> <jdoc:include type="modules" name="top" /> <jdoc:include type="modules" name="left" /> <jdoc:include type="component" /> <jdoc:include type="modules" name="right" /> La declaración PHP eco simplemente produce un string desde el archivo configuration.php. En este caso, estamos usando el nombre del sitio; Podríamos fácilmente haber tenido lo siguiente: Código PHP: The name of this site is <?php echo $mainframe->getcfg('sitename');? ><br /> The administrator email is <?php echo $mainframe->getcfg('mailfrom');? ><br /> This template is in the <?php echo $this->template?> directory<br /> The URL is <?php echo JURI::base();;?> La declaración jdoc inserta diversos tipos de salida XHTML, ya sea de módulos o de componentes. Esta línea inserta la salida de un componente. Qué componente será determinado por el enlace del menú: Código PHP: <jdoc:include type="component" /> NOTA Curiosamente, parece ser que se pueden tener múltiples instancias de componentes de salida. No estoy seguro de para qué las quieres, pero creo que tenía que hacertelo saber! Podría ser un bug (error).

Esta línea inserta la salida para la instalación de un módulo: Código PHP: <jdoc:include type="modules" name="right" /> La sintaxis completa es realmente Código PHP: <jdoc:include type="modules" name="location" style="option" /> Nos fijamos en las diversas opciones de estilos en la sección sobre los módulos más adelante en este capítulo. CSSTemplateTutorial Paso 1 En este momento tenemos una plantilla muy vacía. He creado una plantilla instalable que se encuentra disponible en Compass library::: CSSTemplateTutorialStep1.zip. Esto instalará una plantilla que sólo tiene dos archivos, el index.php y templatedetails.xml. He eliminado las referencias a otros archivos para dar una estructura vacía de salida sin CSS. Esta es en realidad una utilidad de diagnóstico de plantilla; Puede instalar y realizar el seguimiento de los errores que se están produciendo con un componente o módulo. Utilizaremos el CSS puro para hacer una disposición de 3 columnas para la plantilla de Joomla!. También haremos una disposición "fluida". Hay dos tipos principales de disposición del diseño: fijo y fluido, y ambos se refieren a "cómo se controla el ancho de la página". La anchura de la página es un asunto importante a tener en cuenta debido a que los usuarios trabajan a distintas resoluciones de navegador. Aunque el porcentaje está cayendo, aún un 17% de personas están utilizando una resolución 800x600. Sin embargo, la mayoría, el 79%, está utilizando 1024x768 u otra resolución superior. Crear una disposición fluida de tu plantilla significa que tu página web no se verá como una fina columna en la resolución 1024 y podrá verse al completo en monitores más pequeños. Un diseño típico se serviría de tablas para definir la disposición de la página. Ciertamente, las tablas son útiles ya que sólo tienes que fijar la anchura de las columnas con porcentajes y así tener un diseño adaptable a las distintas resoluciones, pero a la vez tienen varias desventajas. Por ejemplo, el diseño con tablas utiliza mayor cantidad de código en comparación con el diseño CSS. Lo que significa mayor tiempo de carga (cosa que a los navegantes no gusta), también dan peor resultado en los motores de búsqueda. A la práctica, la cantidad de código puede incluso llegar a doblarse, no sólo por los tags necesarios, sino también por la parte de código usada para marcar los espacios. Incluso las compañías grandes caen a veces en la trampa de usar tablas según lo que hemos podido ver por una controversia reciente sobre la nueva web inglesa de Disney: disney.co.uk: Hay un par de problemas más relacionados con el uso de tablas para definir la maquetación del diseño. Son difíciles de mantener. Para cambiar algo tienes que calcular lo que están haciendo todas las etiquetas de la tabla como td/tr. Con el CSS hay a penas algunas líneas a examinar. El contenido no se puede ordenar. Muchas personas usuarios de Internet no ven las páginas en un navegador, sino que usan navegadores textuales o navegadores de voz que examinan el contenido de la pantalla de izquierda-arriba a derecha-abajo. Esto significa que primero ven todo lo que hay en la cabecera y en la columna izquierda (para una disposición de 3 columnas) antes de llegar a ver el contenido de

la columna central, que seguramente es la que tiene el contenido importante. Un diseño que usa CSS lleva el contenido ordenado dentro del código fuente de manera que puede ser reorganizado, piensa que tal vez tú visitante más importante sea Google, y éste usa un programa lector de pantalla a la hora de interpretar el contenido de tu página. Es interesante que conozcas bien como funcionan las hojas de estilo en cascada (CSS) ya que con ellas puedes colocar los elementos de contenido de varias maneras. Para una introducción rápida, una buena fuente es: Brainjar's CSS Positioning (posicionamiento con CSS, por Brainjar).. Aunque, si eres nuevo en el CSS, sería bueno que leyeras una guía del iniciación. Aquí tienes algunas sugerencias: Kevin Hale's An Overview of Current CSS Layout Techniques http://particletree.com/features/an-...ut-techniques/ htmldog's CSS Beginner's Guide www.htmldog.com/guides/cssbeginner/ yourhtmlsource.com www.yourhtmlsource.com/stylesheets/ Los diseños web actuales usan CSS en vez de tablas para posicionar elementos. Es difícil de aprender a usar pero es una inversión que merece la pena. Hay muchos recursos (no- Joomla!) disponibles para ayudarte. Utilizaremos la propiedad float para colocar nuestro contenido. Es muy sencillo, la plantilla deberá tener una apariencia como la de la Figura 9.4. Aún no muy emocionante, pero vamos a analizar las distintas partes por separado. Los estilos del CSS están definidos aquí, dentro del tag <head></head> del archivo para mostrar su funcionamiento, pero en realidad deberían estar definidos dentro del archivo template.css. Todo queda dentro de un elemento llamado #wrap, que tiene un ancho fluido (variable) que puede ir desde los 760px a los 960px. En la figura 9,4, las columnas izquierda, media y derecha poseen cada una su propio elemento. Las 3 están flotadas a la izquierda, y tiene asignado un porcentaje del ancho total. Si sumamos esos 3 porcentajes asignados, obtenemos 100%. El estilo "clear:both" en el pie indica al navegador que "detenga la flotación" y asigne al pie el ancho total sumado de las 3 columnas. Esto también se puede hacer con técnicas más avanzadas que veremos al construir nuestra segunda plantilla. Entre las columnas es normal dejar cierto espacio o "canal", que podríamos lograr marcando un "padding"en el estilo de las columnas. Pero esto fallaría en Internet Explorer por una falla de interpretación del CSS para el cálculo de los anchos, Evitamos este problema no utilizando "padding" y en vez de eso agregando otro elemento <div> dentro de cada columna. Añadimos al CSS:.inside {padding:10px; Y en el código para <body> (en index.php) dejamos:

<body> <div id="wrap"> <div id="header"> <div class="inside"> <?php echo $mainframe->getcfg('sitename');?> <jdoc:include type="modules" name="top" /> <div id="sidebar"> <div class="inside"> <jdoc:include type="modules" name="left" /> <div id="content"> <div class="inside"> <jdoc:include type="component" /> <div id="sidebar-2"> <div class="inside"> <jdoc:include type="modules" name="right" /> <div id="footer"> <div class="inside"> Este sitio utiliza <a href="http://joomla.org">joomla!</a>. Válido <a href="http://validator.w3.org/check/referer">xhtml</a> y <a href="http://jigsaw.w3.org/css-validator/check/referer">css</a>. <!--end of wrap--> </body> El archivo template.css va a ser: #wrap { min-width:760px; max-width:960px; #content { float:left; width:60%; overflow:hidden; #footer { clear:both;.inside { padding:10px; #sidebar,#sidebar-2 { float:left; width:20%; overflow:hidden;

Truco: Acortando el código CSS Un código CSS así: margin-top:5px; margin-bottom:5px; margin-left:10px; margin-right:10px; puede reemplazarse por: margin: 5px 10px; Podemos usar estilos "taquigráficos " en cada definición de estilo. Después de crear los estilos, reemplazamos el código largo por el código corto. La sintaxis es: font: font-size font-style font-variant font-weight line-height font-family Por ejemplo, cambiamos esto: font-size:1em; font-family:arial,helvetica,sans-serif; font-style:italic; font-weight:bold; line-height:1.3em; por esto: font:bold 1em/1.3em Arial,Helvetica,sans-serif italic; Más datos sobre este tip: http://home.no.net/junjun/html/shorthand.html. Esta plantilla simple demuestra dos de las ventajas de las disposiciones con CSS sobre las basadas en tablas: es menos código y es más fácil mantener. Su limitación es que no ordena el código fuente por importancia, y de esta forma los motores de búsqueda no leen primero los datos más importantes (en Joomla! los datos importantes provienen de los componentes). Para mejorar eso usamos una técnica más avanzada llamada flotador jerarquizado. CSS por defecto Hasta ahora nuestro CSS presenta una página plana. Agregaremos algo de formato: body { text-align:center; #wrap { min-width:760px; max-width:960px; width:auto!important; text-align:left;

margin:0 auto; #content { float:left; width:60%; overflow:hidden; #footer { clear:both;.inside { padding:10px; #sidebar,#sidebar-2 { float:left; width:20%; overflow:hidden; Lo primero que hicimos fue centrar la página. Para navegadores que siguen los estándares, basta con poner margin:0 10% para centrar la página, pero IE no lo entiende, entonces centramos el texto de toda la página y dentro de cada columna lo volvemos a alinear a la izquierda. Incluimos un ancho mínimo y máximo que es soportado por IE7 pero no por IE6. Para IE6 hicimos un truco: va a ignorar la declaración!important y mostrar un ancho plano antiguo de 960 px. NOTA Parece raro que las columnas tengan ancho definido en porcentaje pero estén contenidas en un <div> que es fijo. La explicación es: * este modo hace muy flexible a nuestra plantilla. Si queremos poner botones de cambio de ancho, solamente deberemos cambiar un valor. * el ancho máximo evita que los usuarios que tienen monitores demasiado grandes reciban tipografías tan gruesas que pierdan legibilidad por su propio tamaño exagerado (más de 900 px es incómodo). También agregamos una norma de estilo a las columnas: overflow:hidden. Esto hace que la página se "quiebre" con más uniformidad si reducimos el ancho. Al comienzo de la definición de la tipografía, con el CSS fijaremos algunos estilos totales y tendremos qué se conoce como reajuste global: * { margin:0; padding:0; h1,h2,h3,h4,h5,h6,p,blockquote,form,label,ul,ol,dl,fieldset,address { margin:0.5em 0; li,dd { margin-left:1em; fieldset { padding:.5em;

body { font-size:76%; font-family:verdana, Arial, Helvetica, sans-serif; line-height:1.3; Le damos a todo margen y padding cero, y un margen inferior. Esto le da consistencia a lo que el navegador vaya a mostrar. Más datos sobre este tema (en inglés): http://clagnut.com/blog/1287/ Ponemos el tamaño de fuente en 76%. Esto es para tener mayor consistencia del tamaño de letra en los distintos navegadores. Después marcamos todos los tamaños de letra en em. Con line-height:1.3 aumentamos la legibilidad. Con esto, el usuario va a poder reasignar los tamaños de letra desde su propio navegador. (más datos en este libro: ( Owen Briggs) Si queremos agregar color de fondo al cabezal y a los contenedores de contenido, obtenemos algo así: (figura 9.5) Vemos que las columnas laterales no alcanzan al pie. Esto es porque solamente tienen la altura de su contenido, más allá no existen. Esto no es problema si nuestra plantilla usa el mismo color de fondo para las 3 columnas. Pero si queremos columnas de distintos colores o recuadradas y que tengan la misma altura tenemos que usar una imagen de fondo que se repita verticalmente (propiedad de CSS background-repeat). Esa técnica se llama "falsas columnas" y se puede ver en este libro. CSS específico para Joomla! Joomla! nos permite sobreescribir la salida ("vista") enviada por el núcleo a la pantalla, incluyendo en el archivo CSS el formato para estos estilos: article_separator adminform article_separator author bannerfooter bannergroup bannerheader banneritem blog blog_more blogsection breadcrumbs button buttonheading clr componentheading content_email content_rating content_vote contentdescription contentheading contentpagetitle contentpane contentpaneopen contenttoc createdate created-date date input inputbox intro latestnews loclink mainlevel message metadata modifydate module moduletable mosimage mosimage_caption mostread newsfeed outline pagenav pagenav_next pagenav_prev pagenavbar pagenavcounter pathway pollstableborder read search searchintro sections sectiontable_footer sectiontableentry sectiontablefooter sectiontableheader small smalldark sublevel title wrapper

En CSS una regla más específica elimina una regla menos específica. Por ejemplo, en: a {color:blue; a:link {color:red;.contentheading {color:blue; div.contentheading {color:red; el color de un hipervínculo y el color del.contentheading serán rojos, pues esa regla es más específica (el.contentheading se contiene dentro de un <div>) Es frecuente encontrar en una plantilla Joomla! algunas reglas más específicas que sobreescriben a otras, en particular si la clase está en una tabla:.moduletable table.moduletable moduletable es el nombre del <div> que contiene un módulo. table.moduletable aplica el estilo solamente a tablas con la definición "class=moduletable ". a.contentpagetitle:link.contentpagetitle a:link a.contentpagetitle:link se aplicará a cualquier etiqueta con clase.contentpagetitle que contenga un hipervínculo..contentpagetitle a:link se aplica a cualquier elemento dentro de un.contentpagetitle que sea un hipervínculo. La especificidad no es fácil de entender; suele ser más fácil comenzar con estilos muy generales y afinarlos después Todavía nuestra plantilla está utilizando muchas tablas. Para reducir su cantidad vamos a usar parámetros de estilo en los jdoc:include. El mínimo que necesitamos saber Joomla! muestra elementos específicos, con IDs y clases. Esas IDs y clases pueden ser utilizados para dar estilo al sitio usando CSS. Módulos en las plantillas Al llamar un módulo en index.php podemos indicar una serie de opciones sobre cómo mostrarlo. La sintaxis es: <jdoc:include type="modules" name="location" style="option" /> El estilo es opcional y está definido en templates/system/html/modules.php. Actualmente (Joomla! 1.5 RC2) ese archivo contiene las siguientes opciones de salida: OPTION="table" (valor por defecto) el módulo es mostrado en una tabla de una sola columna. Esto es un ejemplo de la salida: <table cellpadding="0" cellspacing="0" class="moduletable<?php echo $params->get('moduleclass_sfx');?>"> <?php if ($module->showtitle!= 0) :?>

<tr> <th valign="top"> <?php echo $module->title;?> </th> </tr> <?php endif;?> <tr> <td> <?php echo $module->content;?> </td> </tr> </table> OPTION="horz" hace que el módulo aparezca horizontalmente. Cada módulo es mostrado es una celda de una tabla. Ejemplo: <table cellspacing="1" cellpadding="0" border="0" width="100%"> <tr> <td valign="top"> <?php modchrome_table($module, $params, $attribs);?> </td> </tr> </table> OPTION="xhtml" hace que el módulo se muestre en un elemento div simple. Ejemplo: <div class="moduletable<?php echo $params->get('moduleclass_sfx');?>"> <?php if ($module->showtitle!= 0) :?> <h3><?php echo $module->title;?></h3> <?php endif;?> <?php echo $module->content;?> OPTION="rounded" Hace que el módulo aparezca en un formato que permite, por ejemplo, esquinas redondeadas. Si usamos este estilo la clase del <div> cambia de moduletable a module. Ejemplo de la salida: div class="module<?php echo $params->get('moduleclass_sfx');?>"> <div> <div> <div> <?php if ($module->showtitle!= 0) :?> <h3><?php echo $module->title;?></h3> <?php endif;?> <?php echo $module->content;?>

OPTION="none" el módulo aparece como una salida cruda sin elementos ni título. Ejemplo: echo $module->content; Las opciones que usan CSS (xhtml y rounded) crean un código más corto. No se recomienda usar table (defecto) o horz si no es necesario. El archivo modules.php contiene varias opciones para presentar los módulos, pero es podemos añadir opciones propias. En nuestra plantilla vamos a ponerle estilo "xhtml" a todos nuestros módulos: <body> <div id="wrap"> <div id="header"> <div class="inside"> <h1><?php echo $mainframe->getcfg('sitename');?></h1> <jdoc:include type="modules" name="top" style="xhtml" /> <div id="sidebar"> <div class="inside"> <jdoc:include type="modules" name="left" style="xhtml" /> <div id="content"> <div class="inside"> <jdoc:include type="module" name="breadcrumbs" style="none" /> <jdoc:include type="component" /> <div id="sidebar-2"> <div class="inside"> <jdoc:include type="modules" name="right" style="xhtml" /> <div id="footer"> <div class="inside"> <jdoc:include type="modules" name="footer" style="xhtml" /> <!--end of wrap--> </body> No marcamos el estilo de módulo en <jdoc:include type="component" /> porque no es un módulo. El mínimo que hay que saber En 1.5 la presentación de los módulos puede ser completamente personalizada, o podemos usar alguna salida predistribuida. Todas estas opciones son llamadas chrome del módulo. Pusimos el título del sitio entre etiquetas <H1>. Esto es semánticamente correcto y ayuda a los SEO. También quitaremos los colores de fondo de los <div> Agregaremos CSS para darle estilo a los módulos y ponerle color de fondo y borde a los títulos de los módulos. El CSS va quedando así:

* { margin:0; padding:0; h1,h2,h3,h4,h5,h6,p,blockquote,form,label,ul,ol,dl,fieldset,address { margin:0.5em 0; li,dd { margin-left:1em; fieldset { padding:.5em; body { font-size:76%; font-family:verdana, Arial, Helvetica, sans-serif; line-height:1.3; margin:1em 0; #wrap { border:1px solid #999; #header { border-bottom:1px solid #999; #footer { border-top:1px solid #999; a { text-decoration:none; a:hover { text-decoration:underline; h1,.componentheading { font-size:1.7em; h2,.contentheading { font-size:1.5em; h3 { font-size:1.3em; h4 { font-size:1.2em; h5 { font-size:1.1em; h6 { font-size:1em; font-weight:700; #footer,.small,.createdate,.modifydate,.mosimage_caption { font:0.8em Arial,Helvetica,sans-serif; color:#999;.moduletable { margin-bottom:1em; border:1px #CCC solid; padding:0 10px;

.moduletable h3 { background:#666; color:#fff; text-align:center; font-size:1.1em; margin:0-10px 0.5em; padding:0.25em 0; Nota Algunos menús en la instalación por defecto tienen un sufijo de menú en las propiedades de módulo de _menu. Hemos quitado ese parámetro. Este CSS ahora produce el resultado de la figura 9.6 fig. 9.6 Plantilla básica con estilo para los títulos de los módulos Menús en las Plantillas Hay distintas maneras de presentar un menú. Otra vez, usando listas con CSS en vez de tablas reduciremos el código y facilitaremos la actualización. Después de marcar todos nuestros menús como listas tendremos solamente 12 tablas (luego las iremos eliminando). Otra ventaja de las listas es que los navegadores de modo texto, lectores de pantalla, navegadores que no soportan CSS o lo tienen desactivado y robots de

búsqueda podrán acceden con más facilidad a nuestro sitio. Si usamos menús con CSS encontraremos mucho código para reutilizar en sitios de desarrolladores CSS. http://css.maxdesign.com.au/listamatic/ es uno de estos sitios, allí tenemos muchas listas distintas con el código para utilizarlas. Vamos a hacer un cambio en el código sugerido allí para adaptar esos menús a Joomla! Maxdesign usa: <div id="navcontainer"> <ul id="navlist"> <li id="active"><a href=" #" id="current">item one</a></li> <li><a href="http://www.compassdesigns.net/tutorials/joomlatutorials/joomla-1.5-template-tutorial_4.html">item two</a></li> <li><a xhref="http://www.compassdesigns.net/tutorials/joomlatutorials/joomla-1.5-template-tutorial_4.html">item three</a></li> <li><a href="http://www.compassdesigns.net/tutorials/joomlatutorials/joomla-1.5-template-tutorial_4.html">item four</a></li> <li><a href="http://www.compassdesigns.net/tutorials/joomlatutorials/joomla-1.5-template-tutorial_4.html">item five</a></li> </ul> Vemos que hay un <div> contenedor llamado navcontainer, y el <ul> tiene "navlist" como id. Para reproducir esto en Joomla! vamos a cambiarle algo al <div>. Usaremos sufijos de módulo (en la administración del sitio: extensiones- >ModuleManager->nombre_del_menú->parámetros avanzados). Recordemos que la salida de un módulo con opción de estilo XHTML es: <div class="moduletable"> <h3>modchrome_xhtml</h3> modchrome_xhtml Si añadimos un sufijo de módulo, será añadido a la clase de moduletable así: <div class="moduletablesuffix"> <h3>modchrome_xhtml</h3> modchrome_xhtml Entonces, cuando usemos un menú tomado de Listamatic, tenemos que reemplazar navlist cada vez que aparece en el archivo de CSS por moduletablesuffix. Además, si están marcados #navlist los cambiamos por.moduletablesuffix, así, precedido de un punto (nota del traductor: el original dice que lo que debemos cambiar por moduletablesuffix es navcontainer, pero yo sólo lo pude hacer andar de esta manera). El uso de sufijos de módulo nos permite variar mucho el estilo de presentación de un módulo simplemente cambiando el sufijo. En este sitio (http://www.compassdesigns.net) usamos List 10, de Mark Newhouse.

El CSS es:.moduletablemenu { color:#333; margin-bottom:1em; padding:0;.moduletablemenu h3 { background:#666; color:#fff; text-align:center; font-size:1.1em; border-bottom:1px solid #fff; margin:0; padding:0.25em 0;.moduletablemenu ul { list-style:none; margin:0; padding:0;.moduletablemenu li { border-bottom:1px solid #ccc; margin:0;.moduletablemenu li a { display:block; border-left:10px solid #333; border-right:10px solid #9D9D9D; background-color:#666; color:#fff; text-decoration:none; padding:3px 5px 3px 0.5em; html>body.moduletablemenu li a { width:auto;.moduletablemenu li a:hover,a#active_menu:link,a#active_menu:visited { border-left:10px solid #1c64d1; border-right:10px solid #5ba3e0; background-color:#2586d7; color:#fff;

Agregaremos el sufijo menu (en este caso no separado por guión) a todos los módulos a los que les queremos dar estilo. Esto produce un menú como el de la figura 9.7. fig. 9.7