Vous êtes sur la page 1sur 51

Template Joomla 1.

5 Tutorial
(Auteur : Harry M. North extrait du livre Joomla 1.5, A User's Guide. Version franaise : Marc Hron)

Le chapitre 9 de ce livre est dlivr sous Creative Commons et Non-commercial licence. Rfrez-vous http://creativecommons.org/licenses/by-nc-sa/2.5/ pour plus de dtails.

9
Sommaire: 1 2 3 4 5 Crer un template Joomla 1.5 avec les CSS Cration d'un simple template vierge L'utilisation du CSS pour crer une mise en page sans table Raliser un vrai template Joomla 1.5 Template Joomla 1.5 avanc

1. Crer un template Joomla 1.5 avec les CSS


Dans ce chapitre, nous allons suivre les tapes de la cration d'un template Joomla. Concrtement, nous allons crer un template qui utilise les feuilles de style en cascade (CSS) pour produire une mise en page sans utiliser de tableaux. Ceci est un bon objectif, car il signifie que le code du template sera conforme au normes du World Wide Web Consortium (W3C). Il aura aussi tendance se charger plus vite, sera plus facile maintenir et sera mieux rfrenc par les moteurs de recherche. Ces questions sont examines en dtail plus loin dans le chapitre.

1.1 Qui y a t-il dans ce chapitre ?


Qu'est-ce qu'un template Joomla ? Quelles fonctions sont exerces par un template Joomla, et quelle est la diffrence quand un template n'a pas de contenu par rapport au moment o le contenu est ajout dans le systme de gestion de contenu (CMS). Comment fonctionne le processus de conception localhost. En quoi diffre t'il d'une page web statique (X)HTML ? Quelles sont les implications d'un design sans table dans Joomla et la relation entre les normes W3C, l'ergonomie et l'accessibilit? Quels fichiers constituent un template Joomla, et quelles fonctions remplissent-ils ? Comment crer une source en 3 colonnes qui utilise le CSS plutt que des tables? Quels sont les styles CSS qui doivent tre utiliss avec Joomla, et quels sont les styles par dfaut qui sont utiliss par le noyau Joomla? Comment changer l'emplacement et le style des modules, et quelles sont les nouvelles techniques pour obtenir des coins arrondis? Quelle serait la manire simple de produire des menus en CSS qui imitent l'effet de ceux qui sont labores en JavaScript? Comment peut-on matriser l'affichage des colonnes en fonction de la prsence de contenu ou non ? Quelles sont les mesures appropries pour crer un vritable Template Joomla 1.5?

1.2 Qu'est-ce qu'un template Joomla?


Un template est un ensemble de fichiers au sein du CMS Joomla qui contrlent la prsentation du contenu. Le template Joomla n'est pas un site. Le template est une partie ncessaire la conception de l'ensemble du site. Pour fabriquer le site web "complet", le template fonctionne de pair avec le contenu stock dans les bases de donnes Joomla. Un exemple de ceci peut tre vu dans la figure 9,1.

Figure 9,1: template avec ou sans contenu

Figure 9,1, partie A, le template est montr en fonctionnement avec les exemples de contenu. La partie B montre le template avec peu ou pas de contenu. Le template est conu de sorte que lorsque votre contenu est insr, il va hriter de la feuille de style dfinie dans le template, tels que les styles de liens, de menus, de navigation, de taille du texte et les couleurs pour en nommer que quelques uns.

Notez que les images associes au contenu (les photos des personnes) ne font pas partie du template, mais le header oui. En utilisant un template CMS, comme Joomla le fait, il y a un certain nombre d'avantages et d'inconvnients: Il existe une sparation entre le contenu et la prsentation, en particulier lorsque le programme est utilis pour la mise en page (par opposition des tables dans le fichier index.php). Ceci est l'un des principaux critres d'un site web qui rpond des normes modernes. Un nouveau template, et donc un tout nouveau look, peut tre appliqu instantanment. Cela peut mme tre des endroits diffrents (positionnement du contenu ainsi que les couleurs et les graphiques). Si diffrentes prsentations sont ncessaires pour un mme site, cela peut tre compliqu raliser. Bien que des templates diffrents peuvent tre appliqus des pages diffrentes, cette fonctionnalit built-in n'est pas fiable. Il est prfrable d'utiliser le PHP dans certaines conditions et de crer une mise en page qui ajuste dynamiquement le nombre de colonnes en fonction du contenu qui est publi. Le minimum savoir Les sites modernes ont un contenu distinct de la prsentation en utilisant une technique connue sous le nom de feuilles de style en cascade (CSS). Dans Joomla, le template contrle la prsentation du contenu.

1.3

Processus de conception en local

La page Web que vous voyez sur un site Joomla n'est pas statique. Cela veut dire qu'il est gnr dynamiquement par du contenu stock dans la base de donnes. La page que vous voyez est cr par le biais de diverses commandes PHP qui sont dans le template, ce qui prsente quelques difficults dans la phase de conception. Il est courant maintenant d'utiliser une interface WYSIWYG (?What you see is what you get?, ce que vous voyez est ce que vous obtenez ), c'est dire un diteur HTML tel que Dreamweaver. Cela signifie que le concepteur n'a mme pas besoin de code HTML. Cependant, ce n'est pas possible dans le processus de conception d'un template Joomla parce que les diteurs WYSIWYG ne peut pas afficher une page dynamique. Cela veut dire que le concepteur doit taper le code " la main" et afficher la page via un serveur PHP/MySQL. Avec une connexion assez rapidement cela pourrait tre un serveur Web, mais la plupart des concepteurs utilisent un serveur local sur leur propre ordinateur. Il s'agit de logiciel qui font office de serveurs Web sur l'ordinateur du concepteur tels que EasyPHP, MAMP, XAMP ou WAMP. Il n'existe pas de ?chemin tout trac? pour crer une page Web, cela dpend du concepteur. Ceux qui sont plus enclins aux graphisme font une ?image? de la page Web dans une application graphique comme Photoshop et ensuite dcoupe les images pour pouvoir les utiliser pour le Web (connu sous le nom de ?slice and dice?, morceler). Les concepteurs plus base sur la technique cherchent souvent coder directement. Toutefois, comme on vient d'tre mentionn, le concepteur de template Joomla est limit du fait qu'il ne peut pas voir instantanment le rsultat de son codage dans l'diteur. Le processus de conception est donc modifi comme suit: Effectuer des modifications dans l'diteur HTML, enregistrez les modifications. Avoir le serveur en local qui fonctionne en arrire-plan. Voir les modifications dans un navigateur Web. Retour l'tape 1.

Le minimum savoir Lors de la cration d'un template, vous devez disposer de Joomla sur un serveur ce qui vous permettre d'effectuer des changements et de rafrachir la page de sortie.

1.4

Options du serveur localhost

Prcdemment (chapitre 2), nous avons vu comment installer un serveur web qui fonctionne sur l'ordinateur. Nous avons crer un serveur web virtuel appel ?localhost? avec WAMP. Pour aller plus loin dans ce chapitre, vous allons avoir besoin de cette base. Si vous n'avez pas encore install de serveur, c'est le moment d'aller de l'avant et de l'installer. Je vais attendre ici. TUYAU Une technique utile pour rendre le processus de conception plus efficace est de servir une page web que vous tes en train de concevoir, puis copier et coller la source dans un diteur. Par exemple, une fois votre mise en page CSS mise en place, vous pouvez utiliser l'un de ces serveurs localhost pour signifier une page, puis afficher le code source de la page. Puis copier et coller le code source dans votre diteur Vous pouvez . dsormais facilement aller la page l'aide de style CSS et ne pas avoir passer par le cycle des tapes dcrites prcdemment. NOTE Un diteur gratuit XHTML Pour ceux qui ne sont pas en mesure de payer pour un diteur commercial, comme Dreamweaver, certains sont disponibles gratuitement. Nvu est un excellent choix, il a une validation intgr et est 100% open source. Cela signifie que toute personne est la bienvenue pour le tlcharger sans frais (http://www.nvu.com/download.html), y compris modifier le code source si vous avez besoin d'y apporter des changements !

1.5

W3C et design sans table

Ergonomie, accessibilit et optimisation pour les moteurs de recherche (SEO. ?Usability, accessibility, and search engine optimization?) sont les expressions utilises pour dcrire les pages Web de qualit sur l'Internet aujourd'hui. En ralit, il y a d'importante possibilit de ?liaison? entre l'ergonomie, l'accessibilit et le SEO. Une page web qui montre ces capacits grer l'une le fait pour les trois, voir la Figure 9,2. Le moyen le plus facile pour atteindre ces trois objectifs est de suivre le cadre dfini par le World Wide Web Consortium (W3C) et les standards du Web. Par exemple, un site qui est structur smantiquement en XHTML (voir la diffrence entre XHTML et HTML) sera lue aisment par l'intermdiaire d'un lecteur spcifique aux malvoyants. Il sera galement lue aisment par un moteur de recherche (spider). Google est effectivement aveugle dans sa manire de lire votre site Web, c'est comme s'il utilisait un lecteur d'cran pour malvoyant.

Figure 9,2 : Les interactions entre l'ergonomie, l'accessibilit et le SEO

Les standards du Web ont mis en place un ensemble de "rgles" pour tous les navigateurs Web.La principale organisation soutenir ces normes est le World Wide Web Consortium (WC3), dont le directeur, Tim BernersLee, a invent le Web en 1989. Pour vous aider comprendre d'o proviennent les standards du web, une histoire peut tre utile. De nombreuses pages web sont en fait conus pour les anciennes versions des navigateurs. Pourquoi? Les navigateurs ont continuellement volu depuis que le World Wide Web a commenc. De nouveaux sont apparus, et les plus anciens ont disparu (Vous souvenez-vous de Netscape?). Les standards courants du W3C servent (nous l'esprons) pousser les fabricants dvelopper davantage de navigateurs conformes afin que les concepteurs puissent concevoir une plate-forme commune. Un autre facteur qui complique les choses, c'est que certains dveloppeurs de navigateur (comme Microsoft) ont tendance interprter le html / xhtml de manire lgrement diffrente que les standards. Cela a conduit avoir des conceptions web spcifiques pour supporter les anciens navigateurs, au dtriment des nouveaux.Il est souvent ?dcid? qu'il est important qu'une page Web apparaissent correctement en tenant compte de l'hritage de ces navigateurs. Le normes nonces par le WC3 pour coder une page web ont t dvelopps pour assurer une cohrence. Un site qui reprend les standards Web du W3C a une bien meilleure base pour se rendre accessibles, utilisables, et optimis pour les moteurs de recherche. Pensez que ces codes sont fait pour la construction de votre maison. Un site construit avec eux est plus solide, plus sre et concide avec les attentes des utilisateurs. Vous pouvez vrifier vos pages HTML avec le service de validation du W3C (validator.w3.org /). C'est facile et gratuit (assurez-vous d'utiliser le bon DOCTYPE lorsque vous essayez de valider votre code). Au niveau le plus simple, un site qui rpond la validation du W3C utilise le (X) HTML qui spare le contenu de la prsentation en utilisant le CSS. Poser cinq la question de ce que sont les standards du web cinq concepteurs de site Web, et vous obtiendrez cinq rponses. Mais la plupart conviennent qu'elle sont bases sur l'utilisation d'un code valide, que ce soit le HTML, XHTML ou autres.

1.6 Code smantiquement correct


Comme il a t mentionn plus tt, tre smantiquement correct signifie que le (X) HTML de la page W ne eb

dcrit que le contenu et non la prsentation. En particulier, cela signifie une organisation structure sous forme de balises (h1, h2, p, div, pre, a, etc) et utiliser uniquement les tableaux pour des donnes tabulaires, et non pour la mise en page.

1.7 Le CSS ou les feuilles de style en cascade


Etroitement li pour obtenir du code smantiquement correct, le Cascading Style Sheets (CSS) est de mise pour contrler l'apparence et la mise en page d'une page Web.Le CSS est un mcanisme simple pour ajouter du style (ce sont les polices, couleurs, espacement, etc) aux documents Web (source: http://www.w3.org/Style/CSS/). Il existe paralllement au code (X) HTML et vous permet ainsi de sparer totalement le contenu (code smantique) de la prsentation (CSS). Le meilleur exemple de cela est visible sur CSS Zen Garden, un site o la mme smantique XHTML est en forme de diffrentes faons et unique avec diffrents CSS. Le rsultat est la prsence de pages trs diffrente mais au contenu de base identique. Concevoir des sites Joomla actuellement prsente des dfis considrables pour rpondre la validation des normes. Dans la premire srie, 1.0.X, le code utilisait une importante proportion de tables. Ils n'utilisaient pas vraiment le CSS pour la prsentation, pas plus qu'il ne produisaient du code smantiquement correct. Ce problme s'est aggrav par le fait que trs peu de dveloppeurs tiers utilisaient le CSS, la plupart utilisaient des tableaux pour gnrer leur code. Heureusement, l'quipe de dveloppement de Joomla (Joomla Core ) reconnue cette limitation pour Joomla. Dans la version 1.5, il est possible pour les concepteurs de template de sortir de la conception base de tableaux et de personnaliser la mise en page comme ils le souhaitent. Ceci tant dit, des prcautions doivent encore tre prises lors de la cration d'un template pour s'assurer qu'il soit accessible (par exemple, les tailles de polices redimensionnables), utilisable (navigation claire) et optimis pour les moteurs de recherche (source-classs). Le minimum savoir La cration de templates valides devrait tre une intention, et non un objectif. L'ide est de faire votre template aussi accessible que possible pour les humains et les robots, et non pour obtenir un certificat de validit de votre code.

2. Cration d'un template vierge


Pour comprendre le contenu d'un template, nous allons commencer par examiner un template Joomla vierge.

2.1

Constitution d'un fichier template

Le template contient diffrents fichiers et dossiers qui composent un template Joomla. Ces fichiers doivent tre placs dans le rpertoire / templates / de Joomla. Donc, si nous avions deux templates installs, notre arborescence ressemblerait quelque chose comme ce qui suit: / Templates / Components (exemple) / Templates / Voodoo (exemple) Notez que les noms de rpertoire pour les templates doit tre le mme que le nom du template, dans ce cas, Components et Voodoo. De toute vidence, ils sont sensibles la casse et ne doivent pas contenir d'espaces. Dans le rpertoire d'un template, il ya un certain nombre de dossiers cls:

/ Components / templateDetails.xml / Components / index.php Ces deux noms de fichier et l'emplacement doivent correspondre exactement parce que c'est la faon dont ils sont appels par le noyau Joomla script. Le premier d'entre eux est le template de fichier XML. TemplateDetails.xml Il s'agit d'un fichier de mtadonnes au format XML appel par Joomla qui donne les fichiers ncessaires lors du chargement d'une page qui utilise ce template. Notez le majuscule "D." Il dtaille galement l'auteur, le droit d'auteur, ainsi que les fichiers constituant le template (y compris toutes les images utilises). La dernire utilisation de ce fichier est destin l'installation d'un gabarit partir de l'interface d'administration. Deuximement, nous avons le moteur du template, index.php: Index.php Ce fichier est le plus important. Il dcrit le site et explique au CMS Joomla o mettre les diffrents composants et modules. Il s'agit d'une combinaison de PHP et (X) HTML. Dans presque tous les templates, des fichiers additionnels sont utiliss. Il est classique (bien que non exige par le coeur), de les nommer et de les localiser, comme indiqu ci-aprs: / Components / template_thumbnail.png / Components / css / template.css / Components / images / logo.png Ce ne sont l que des exemples. Le Tableau 9,1 examine chaque ligne. / Templatename / dossier / fichier Description / Components / template_thumbnail.png Une capture d'cran du navigateur Web le template (en gnral rduit environ 140 pixels de large et 90 pixels de hauteur). Aprs le template a t install, cela fonctionne comme un "Aperu d'image" visible dans l'administration template Joomla Manager et aussi le slecteur de template dans le module frontal (si utilises).

/ Components / css / template.css Le CSS du template. L'emplacement du dossier est optionnelle, mais vous devez spcifier o elle se trouve dans le fichier index.php. Vous pouvez l'appeler ce que vous voulez. Gnralement, le nom indiqu est utilis, mais nous le verrons plus loin qu'il ya des avantages avoir d'autres fichiers CSS aussi. / Components / images / logo.png Toutes les images qui vont avec le template. Encore une fois pour des raisons organisation, la plupart des concepteurs de mettre ces images dans un dossier. Ici nous avons un fichier image appel logo.png titre d'exemple.

Tableau 9,1 : Fichiers ncessaires pour un template

2.2

TemplateDetails.xml

Le templateDetails.xml doit inclure tous les fichiers qui font partie du template. Il comprend galement des informations telles que l'auteur et le droit d'auteur. Certaines d'entre elles sont indiques dans l'administration du Template. Un exemple de fichier XML est montr ici: <?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.com </authorEmail> <authorUrl>www.compassdesigns.net</authorUrl> <version>1.0</version> <description>premier exemple de fichier XML</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> Expliquons ce que certaines de ces lignes veulent dire: <install version="1.5" type="template">. Le contenu du document XML, utile pour les instructions d'installation. L'option type = "template" spcifie que l'installateur est un template et que c'est pour Joomla 1.5. <name>TemplateTutorial15</name>. Dfinit le nom de votre template. Le nom que vous entrez ici sera galement utilis pour crer le rpertoire dans le rpertoire des templates. Par consquent, il ne devrait pas contenir de caractres que le systme de fichier ne peut pas manipuler, par exemple les espaces. Si l'installation est manuel, vous devez crer un rpertoire qui est identique au nom du template. <creationDate>August 2007</creationDate>.La date laquelle le template a t cr.

Il s'agit d'un champ de formulaire libre et peut tre autre chose comme mai 2005, 08-Juin-1978, 01/01/2004, et ainsi de suite. <author>Barrie North</author>. Le nom de l'auteur de ce template, trs probablement votre nom. <copyright>GPL</copyright>. Toute information de copyright passe par cet lment. Des explications lmentaire concernant la licence pour les dveloppeurs et les concepteurs peuvent tre trouves sur les forums Joomla. <authorEmail>compassdesigns@gmail.com</authorEmail>. Adresse de courriel laquelle l'auteur de ce template peut tre contacter. <authorUrl>www.compassdesigns.net</authorUrl>. L'URL du site de l'auteur. <version>1.0</version>. La version de ce template. <files></files>.Divers fichiers utiliss dans le template. Les fichiers utiliss dans le template sont exposes avec la balise <filename> : <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 section <files> contient tous les fichiers gnriques comme les sources PHP pour le template ou la vignette de prvisualisation. Chaque fichier numres dans la prsente section est dlimite par <filename> </filename>. Y seront galement cits les fichiers utiliss par le template ; ci-dessus l'exemple d'un fichier JavaScript. Tous les fichiers image que le template utilise sont galement rpertoris dans la section . Encore une fois, chaque fichier joint est balis par <filename> </filename>. Les informations de chemin des fichiers sont relatifs la racine du template. Par exemple, si le template est dans le rpertoire appel 'YourTemplate', et que toutes les images sont dans un rpertoire "images" l'intrieur de "YourTemplate ', le chemin correct est : <filename>images/my_image.jpg</filename>. Enfin, toutes les feuilles de style sont numrs dans la section des fichiers. Encore une fois, le nom de fichier est ferm par <filename> </filename>, et ce chemin est relatif la racine du template. <positions></positions>. La position des modules disponibles dans le template. <params></params>.Elles dcrivent les paramtres qui peuvent tre transmis au template via les fonctions avances de l'admin comme le changement de couleur du template.

2.3

Index.php

Qui a t'il en ralit dans le fichier index.php? Il s'agit d'une combinaison de (X) HTML et de PHP qui dtermine tout ce qui concerne la structure et la prsentation des pages.

Tout d'abord, intressons-nous une partie critique de la ralisation d'un template valide, le DOCTYPE en haut du fichier index.php. C'est le morceau de code qui se trouve tout en haut de chaque page Web. En haut de notre page, ce que nous avons dans notre template: <?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 premire dclaration PHP fait en sorte que le fichier ne soit pas accessible directement pour des raisons de scurit. Le DOCTYPE d'une page Web est l'un des composants fondamentaux qui dtermine comment une page Web est affich par un navigateur, et plus prcisment, la faon dont ce navigateur interprte les CSS. Pour vous donner une meilleure comprhension, une observation de alistapart.com dit: [Les informations sur le site du W3C propos des DOCTYPEs] crit par des geeks pour les geeks. Et quand je dis les geeks, je ne veux pas dire d'ordinaires professionnels du web comme vous et moi. Je veux dire, les geeks, ceux qui font que nous ressemblons une grand-mre, la premire fois quelle reoit un mail. Quoi qu'il en soit, vous pouvez utiliser plusieurs DOCTYPEs. Fondamentalement, le DOCTYPE indique au navigateur la manire d'interprter la page. Ici, les mots "strict" et "transitional" commencent flotter... (float: left et float: right habituellement). Essentiellement, depuis que le Web a commenc, les diffrents navigateurs ont eu diffrents degrs de compatibilit avec le CSS. Cela signifie par exemple, qu'Internet Explorer ne comprend pas le "min-width" (commande qui permet de fixer un minimum de largeur de page). Pour contourner ces limitations, vous devez utiliser des "hacks" dans le CSS. NOTE Certains disent que considrer le XHTML comme une amlioration du HTML est mauvais. Si vous comprenez rellement cette dclaration, vous tes bien en avance et au-del de ce guide. V pouvez en lire ous plus hixie.ch/advocacy/xhtml. ?Strict? veut dire que le HTML (ou XHTML) sera interprte exactement comme le dicte les normes. Un DOCTYPE "transitional" signifie que l'criture de la page autorise quelques diffrences par rapport aux normes. Pour compliquer les choses, il existe des modes qu'on appelle "bizarreries". Si le DOCTYPE est faux, prim ou absent, le navigateur passe en mode ?quirks?. Il s'agit d'une tentative pour tre rtro-compatible. Internet Explorer 6, par exemple, donnera un rendu semblable IE4. Malheureusement, les gens finissent parfois en mode ?quirks? accidentellement. Cela arrive habituellement de deux faons: Ils utilisent la dclaration DOCTYPE directement tire de la page Web du WC3, et le lien est relatif :

DTD/xhtml1-strict.dtd. Vous devez indiquer le chemin complet, comme spcifi prcdemment. Microsoft IE6 est valide mais passe en mode ?quirks?. Cela arrive lorsqu'il y a une dclaration xml avant le DOCTYPE. Ci-dessous, une dclaration XML (aprs le DOCTYPE): <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this>language;?>" lang="<?php echo $this->language; ?>" > La partie sur IE6 en mode ?Quirks? est importante. Dans ce chapitre, nous apprendrons designer pour IE6 et plus rcent, nous entendons faire en sorte que tout fonctionne de manire standard. Cela permettra de rduire au minimum les hacks que nous aurons faire plus tard. NOTE Faire une page respectant les standards, o vous voyez "valid xhtml" en bas de page ne signifie pas qu'il s'agit d'un code complexe, ou que les balises sont difficiles comprendre. Cela signifie simplement que le code que vous utilisez correspond au DOCTYPE que vous dclarer. C'est tout ! Rien d'autre. Concevoir votre site aux normes peut tre ramener ?dire ce que vous faites et faire ce que vous dites?. V oici quelques liens utiles qui vous aideront comprendre les DOCTYPEs et le mode ?Quirks?: http://www.quirksmode.org/CSS/quirksmode.html http://www.alistapart.com/stories/doctype http://www.w3.org/QA/2002/04/Web-Quality www.compassdesigns.net/

2.4

Qui a t'il d'autre dans l'index.php?

Regardons la structure de l'en-tte en premier lieu; nous voulons tre aussi minimes que possible, mais encore assez pour un site de production. Les informations d'en-tte nous allons utiliser est la suivante: <?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> Ce qui signifie? Nous avons dj examin les rpercussions de la dclaration DOCTYPE dans le fichier index.php. Le code <?php echo $this->language; ?> extrait la langue partir de la configuration globale du site. La ligne suivante inclut davantage d'informations : <jdoc:include type="head" /> Ce sont l'ensemble des informations dfini dans la configuration globale du site. Il comprend les balises suivantes (dans une installation par dfaut): <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="index.php?option=com_content&amp;view=frontpage&amp;format=feed&amp; Itemid=1&amp;type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" /> <link href="index.php?option=com_content&amp;view=frontpage&amp;format=feed&amp ;Itemid=1&amp;type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" /> <script type="text/javascript" src="http://localhost/Joomla1.5RC2/media/system/ js/mootools.js"></script> <script type="text/javascript" src="http://localhost/Joomla1.5RC2/media/system/ js/caption.js"></script> Une bonne partie de ces informations sont cres la vole et sont spcifiques la page (article) sur laquelle on est. Elles comprennent un certain nombre de balises METAs, le favicon, flux (RSS, ATOM) et quelques fichiers standard JavaScript. Les dernires lignes de l'en-tte fournissent des liens vers des fichiers CSS pour le template: <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" /> Les deux premiers fichiers, system.css et general.css contiennent certains styles gnriques Joomla. Le dernier est le CSS du template, appel ici template.css. Le code <?php echo $this>template ?> renverra le nom du template actuel. Il est crit de cette faon plutt que le chemin rel car le code le rend plus gnrique. Lorsque vous crerez un nouveau template, il vous suffit de copier le code tel quel et de ne vous inquitez de rien. Le dossier CSS du template peut avoir un nombre quelconque de fichiers, par exemple ceux conditionnelles aux diffrents navigateurs. Celui-ci cible IE6: <!--[if lte IE 6]> <link href="templates/<?php echo $this->template ?>/css/ieonly.css" rel="stylesheet" type="text/css" /> <![endif]--> Cet exemple fait partie des techniques permettant d'utiliser un template de paramtre: <link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/<?php echo $this->params->get('colorVariation'); ?>.css" type="text/css" />

2.5

Template Joomla 1.5 vierge

Crer notre premier template sera trs trs facile! Prt? Tout ce que nous devons faire, c'est utiliser les dclarations Joomla pour insrer le contenu de tous les modules et le corps du site. <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> A ce stade (si vous prvisualisez), le site n'inspire pas grand chose dintressant. La sortie est illustre la figure 9,3.

Figure 9,3 : Un template sans style

Le template comprend les lments suivants dans l'ordre assez logique: Nom du site Module haut Modules de gauche Contenu principal Module de droite Le minimum savoir Le template de base Joomla charge simplement les modules et le corps (composant). La prsentation et le design font partie des CSS, pas Joomla. Le but est d'essayer de s'approcher le plus possible du marquage smantiquement correst. D'un point de vue du web, il faut entendre une page qui peut tre lue par tout le monde, un navigateur, un spider, ou un lecteur d'cran pour malvoyant. La smantique est la pierre angulaire de l'accessibilit. NOTE Ce que nous avons ici est seulement le potentiel d'une smantique correcte. Si nous devions commencer maintenant et placer les modules alatoirement, nous obtiendrions un vrai fouillis. Une considration importante pour les sites CMS est que leurs templates est l'image de leurs concepteurs. C'est ce que,

souvent, les concepteurs dcouvrent lors de leurs tentatives de validation de leurs sites. V remarquerez que nous avons utilis une srie de commandes spcifiques Joomla pour crer ce premier ous jet: <?php echo $mainframe->getCfg('sitename');?><br /> <jdoc:include <jdoc:include <jdoc:include <jdoc:include <jdoc:include type="module" name="breadcrumbs" /> type="modules" name="top" /> type="modules" name="left" /> type="component" /> type="modules" name="right" />

La dclaration PHP echo extrait simplement une chane de caractres du fichier configuration.php. Ici, nous utilisons le nom du site, on pourrait tout aussi facilement avoir le texte suivant: 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 dclaration jdoc insert diffrents types de sortie XHTML partir des lments des modules. Cette ligne insre un composant. Ce composant sera dtermin par le lien du menu: <jdoc:include type="component" /> NOTE Chose intressante, vous semblez tre en mesure de disposer de plusieurs instances qui gnre divers composants. Pas sr que c'est ce que vous souhaitiez, mais je pense que vous voudriez savoir! Cette ligne insre un module et sa localisation: <jdoc:include type="modules" name="right" /> La syntaxe complte <jdoc:include type="modules" name="LOCATION" style="OPTION" /> Nous regarderons les diffrentes options de style dans le prochain chapitre.

2.6

CSS Template Tutorial tape 1

A ce stade, nous disposons d'un template trs strict. J'ai cr un template qui est installable et disponible dans la bibliothque www.joomlabook.com: CSSTemplateTutorialStep1.zip. Cela permet d'installer un template qui ne dispose que de deux fichiers, index.php et templateDetails.xml. J'ai retir les autres fichiers pour donner un os nu, sans CSS. Il s'agit en fait d'un bon template de diagnostic, vous pouvez l'installer et suivre les erreurs qui se produisent avec un

composant ou d'un module.

3. L'utilisation du CSS pour crer une mise en page sans table


Nous nous servirons de CSS pour faire une mise en page en 3 colonnes. Nous tenterons galement d'en faire une mise en page fluide. Il existe deux principaux types de mise en page web; fixe et fluide, et ils font tous deux rfrence la faon dont la largeur de la page sont contrles. La largeur de la page est un problme en raison des nombreuses rsolutions de navigateurs avec lesquels les gens surfent sur le Web. Bien que le pourcentage est en baisse, environ 10% des internautes utilisent une rsolution de 800x600 ou moins. La majorit, 90%, utilise 1024x768 et plus. Faire une mise en page fluide signifie que votre prcieuse page Web ne sera pas une colonne rduite la rsolution 1024 et sera visible dans son intgralit sur de petits crans. La conception peut utiliser des tableaux construire la page. Ils sont capable de dfinir la largeur des colonnes en pourcentage, mais ils ont plusieurs inconvnients. Par exemple, les tableaux ont beaucoup de code supplmentaire par rapport aux mises en page CSS. Cela conduit un plus long temps de chargement (que n'aime pas les internautes), et sont plus pauvres en performance dans les moteurs de recherche. Le code fait environ le double de la taille, et pas seulement avec le balisage mais aussi avec autre chose appel "spacer gifs." Mme les grandes entreprises sont parfois tomber dans le pige de la table, comme en tmoigne une rcente polmique au sujet du site disney.co.uk (version 3): Il ya deux problmes majeurs avec un site qui utilise des tableaux pour la mise en page. Ils sont difficiles maintenir. Pour changer quelque chose, vous devez dterminer ce que toutes les balises comme <table>, <td>, <tr> font. Avec CSS, il n'y a juste que quelques lignes inspecter. Le contenu ne peut tre ordonne par la source. Beaucoup d'internautes ne voient pas les pages Web dans un navigateur. Ceux affichs par un navigateur texte ou un lecteur d'cran lira la page du coin suprieur gauche au coin infrieur droit. Cela signifie que leur premire vue sera l'en-tte et la colonne de gauche (pour un 3 colonnes) avant de se mettre la colonne du milieu, les choses importantes, puis la colonne de droite et le pied de page. Une mise en page CSS, d'autre part, permet d'ordonner la source du contenu, ce qui signifie que le contenu peut tre rarrang dans le code ou la source. Peut-tre le plus important visiteur de votre site, Google, et il utilise un lecteur d'cran toutes fins utiles. Jetons un coup d'oeil notre disposition en utilisant le CSS. V pouvez placer les lments (divers) de ous plusieurs faons en utilisant le CSS. Pour une introduction rapide, une bonne source est Brainjars CSS Positioning. Si vous tes nouveau sur CSS, vous pourriez avoir lu au moins un guide du dbutant CSS. V quelques oici suggestions: Kevin Hale, un aperu actuel des techniques de mise en page CSS http://particletree.com/features/an-ove ... echniques/ Htmldog's CSS Beginner's Guide http://Www.htmldog.com/guides/cssbeginner/ Yourhtmlsource.com http://Www.yourhtmlsource.com/stylesheets/

Le minimum savoir Le Web design moderne utilise le CSS plutt que des tableaux pour positionner des lments. Il est difficile apprendre, mais c'est un investissement valable. Il ya beaucoup de ressources disponibles pour vous aider. Nous nous servirons de la position float pour positionner notre contenu. A la base, le template pourrait ressembler la Figure 9,4. Ca reste pas trs excitant, mais passons en revue chaque partie.

Figure 9,4 : template de mise en page de base

Dans la figure 9,4, les colonnes de gauche, centrale et droite ont chacune leurs propres lments. Chacune flotte gauche et ont une largeur en pourcentage qui, ensemble, donne 100%. Le style clear:both du pied de page indique au navigateur darrter le flottement et de s'tendre sur la largeur des trois colonnes. Quand nous construisons notre deuxime template dans ce chapitre, nous allons devoir utiliser une technique plus avance. Pour amliorer la mise en page nous allons ajouter des espaces neutres au contenu. Nous avons besoin d'ajouter des arations entre les colonnes, communment appel "gouttire". Malheureusement, il y a un problme ici. Vous savez peut-tre que Internet Explorer n'interprte pas correctement le CSS. Un des problmes est qu'il calcule la largeur diffremment. Nous pouvons rsoudre ce problme en n'utilisant pas de border ou de padding. Pour crer la gouttire, nous incluons un <div> entre les colonnes. Au CSS nous ajoutons : .inside {padding:10px;} Our resulting <body> code for index.php is:

<body> <div id="wrap"> <div id="header"> <div class="inside"> <?php echo $mainframe->getCfg('sitename');?> <jdoc:include type="modules" name="top" /> </div> </div> <div id="sidebar"> <div class="inside"> <jdoc:include type="modules" name="left" /> </div> </div> <div id="content"> <div class="inside"> <jdoc:include type="component" /> </div> </div> <div id="sidebar-2"> <div class="inside"> <jdoc:include type="modules" name="right" /> </div> </div> <div id="footer"> <div class="inside"> Powered by <a href="http://joomla.org">Joomla!</a>. Valid <a href="http://validator. w3.org/check/referer">XHTML</a> and <a href="http://jigsaw.w3.org/cssvalidator/ check/referer">CSS</a>. </div> </div> </div> <!--end of wrap--> </body> Notre template.css ressemble ceci: body { } #wrap { min-width:760px; max-width:960px; } #header {} #sidebar {float:left;width:20%; overflow:hidden } #content {float:left;width:60%; overflow:hidden } #sidebar-2 {float:left;width:20%; overflow:hidden } #footer {clear:both;}

.inside {padding:10px;} TUYAU Les raccourcis CSS Il est possible de rduire la quantit de code CSS en utilisant des "raccourcis". Un exemple pour padding avec une marge applique un lment, d'o: Margin-top: 5px; margin-bottom: 5px; margin-left: 10px; margin-right: 10px; Peut tre remplace par: Margin: 5px 10px; Il existe des ?raccourci? pour chaque dfinition de style. Une fois que vous avez dtermin les styles, supprimez les versions longues. La syntaxe pour font est : font : taille de la police | font-style | font-variant | font-weight | line-height | font-family Donc, plutt que d'utiliser ce code: Font-size: 1em; Font-family: Arial, Helvetica, sans-serif; Font-style: italic; Font-weight: bold; Line-height: 1.3em; Utiliser ceci: Font: bold 1em/1.3em Arial, Helvetica, sans-serif italic; Pour en savoir plus sur cette syntaxe, une introduction aux raccourcis des proprits CSS : http://home.no.net/junjun/html/shorthand.html Cette simple mise en page est bonne pour apprendre utiliser les CSS avec Joomla, car elle montre deux des avantages du CSS sur les tables, il y a moins de code, et il est plus facile maintenir. Toutefois, la source n'est pas ordonnes. Pour cela, nous devons utiliser une structure plus volue connue sous le nom de nested float ([boites] flottantes imbriques). Une structure dont le contenu est hirarchise permet d' obtenir de meilleurs rsultats en SEO que celles dont le contenu important arrive tardivement dans le code. Vue d'un site Joomla, le contenu important vient des composants. CSS par dfaut Jusqu' prsent, tous nos CSS ont servi de la mise en page. Alors, ajouter un peu de mise en forme: /* layout.css CSS file*/ body { text-align:center; /*center hack*/ }

#wrap { min-width:760px; max-width:960px; width: auto !important; /*IE6 hack*/ width:960px; /*IE6 hack*/ margin:0 auto; /*center hack*/ text-align:left; /*center hack*/ } #header {} #sidebar {float:left;width:20%; overflow:hidden } #content {float:left;width:60%; overflow:hidden } #sidebar-2 {float:left;width:20%; overflow:hidden } #footer {clear:both;} .inside {padding:10px;} Nous avons centr la page en utilisant un petit hack. Ceci parce qu'Internet Explorer ne lit pas exactement le CSS. Avec un navigateur conforme aux standards, on peut crire margin: 0 10%; pour centrer la page, mais IE ne le comprend pas, donc nous centrons le ?texte? de la page entire, puis nous ferrons gauche dans les colonnes. En commmoration au support de IE7 aux largeur min et max (IE6 ne le fait pas), nous pouvons ajouter une largeur minimale et maximale. Notez que nous avons ajouter un petit hack pour IE6 car il ne comprend pas non plus ces lments. Il va ignorer le!important et avoir 960px de largeur. NOTE Il peut paratre trange de dfinir la largeur de nos colonnes en pourcentage et ensuite paramtrer le conteneur global en fixe. Eh bien, un certain nombre de choses se jouent ici: Avoir l'intrieur d'un conteneur fixe des colonnes fluides rend le template trs flexible. Nous avons un une largeur max alors pourquoi ne pas tout rendre fluide? Beaucoup d'internautes ont maintenant d'normes crans. La recherche sur l'ergonomie nous indique que les lignes de texte de 900px de large sont difficiles lire parce que les yeux doivent parcourir un long chemin pour atteindre la ligne suivante. La limitation de la fluidit rend le site plus confortable / accessible. Nous avons galement ajout un nouveau style aux colonnes: overflow: hidden. Cela rendra les fins de pages plus ?consistant? lorsque nous rduiront la largeur. Au dbut du CSS nous initialiseront l'ensemble des styles typographiques, c'est ce qu'on appelle global reset: /*Compass Design typography css */ * { 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; } Tous les margin et padding sont mis zro, ensuite tous les lments de type bloc reoivent une marge par dfaut. Cela contribue assurer la cohrence des navigateurs. V pouvez en savoir plus sur le global ous reset sur clagnut et left-justified. La taille de la police est fix 76%. La raison pour cela est d'essayer d'obtenir des tailles de polices plus cohrente sur tous les navigateurs. Toutes les tailles de police sont alors cals en em. Avoir line-height: 1,3 contribue la lisibilit. Cela signifie que les pages seront plus accessibles parce que le spectateur sera en mesure de redimensionner les polices avec leurs propres prfrences. Cette question est examine plus avant dans "Une exprience de la typographie" sur The Noodle Incident (Owen Briggs) Si nous devions ajouter des couleurs l'arrire-plan, l'en-tte, aux marges et au contenu des conteneurs, nous verrions quelque chose comme le montre la Figure 9,5. Notez que les colonnes latrales ne parviennent pas jusqu'au bas de page. C'est parce qu'ils s'tendent en fonction de leur contenu; l o l'espace est blanc gauche et droite, ils n'y a rien.

Figure 9,5 : Template de base avec la typographie

Si nous avons un template qui a un fond blanc pour les trois colonnes, il n'y a pas de problme. Nous allons utiliser cette approche et nous aurons des boites autour des modules. Si nous voulons que les colonnes soient colores sur toute leur hauteur, nous devons utiliser une image de fond qui s'talera verticalement. Cette technique est appele Fausses Colonnes et est dcrite par Douglas Bowman et Eric Meyer.

3.1

Les CSS spcifiques Joomla

Bien que Joomla 1.5 donne la possibilit de compltement dfinir la structure partir du template, il existe des valeurs par dfaut qui sont significatifs dans la production de contenu et en particulier des tables. Paralllement ces tableaux, il y a des structures CSS prdfinies disponibles pour les designers pour agrmenter le style des pages. Base sur une recherche de divers membres de la communaut, le tableau 9,2 montre la liste actuelle. Notez qu'il ne comprennen pas les balises Web gnriques, comme H1, H2, p, ul, a, form, et ainsi de suite. Tableau 9,2 : Styles CSS par dfaut de la version 1,0 1.5 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

Beaucoup de styles que vous pourriez voir dans ce tableau ont en ralit des styles CSS encore plus spcifiques. Fondamentalement, une rgle spcifique l'emporte sur une moindre rgle d'ordre gnral.

Par exemple : a (color: blue;) a:link (color: red;) .contentheading (color: blue;) div.contentheading (color: red;) La couleur du lien et la couleur de .contentheading sera rouge, car cette rgle est plus spcifique (comme .contentheading est contenue dans un <div> ) Dans le cas des templates Joomla, vous allez souvent voir des rgles plus spcifiques que d'autres. Cela se produit souvent lorsque la classe est applique une table. Voici d'autres exemples: .moduletable table.moduletable .moduletable est le nom d'une <div> qui entoure un module. table.moduletable s'appliquera seulement un tableau avec une class="moduletable". .moduletable s'appliquera quel que soit le style de classe active. a.contentpagetitle:link .contentpagetitle a:link a.contentpagetitle:link s'appliquera tous les liens portant cette classe. .contentpagetitle a:link s'appliquera tous les liens l'intrieur de cette classe. Les spcificits ne sont pas facile comprendre; c'est souvent plus facile de commencer en utilisant le style le plus gnral possible et puis, de plus en plus prcis lorsque les rsultats ne sont pas ceux que vous attendez. V oici quelques liens vers des sites qui traitent de la spcificit dans le dtail: http://www.htmldog.com/guides/cssadvanced/specificity/ http://www.meyerweb.com/eric/css/link-specificity.html http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html Pour le moment, notre template utilise des tableaux. Comme mentionn plus haut, cela ralentit la page et rend plus difficile sa mise jour. Pour rduire le nombre de tableaux, quand nous appelerons les modules, nous paramtrerons les styles dans le jdoc: include. Le minimum savoir Joomla va produire des lments spcifiques, des identifiants et des classes dans le code de la page Web. Ceux-ci peuvent tre prvus et utiliss pour les styler le design en utilisant CSS.

3.2

Les modules dans le Template

Si un module est appel dans index.php, il dispose de plusieurs options sur la faon dont il est affiche.

La syntaxe est: <jdoc:include type="modules" name="LOCATION" style="OPTION" /> Le style est facultative et est dfini dans templates/system/html/modules.php. Actuellement, par dfaut le fichier modules.php contient les valeurs suivantes : OPTION=table (affichage par dfaut) modules affichs dans une colonne. Ce qui suit montre un exemple de ce qui est produit: <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 fait apparatre les modules horizontalement. Chaque module est produit dans la cellule d'une table qui l'entoure. Le code suivant montre un exemple: <table cellspacing="1" cellpadding="0" border="0" width="100%"> <tr> <td valign="top"> <?php modChrome_table($module, $params, $attribs); ?> </td> </tr> </table> OPTION=xhtml fait apparaitre le module comme un simple lment div. Le code suivant montre un exemple: <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; ?> </div>

OPTION = "rounded" fait apparatre les modules dans un format qui permet les angles arrondis. Si ce $style est utilis, le nom moduletable change pour module. Le code suivant montre un exemple: <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; ?> </div> </div> </div> </div> OPTION="none" fait apparatre des modules comme une production brute contenant aucun lment ni aucun titre. Voici un exemple: echo $module->content; Comme vous pouvez le constater, les options de CSS (xhtml et rounded) sont beaucoup plus lgres pour le code, ce qui facilite le design des pages Web. Je vous recommande de ne pas utiliser les styles table (par dfaut) et horz , moins que ce soit absolument ncessaire. Ici, un truc vraiment sympa ! Si vous ouvrez le fichier modules.php, vous verrez toutes les options qui existent pour les modules. Il est facile d'ajouter les votre propres, ce en fait un puissance outil de gabarits. Nous examinerons plus en dtails les drogations dans notre section sur les templates. Pour dvelopper notre template, nous allons mettre un module de style "xhtml" sur l'ensemble de nos modules: <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> </div> <div id="sidebar"> <div class="inside"> <jdoc:include type="modules" name="left" style="xhtml" /> </div> </div> <div id="content"> <div class="inside"> <jdoc:include type="module" name="breadcrumbs"

style="none" /> <jdoc:include type="component" /> </div> </div> <div id="sidebar-2"> <div class="inside"> <jdoc:include type="modules" name="right" style="xhtml" /> </div> </div> <div id="footer"> <div class="inside"> <jdoc:include type="modules" name="footer" style="xhtml" /> </div> </div> </div> <!--end of wrap--> </body> Notez que nous ne pouvons pas mettre ce style sur <jdoc:include type=component /> parce que ce n'est pas un module. Le minimum savoir Dans la version 1.5, la production des modules peut tre entirement personnalise, ou vous pouvez utiliser la sortie pr-construit. Toutes ces options sont appeles module de chrome. Nous avons galement plac le titre du site l'intrieur d'une balise <h1>. C'est smantiquement plus correct, et cela contribuera galement au SEO. Supprimons galement le style background des divs. Nous allons galement ajouter un peu de style CSS pour les modules avec une bordure et un fond pour le module titre. Notre CSS se prsente maintenant comme suit: /*Joomla Design typography CSS*/ * { 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 { 269

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:bold; } #footer,.small,.createdate,.modifydate,.mosimage_caption{ font:0.8em Arial,Helvetica,sans-serif; color:#999; } .moduletable{ margin-bottom:1em; padding:0 10px; /*padding for inside text*/ border:1px #CCC solid; } .moduletable h3{

background:#666; color:#fff; padding:0.25em 0; text-align:center; font-size:1.1em; margin:0 -10px 0.5em -10px; /*negative padding to pull h3 back out from .moduletable padding*/ } NOTE Plusieurs des menus dans l'installation par dfaut du menu ont un suffixe dans le module de proprits _menu. Pour obtenir que tout fonctionne correctement, j'ai supprim ce paramtre. Cette gestion CSS de la typographie produit maintenant le rsultat illustr la figure 9,6.

Figure 9,6 : template de base avec les modules titre styls

3.3

les menus dans les Templates

Nous avons vu prcdemment (chapitre 5), "Cration de menus et de navigation," qu'il existe un certain nombre de paramtres de la faon dont un menu sera rendue. L encore, en utilisant des listes gres par du CSS plutt que des tableaux nous obtenons un code allg et plus facile baliser. Aprs avoir remplac tous nos menus par des listes il nous reste seulement 12 tables (nous verrons comment retirer le reste en utilisant la nouvelle fonctionnalit d'crasement de la version 1.5).Rappelez-vous, le rglage list est nouveau dans la version 1.5; flat list est issu de la version 1.0 et deviendra obsolte. Les listes sont galement prfrables aux tables parce que les navigateurs, les lecteurs d'cran et les robots de recherche seront en mesure d'accder votre contenu plus facilement.

Un des autres avantages de l'utilisation des menus CSS est qu'il existe beaucoup d'exemples de code sur divers sites dvelopps en CSS. Jetons un oeil l'un d'eux et voyons comment ils sont utiliss. Le site Web http://css.maxdesign.com.au/listamatic/ une slection de plus de 30 menus, tous utilisent le mme code.Il y a de lgres diffrences dans le code que nous devons modifier afin de l'adapter nos menus Joomla. Ces listes utilisent le code suivant: <div id="navcontainer"> <ul id="navlist"> <li id="active"><a href=" #" id="current">Item one</a></li> <li><a href="#">Item two</a></li> <li><a xhref="#">Item three</a></li> <li><a href="#">Item four</a></li> <li><a href="#">Item five</a></li> </ul> </div> Cela signifie qu'il existe une <div> englobante appele navcontainer, et une liste <ul> avec une id navlist. Pour reproduire cet effet dans Joomla, nous avons besoin d'avoir une sorte de cadre constitu de <div>. Nous pouvons y parvenir en utilisant les suffixes de module. Si vous vous souvenez, le rsultat d'un module avec pour option le style XHTML est: <div class="moduletable"> <h3>modChrome_xhtml</h3> modChrome_xhtml </div> Si l'on ajoute un suffixe au module, qui s'ajoutera la classe moduletable, comme ceci: <div class="moduletablesuffix"> <h3>modChrome_xhtml</h3> modChrome_xhtml </div> Ainsi, lorsque vous prendrez un menu depuis Listamatic, vous devrez remplacer la classe navcontainer par moduletablesuffix. NOTE Les suffixes de module, dans une certaine mesure, brouille la sparation entre la conception du site et l'administration du site. L'un des objectifs de dveloppement du noyau Joomla est de sparer clairement ces rles. Ceci implique qu'il est probable que cela deviennent obsolte dans les version ultrieur de Joomla 1.5 Cette utilisation d'un suffixe de classe est utile. Cela permet d'attribuer diffrents design d'un simple changement de suffixe. Le minimum savoir Il est prfrable de toujours utiliser les liste puces ou ordonnes pour crer un menu. Pour se faire, vous pouvez consulter les nombreuses ressources CSS gratuites et disponibles sur le Web.

Pour notre site, nous utiliserons List 10 de Mark Newhouse. Notre CSS sera: .moduletablemenu{ padding:0; color: #333; margin-bottom:1em; } .moduletablemenu h3 { background:#666; color:#fff; padding:0.25em 0; text-align:center; font-size:1.1em; margin:0; border-bottom:1px solid #fff; } .moduletablemenu ul{ list-style: none; margin: 0; padding: 0; } .moduletablemenu li{ border-bottom: 1px solid #ccc; margin: 0; } .moduletablemenu li a{ display: block; padding: 3px 5px 3px 0.5em; border-left: 10px solid #333; border-right: 10px solid #9D9D9D; background-color:#666; color: #fff; text-decoration: none; } 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; } Nous avons ensuite besoin d'ajouter le suffixe de classe au menu (de ne pas souligner dans ce cas) chaque module menus que nous voulons styler. Le rsultat est montr dans la Figure 9,7. Pour tout menu, nous voulons tre de style de cette faon, il nous faut ajouter "menu" comme module suffixe.

Figure 9,7 : Modle de base avec le style de menu

TUYAU Lorsque vous essayez d'obtenir un menu particulier pour travailler, voici un bon conseil: Crer une installation par dfaut Joomla et puis regardez le code qui fait la mainmenu. Copiez et collez ce code dans un diteur HTML (comme Dreamweaver). Remplacer tous les liens par "#", et ensuite vous pouvez ajouter des rgles CSS jusqu' ce que l'effet que vous voulez est atteint. Le code pour le menu afin de crer le style est comme suit: <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> <style type="text/css"> <!-.astyle {

} --> </style> </head> <body> <div class="moduletable"> <h3>Main Menu</h3> <ul class="mainmenu"> <li id="current" class="item1 active"><a href="#">Home</a></li> <li class="item2"><a href="#">Joomla! Overview</a></li> <li class="item3"><a href="#">Whats New in 1.5?</a></li>

<li class="item4"><a <li class="item5"><a <li class="item6"><a <li class="item7"><a <li class="item8"><a <li class="item9"><a </ul> </div> </body> </html>

href="#">Joomla! License</a></li> href="#">More about Joomla!</a></li> href="#">FAQ</a></li> href="#">The News</a></li> href="#">Web Links</a></li> href="#">News Feeds</a></li>

Le CSS est incorpor au lieu de le lier pour l'diter plus facilement.

3.4

Cacher les colonnes

Jusqu'ici, nous avons notre disposition 3 colonnes, sans nous soucier s'il y a du contenu inclus. Du point de vue d'un CMS, ce n'est pas trs raliste. Dans un site statique le contenu ne change jamais, mais nous voulons donner aux administrateurs la possibilit de mettre jour leur contenu sans s'inquiter du design. Nous voulons qu'automatiquement une colonne disparaisse s'il n'y a aucun contenu dedans. Pendant le dveloppement du noyau de Joomla 1.5, il y a eu de nombreux changements et amliorations directement tirer du blog de dveloppement.. Nous pouvons sparer ces changement en deux catgories. D'abord, il y a des changements dans la manire dont les choses tait faire dans la version 1.0 - par-exemple la nouvelle manire dont les modules sont chargs, deuximement il y a de nombreuses fonctions supplmentaires, comme les paramtres de gabarit Les Changements mosCountMoules La fonction de mosCountModules a t remplac par la fonction $this->countModules et le support de conditions a t ajout. Cela donne aux designers la possibilit de facilement compter le nombre total de modules avec juste une ligne de code, par exemple $this>countModules(user1 + user2 );lequel retournera le nombre total de modules dans la position USER1 et USER2.

NOTE Plus d'informations sont disponibles sur les forums Joomla Donc l'utilisation conventionnelle de mosCountModules serait : <?php if($this->countModules('condition')) : ?> do something <?php else : ?> do something else <?php endif; ?>

Il y a 4 conditions possibles. Pour exemple, comptons le nombre de modules de la figure 9.7. Nous pourrions intgrer ce code n'importe o dans index.php left=<?php echo $this->countModules('left');?><br /> left and right=<?php echo $this->countModules('left and right');?><br /> Using CSS to Create a Tableless Layout 276 Chapter 9 Creating a Pure CSS Template left or right=<?php echo $this->countModules('left or right');?><br /> left + right=<?php echo $this->countModules('left + right);?> countModules('left'). retournera 4; Il y a 4 modules sur la gauche. countModules('left and right'). retournera 1; Il y a 1 modules sur la gauche ET la droite. countModules('left or right'). retournera 1; Il y a 1 modules sur la gauche OU la droite. countModules('left + right'). retournera 7; Il y a 7 modules sur la gauche plus la droite. Dans cette situation, nous avons besoin d'utiliser une fonction qui nous permet de compter les modules des emplacements spcifiques. Donc par exemple, si nous n'avons aucun contenu publi droite nous pouvons ajuster la largeur de colonne pour combler le vide. Il y a plusieurs manires pour raliser cela. Nous pourrions ajouter une condition dans le body pour ne pas montrer le contenu et avoir ensuite un style diffrent pour le contenu en fonction d'o se trouve les colonnes. Pour rendre cela aussi facile que possible, j'ai une srie de dclarations conditionnelles dans le head qui (re)dfinissent quelques styles CSS : <?php if($this->countModules('left and right') == 0) $contentwidth = "100"; if($this->countModules('left or right') == 1) $contentwidth = "80"; if($this->countModules('left and right') == 1) $contentwidth = "60"; ?> Donc nous comptons : ? s'il n'y a rien gauche ou droite, nous sommes 100 %. ? s'il y a quelque chose gauche ou droit, nous sommes 80 %. ? s'il y a quelque chose gauche ET quelque chose droite, nous sommes 60 %. Nous avons donc besoin de changer le <div> du fichier index.php en <div id="content<?php echo $contentwidth; ?>"> Changeons le CSS : #content60 {float:left;width:60%;overflow:hidden;} #content80 {float:left;width:80%;overflow:hidden;} #content100 {float:left;width:100%;overflow:hidden;}

Les dclarations PHP conditionnelles du head doivent tre places la ligne aprs la dclaration du template.css. Ceci parce que s'il y a 2 rgles CSS identiques; celle qui vient la dernire crase les prcdentes. Cela peut aussi tre fait d'une faon semblable en ayant la condition if qui importe un sous fichier CSS. NOTE Pendant que essayez de diagnostiquer vos dclarations PHP conditionnelles, vous pouvez ajouter une ligne de code index.php, pour voir qu'elle est la largeur de votre colonne: This content column is <?php echo $contentwidth; ?>% wide Donc, nous sommes mi-chemin, mais maintenant nous avons des conteneurs vides <div> l o les colonnes sont.

3.5

Cacher le code des modules

Lors de la cration colonnes tirables, il est de bon usage de ne pas gnr les modules s'il n'y a pas de contenu. Si cela n'est pas fait, les pages auront des <div> s vides, ce qui peut conduire des problmes de navigateur. Pour masquer les <div> vides, l'instruction if suivante est utilise: <?php if($this->countModules('left')) : ?> <div id="sidebar"> <div class="inside"> <jdoc:include type="modules" name="left" style="xhtml" /> </div> </div> <?php endif; ?> Utiliser ce code, s'il n'y a rien de publi gauche, alors <div id="sidebar"> ne sera pas mis. Grce ces techniques pour nos colonnes de gauche et de droite, notre fichier index.php ressemble maintenant au code qui suit. Nous allons galement ajouter un "include'' pour le module ''breadcrumb", le module qui affiche la page en cours et le chemin. Notez que cela doit maintenant tre inclus dans le fichier index.php et publies galement sous forme d'un module. <?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" /> <?php if($this->countModules('left and right') == 0) $contentwidth = "100"; if($this->countModules('left or right') == 1) $contentwidth = "80"; if($this->countModules('left and right') == 1) $contentwidth = "60"; ?> </head> <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> </div> <?php if($this->countModules('left')) : ?> <div id="sidebar"> <div class="inside"> <jdoc:include type="modules" name="left" style="xhtml" /> </div> </div> <?php endif; ?> <div id="content<?php echo $contentwidth; ?>"> <div class="inside"> <jdoc:include type="module" name="breadcrumbs" style="none" /> <jdoc:include type="component" /> </div> </div> <?php if($this->countModules('right')) : ?> <div id="sidebar-2"> <div class="inside"> <jdoc:include type="modules" name="right" style="xhtml" /> </div> </div> <?php endif; ?> <?php if($this->countModules('footer')) : ?>

<div id="footer"> <div class="inside"> <jdoc:include type="modules" name="footer" style="xhtml" /> </div> </div> <?php endif; ?> <!--end of wrap--> </body> </html> Le minimum savoir Des lments, tels que des colonnes ou des modules, peuvent tre cachs (ou replis) lorsqu'ils ne contiennent rien. Cela se fait grce aux instructions conditionnelles PHP qui les lient diffrents styles CSS. Je recommanderais une manire lgrement diffrente pour raliser le pied de page. La faon montre ici est cod en dur dans le fichier index.php, ce qui le rend difficile changer. Actuellement, le module ''footer'' dans l'administration Joomla montre le ''copyright'' et ne peut pas tre facilement dit. Il est beaucoup plus sens d'avoir un module (X) HTML personnalisable plac dans le pied de page ainsi l'administrateur pourra le changer plus facilement. Si vous voulez crer votre propre pied de page, il suffit d'annuler la publication de ce module et de crer un module html dans la langue que vous souhaitez. Dans ce cas nous remplacerons <jdoc:include type="modules" name="footer" style="xhtml" /> par <jdoc:include type="modules" name="bottom" style="xhtml" /> Nous devons nous rappeler d'ajouter cette position dans le fichier templateDetails.xml. TUYAU Il y a plusieurs noms associs aux modules de Joomla: banner, left, right, user1, footer, et ainsi de suite. Une chose importante comprendre est que les noms ne correspondent pas un endroit particulier. L'emplacement d'un module est entirement contrle par le concepteur du modle, comme nous l'avons vu. Il est d'usage de les placer des emplacements qui correspondent ce nom, mais ce n'est pas obligatoire. Ce modle de base montre certains des principes fondamentaux de la cration d'un template Joomla.

3.6

CSS Template Tutorial tape 2

Nous avons maintenant une base, mais ce modle fonctionne. Certaines rgles typographiques simples ont t ajoutes, mais plus important encore, nous avons cr une mise en page en pure CSS avec des colonnes dynamiquement tirables. J'ai cr un modle installable, disponible sur le site : http://www.joomlabook.com/the-files/cat_view/4-joomla-15-templates.html. (vous devez tre enregistr pour les tlcharger) Maintenant que nous avons les lments de base termins, nous allons crer un modle un peu plus attrayant en utilisant les techniques que nous avons apprises.

4. Raliser un vrai Template Joomla 1.5


La premire chose dont nous avons besoin pour commencer c'est notre maquette. Une maquette c'est la base de la conception d'un template. Nous utilisons celui offert gracizeusement par Casey Lee, le Designer en chef de Joomlashack, pour nos besoins. Il s'appelle "Bold", et nous pouvons le voir la figure 9.8.

4.1

Dcouper et trancher

L'tape suivante du processus est ce qui est connu comme la dcoupe. Nous devons utiliser notre programme de graphisme pour crer de petites images dcoupes qui peuvent tre utiliss dans le template. Il est important de prter attention la faon dont les lments peuvent tre redimensionns si besoin est. (Mon application graphique de prdilection est firefox, car j'estime qu'il est mieux adapt au web design, contrairement l'impression, que Photoshop).

FIGURE 9.8 : Une maquette issue de Joomlashack

4.2

Paramtrer la position des modules

Ce modle aura des emplacements spcifiques pour des modules spcifiques, lgrement diffrents des normes d'installation de Joomla. Pour vous assurer que les modules sont correctement mis en place durant les diffrentes tapes de ce template, vrifiez les lments suivants: User1 = pour le module de recherche User2 = pour le menu du haut Top = pour newsflash ou module HTML personnalis Rien d'autre ne devrait tre publi ces emplacements.

4.3

Header

L'image d'en-tte a un lger renflement au sommet. Nous voulons conserver cela, donc nous mettons l'image comme fond d'cran puis nous lui attribuerons une couleur. De cette faon, l'en-tte cal verticalement si ncessaire, par exemple, si la taille des polices est redimensionne. Nous devons galement changer le couleur de toutes les fontes en blanc afin qu'ils apparaissent sur fond noir. Nous utiliserons galement une image de fond pour le champ de recherche. Nous devons nous assurer que la saisie est bien cibl l'aide des spcificits CSS. J'ai aussi utilis le positionnement en absolu dans un lment positionn relativement afin de placer le champ de recherche o je voulais. L'image ne s'ajustera pas lors du redimensionnement du texte puisquil ny a quune image. Cela ncessitera une image en haut et en bas. C'est un autre exercice pour vous! #header { color:#fff; background:#212121 url(../images/header.png) no-repeat; position:relative;} #header h1 { font-family:Arial, Helvetica, sans-serif small-caps; font-variant:small-caps; font-stretch:expanded; padding-left:20px;} #header input { background:url(../images/search.png) no-repeat; border:0; height:22px; width:168px; padding:2px; font:1em Arial, Helvetica, sans-serif; } #header .search { position:absolute; top:20px; right:20px; } Je n'ai pas utilis de logo graphique ici, j'ai utilis du texte brut. La raison est principalement due aux SEOs, les moteurs de recherche ne peuvent pas lire les images. On pourrait le remplacer par une chouette image, mais je vais laisser cela comme a, c'est un autre exercice faire par vous-mme. Notre en-tte ressemble maintenant ce qui est montr dans la Figure 9.9.

FIGURE 9.9 : Image de fond du Header

Ensuite, nous avons besoin pour mettre en uvre une technique utilise pour afficher un fond sur une colonne fluide: sliding doors (portes coulissantes).

4.4

Le fond des colonnes

Rappelons-nous que lorsque nous mettons un fond de couleur sur les colonnes, la couleur ne va pas jusquau pied de page. C'est parce que l'lment <div>, dans ce cas la barre latrale sidebar-2, est seulement aussi grande quil y a de contenu. a ne remplie donc pas l'lment conteneur. Nous devons utiliser une technique appele Fausses colonnes coulissantes, avec laquelle vous crez essentiellement deux larges images qui glisseront lune sur l'autre. Nous avons besoin de crer deux nouveaux conteneurs contiendront les fonds. Normalement, on pourrait appliquer l'une au #wrap, mais jutilise un conteneur en extra pour finir le bas des illustrations. Pour en savoir plus : http://www.pckult.net/tutoriaux/27-css/1282-la-technique-css-du-l-sliding-door-rappliquee-a-un-menu-web-20 http://alistapart.com/articles/fauxcolumns/ http://www.communitymx.com/category.cfm?catid=11

Dans notre cas, notre largeur maximale est de 960px, donc on commence avec une image de cette largeur. Dans le fichier image source, cest slidingcolumns.png. Nous exportons ensuite deux tranches (j'ai utilis la mme image et cache /dvoile selon le ct), une de 960px de large avec un fond de 192px gauche, et une de 960px de large avec un fond de 196px gauche. NOTE L'image de gauche a besoin d'avoir un fond blanc et l'image de droite a besoin d'un fond transparent. J'ai modifi la couleur de l'arrire-plan et jai export les images partir du fichier source. D'o vient 192px? Cest 20% de 960px, puisque nos colonnes font 20% de large. Nous utilisons la proprit background-position pour placer les images au bon endroit. Ici, nous utilisons le format CSS condens de la proprit background: #leftfauxcol { background:url(../images/leftslidingcolumn.png) 20% 0; } #rightfauxcol { background:url(../images/rightslidingcolumn.png) 80% 0; } Dans notre index.php, nous avons simplement ajout un conteneur lintrieur de lenveloppe (wrap): <div id="wrap"> <?php if($this->countModules('left')) : ?> <div id="leftfauxcol"> <?php endif; ?> <?php if($this->countModules('right')) : ?> <div id="rightfauxcol"> <?php endif; ?> <div id="header">

Nous avons galement besoin de mettre une condition aux <div>s qui clturent: <?php if($this->countModules('left')) : ?> </div> <!--end of leftfauxcol--> <?php endif; ?> <?php if($this->countModules('right')) : ?> </div> <!--end of rightfauxcol--> <?php endif; ?> Nous devons galement mettre un fond sur notre bas de page et sur les modules du bas / lments, sinon, le fond de la colonne sera affich: #footer { background:#212121; color:#fff; text-align:right; clear:both; } #bottom { background:#333; color:#666; padding:10px 50px; } Nous devons initialiser (clear) les lments flottants afin que le conteneur flottant (des fausses colonnes) stende jusquau le bas de la page. La mthode traditionnelle de faire tait d'utiliser la proprit: after Mais . avec la sortie d'IE7, cette mthode ne fonctionne pas compltement. Nous devons aborder l'initialisation des flotteurs dans Internet Explorer 6 et 7, et c'est comme a que a que sapplique tout le long des colonnes. Un couple de solution a t trouve, nous allons utiliser loption faites tout glisser(ou presque) ici. Ainsi, nous ajoutons un simple clear:both au #footer, et nous en ajoutons float aux #fauxcol de #wrap. Nous ajoutons cela une feuille de style supplmentaires spcialement pour IE6: #leftfauxcol float: width: } #rightfauxcol float: width: } #footer float: width: } Nous allons avoir ajouter des instructions conditionnelles len-tte du fichier index.php: <!--[if lte IE 6]>

<link href="templates/<?php echo rel="stylesheet" type="text/css" <![endif]--> <!--[if lte IE 7]> <link href="templates/<?php echo rel="stylesheet" type="text/css" <![endif]-->

$this->template ?>/css/ie6only.css" />

$this->template ?>/css/ie7only.css" />

4.5

Modules flexibles

Dans notre conception, nous avons un large bloc initial. Mais nous ne savons pas de quelle taille sera le texte. Pour rsoudre ce problme, nous avons mis une dclaration jdoc module: include dans llment conteneur et lui donnons un fond de mme couleur que l'image. C'est la stratgie que nous avons utilise pour l'en-tte: <?php if($this->countModules('top')) : ?> <div id="top"> <div class="inside"> <jdoc:include type="modules" name="top" style="xhtml" /> </div> Making a Real Joomla 1.5 Template 286 Chapter 9 Creating a Pure CSS Template </div> <?php else : ?> <div id="top">&nbsp;</div> <?php endif; ?> Remarquez, nous avons galement utilis un commentaire conditionnel de sorte que si l'emplacement du module suprieur n'a pas de contenu, l'image teaser orange ne sera pas l. CE qui sera l cest un conteneur vide qui contiendra un peu de l'image de fond et 20px de padding vertical au pire. Il s'agit l dun choix purement esthtique. Le CSS a besoin d'utiliser les spcificits CSS pour remplacer les styles moduletable dfinie prcdemment: #top { background:#ea6800 url(../images/teaser.png) no-repeat; padding:10px; } #top .moduletable h3 { color:#fff; background:none; text-align:left; font:2.5em Arial, Helvetica, sans-serif normal; padding:0; margin:0; font-stretch:expanded } #top .moduletable{ font:bold 1em/1.2 Tahoma,Arial, Helvetica, sans-serif; color:#fff; margin:0;

padding:0; border:0; } Maintenant, nous devons nous concentrer sur certains aspects de la typographie.

4.6

Typographie

Beaucoup de liens devront tre de couleur blanche, nous allons donc les dfinir en tant que tel de manire globale et ensuite modifier la couleur de la colonne centrale: a:link,a:visited { text-decoration:underline; color:#fff; 287 } a:hover { text-decoration:none; } #content60 a:link,#content60 a:visited,#content80 a:link,#content80 a:visited,#content100 a:link,#content100 a:visited { color:#000; } Ce design a un bouton stylis. Nous le crerons en utilisant une image de fond de la maquette. Il s'agit d'une petite image qui est strie horizontalement: .button { border:#000 solid 1px; background:#fff url(../images/buttonbackground.png) repeat-x; height:25px; margin:4px 0; padding:0 4px; cursor:hand; } Pour les tables, comme la FAQ, nous pouvons ajouter un arrire-plan simple en r-utilisant l'image du teaser. Rutiliser des images est classique et permet d'conomiser sur la bande passante, rendant le chargement des pages plus rapide. .sectiontableheader { background:url(../images/teaser.png); padding:5px; color:#fff; font:1.2em bold Arial, Helvetica, sans-serif; } Les modules ont besoin d'une simple redfinition et adaptation des paddings et des margins: /* Module styling */ .moduletable { margin-bottom:1em; color:#fff; font-size:1.1em; }

.moduletable h3 { font:1.3em Tahoma,Arial,Helvetica,sans-serif; background:#000; color:#ccc; Making a Real Joomla 1.5 Template 288 Chapter 9 Creating a Pure CSS Template text-align:left; margin:0 -10px; padding:5px 10px; } Les menus, comme toujours, ont besoin de beaucoup de style CSS. Ici, nous resterons aussi simple que possible. Nous dcoupons une image unique qui comprend la fois la puce et le soulignement. Le style est activ par lajout dun suffixe de module menu toutes les listes de lien sur lesquelles nous voulons agir: /*Menu Styling*/ .moduletablemenu { margin-bottom:1em; } .moduletablemenu h3 { font:1.3em Tahoma,Arial,Helvetica,sans-serif; background:#000; color:#ccc; text-align:left; margin:0 -10px; padding:5px 10px; } .moduletablemenu ul { list-style:none; margin:5px 0; } .moduletablemenu li { background:url(../images/leftmenu.png) bottom left no-repeat; height:24px; font:14px Tahoma,Arial, Helvetica, sans-serif; margin:10px 0; padding:0 0 0 10px; } .moduletablemenu a:link,.moduletablemenu a:visited { color:#fff; display:block; text-decoration:none; padding-left:5px; } .moduletablemenu a:hover { text-decoration:none; color:#fff; background:#ADADAD; }

Enfin, longlet du menu en haut droite. En tant quavocat de l'accessibilit, nous voulons le paramtrer de manire ce que la police soit redimensionnable. Heureusement, une technique a t dveloppe pour cela, c'est en fait le mme principe que nous utilisons pour nos colonnes, les portes coulissantes (doors slidings) nouveau! We will also try and do some speed optimization for the template and use just asingle image for the left and right side of the doors, as well as the on and off state.This is known as using sprites. The CSS is not too hard; we just have to fi ddle around with the vertical position of the image background for the on state: Nous allons optimiser la vitesse de chargement en utilsant une image unique pour le ct gauche et droit de nos "portes", aussi bien pour les tats actifs quinactifs.Cette technique est connue sous le nom de sprites. Ce CSS n'est pas trop dur, nous allons bricoler la position verticale de l'image de fond pour ltat "actif": /*Tab Menu Styling*/ .moduletabletabs { font:bold 1em Georgia, Verdana, Geneva, Arial, Helvetica, sans-serif; } .moduletabletabs ul { list-style:none; float:right; margin:0; padding:0; background:#212121; width:100%; } .moduletabletabs li { float:right; background:url(../images/tabs.png) no-repeat 0 -4px; margin:0; padding:0 0 0 12px; } .moduletabletabs a:link,.moduletabletabs a:visited { float:left; display:block; color:#000; background:url(../images/tabs.png) no-repeat 100% -4px; text-decoration:none; margin:0; padding:7px 18px 5px 9px; } .moduletabletabs #current { background:url(../images/tabs.png) no-repeat 0 -84px; } .moduletabletabs #current a { color:#fff; Making a Real Joomla 1.5 Template 290 Chapter 9 Creating a Pure CSS Template background:url(../images/tabs.png) no-repeat 100% -84px; }

Nous avons aussi besoin d'ajouter le suffixe de module tabs pour le module du menu que nous utilisons. Si vous jetez un il sur la conception originale, vous remarquez qu'il y avait des icnes sur ces onglets. Comme nous utilisons dj deux images de fond, une sur le <li> et l'autre sur le lien, nous aurions besoin d'un troisime lment sur lequel nous placerons licne darrire-plan. V pouvez le faire avec un <span>, mais ous ceci est du CSS trs avanc. Je vais vous laisser a comme un devoir de vacance. La dernire chose qui reste faire est de revoir le fichier templateDetails.xml. Il doit contenir tous les fichiers et images utiliss dans le modle afin dinstaller correctement le fichier zip. Il existe un certain nombre d'outils qui vont le faire automatiquement si vous utilisez la version 1.0.x, mais au moment de la rdaction de ce document, aucun n'est disponible pour la version 1.5. Notre template fini devrait ressembler la Figure 9.10.

FIGURE 9.10 Advanced template with typography

Le minimum savoir Crer un template Joomla est plus une question de conception graphique et de manipulation CSS que davoir une connaissance spciale de Joomla.

4.7

CSS Template Tutorial tape 3

Nous avons maintenant un modle bas sur une maquette (ou design). Quelques rgles simplesde typographie ont t ajoutes, mais plus important encore, nous avons cr une mise en page CSS pure avec des colonnes dynamiquement tirables et un astucieux onglet de menus. J'ai cr un modle qui est installable et disponible sur www.joomlabook.com: CSSTemplateTutorialStep3.zip. Maintenant que nous avons fait les bases, commenons d'abord plonger dans quelques-unes des fonctionnalits avances possibles avec le template 1.5.

5. Advanced Templating Features


Joomla 1.5 offre un certain nombre de fonctionnalits avances qui augmentent de manire significative ce qui est possible de faire avec des templates. Nous avons dj vu un exemple dans ce chapitre, la possibilit de crer un Chrome personnalis ou des sorties (?) pour les modules. Examinons chacun deux tour tour:

Paramtres de template Templates de remplacement

5.1

Les Paramtres de template

Nouveau dans joomla 1.5, l'ajout de paramtres de template. Cela vous permet de passer des variables au template partir des options slectionnes dans ladministration. Nous pouvons ajouter une fonction assez simplement notre modle. Dans le fichier templateDetails.xml, ajoutez le code suivant: <params> <param name="template_width" type="list" default="fluid" label="Template Width" description="Width style of the template"> <option value="fluid">Fluid with maximum and minimum</option> <option value=medium>Medium</option> <option value="small">Small</option> </param> </params> Il faut galement un fichier appel params.ini dans votre dossier template. Ca peut tre un fichier vide, mais Joomla a besoin de ce fichier pour stocker les rglages que vous avez. Un fichier INI pour l'exemple prcdent pourrait ressembler ceci: template_width=2 V devez vous assurer que ce fichier est accessible en criture donc des modifications doivent tre apportes. ous Nous avons aussi besoin d'ajouter ce fichier dans le fichier templateDetails.xml. Dans le gestionnaire des templates pour ce modle, vous voyez les rglages possibles pour ce paramtre, comme le montre la Figure 9.11.

FIGURE 9.11 paramtres de template dans ladministration

Nous pouvons voir qu'il s'agit de simples boutons radios avec trois options. <param name="template_width" type="radio" default="0" label="Template Width" description="Change width setting of template"> <option value="0">800x600</option> <option value="1">1024x756</option> <option value="2">fluid (min/max with FF and IE7, 80% with IE6)</option> </param> Ensuite, nous changeons la balise <body> dans notre index.php par la suivante: <body class="width_<?php echo $this->params->get(template_width); ?>">

Nous avons ensuite besoin dajouter le texte suivant dans le fichier CSS: body.width_0 div#wrap { width: 760px; } body.width_1 div#wrap { width: 960px; } body.width_2 div#wrap { min-width:760px; max-width:960px; width:auto !important; width:960px; } #wrap { text-align:left; margin:0 auto; } This gives us three options: a fixed narrow width, fixed wide width, and a fluid version. Using template parameters in this way can give the site administrator flexibility in almost any facet of a template, width, color, and so on, all controlled with conditional PHP setting CSS styles. Cela nous donne trois options: une petite largeur fixe, une plus large et une version fluide. Les paramtres de emplate donne ladministrateur du site une flexibilit dans presque toutes les facettes d'un modle, la largeur, la couleur, et ainsi de suite, tous contrls avec des conditions PHP qui dfinissent les styles CSS.

5.2

Les templates de remplacement

Perhaps the most powerful new feature of templates in 1.5 is the ability to easily override core output. This is done with new output fi les called template fi les that correspond to the layout views of components and modules. Joomla checks in each case to see if one exists in the template folder, and if one does, uses that one and overrides the normal output. Peut-tre la nouveaut la plus puissante dans la version 1.5 est la possibilit de remplacer facilement le noyau de base. Cela se fait avec la production de nouveaux fichiers appels templates files. Joomla vrifie pour chaque module s'il nen existe pas un dans le dossier du template, et si oui, remplace celui dorigine.

5.3

Override Structure

Toutes les mises en page et tous les modles sont dans le noyau principal dans un tmpl/folder. L'emplacement est lgrement diffrent pour les composants que pour les modules, car les modules ont essentiellement une seule vue ( ?). Par exemple modules/mod_newsflash/tmpl/ modules/mod_poll/tmpl/ components/com_login/views/login/tmpl/ components/com_content/views/section/tmpl/ La structure de base de tous les composants et de tous les modules est: Affichage -> Format -> Modles. Le tableau 9.3 montre quelques exemples, noter que les modules ont un seul point de vue (?).

TABLEAU 9.3 Exemple de remplacement

View Category Blog.php Category (Newsflash module)

Layout blog_item.php default.php default.php horz.php vert.php

Templates blog_links.php default_items.php _item.php

Il ya gnralement plusieurs modle de fichiers concerns pour une mise en page particulire. Ils ont une convention de nommage commun (voir le tableau 9.4).
TABLEAU 9.4 convention de nommage lors de remplacement (overrides)

Filename Convention layoutname.php layoutname_templatename.php _templatename.php

Description The master layout template A child layout template called from the master layout file A common layout template by different layouts

Example blog.php blog_item.php blog_links.php used _item.php

5.4

Ecraser les Modules

Each module has a new folder that contains its templates, which is called tmpl. Inside are PHP files that create the output. For example Chaque module a un nouveau dossier qui contient ses modles, et qui est appel tmpl. Dedans il y a des fichiers PHP qui crent la sortie. Par exemple /modules/mod_newsflash/tmpl/default.php /modules/mod_newsflash/tmpl/horiz.php /modules/mod_newsflash/tmpl/vert.php /modules/mod_newsflash/tmpl/_item.php Les trois premiers sont les trois mise en page de Newsflash sur la base duquel les options de modules sont choisies, et le fichier _item.php qui est un modle de mise en page commune au trois. Ouvrez ce fichier, on y trouve <?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <?php if ($params->get('item_title')) : ?> <table class="contentpaneopen<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <tr> <td class="contentheading<?php echo $params->get( 'moduleclass_sfx' ); ?>" width="100%"> <?php if ($params->get('link_titles') && $item->linkOn != '') : ?> <a href="<?php echo $item->linkOn;?>" class="contentpagetitle<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <?php echo $item->title;?> </a> <?php else : ?> <?php echo $item->title; ?> <?php endif; ?>

</td> </tr> </table> <?php endif; ?> <?php if (!$params->get('intro_only')) : echo $item->afterDisplayTitle; endif; ?> <?php echo $item->beforeDisplayContent; ?> <table class="contentpaneopen<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <tr> <td valign="top" colspan="2"><?php echo $item->text; ?></td> </tr> </table> <?php if (isset($item->linkOn) && $item->readmore) : echo '<a href="'.$item->linkOn.'">'.JText::_('Read more').'</a>'; endif; ?> Nous pourrions le changer en supprimant les tables pour le rendre un peu plus accessible: <?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <?php if ($params->get('item_title')) : ?> <div class="contentpaneopen<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <div class="contentheading<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <?php if ($params->get('link_titles') && $item->linkOn != '') : ?> <a href="<?php echo $item->linkOn;?>" class="contentpagetitle<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <?php echo $item->title;?> </a> <?php else : ?> <?php echo $item->title; ?> <?php endif; ?> </div> </div> <?php endif; ?> <?php if (!$params->get('intro_only')) : echo $item->afterDisplayTitle; endif; ?> <?php echo $item->beforeDisplayContent; ?> <div class="contentpaneopen<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <?php echo $item->text; ?> </div> <?php if (isset($item->linkOn) && $item->readmore) : echo '<a href="'.$item->linkOn.'">'.JText::_('Read more').'</a>'; endif; ?>

Ce nouveau fichier devrait tre plac dans le rpertoire du template dans un dossier appel html comme suit: templates/templatetutorial15bold/html/mod_newsflash/_item.php Nous avons simplement dgag les tables du module newsflash - aussi facile que a!

5.5

Remplacer les composants

Les composants fonctionnent peu prs exactement de la mme manire, sauf qu'il y a plusieurs vues associes de nombreux composants. Si nous regardons dans le dossier com_content, nous voyons un dossier appel views. /components/com_content/views/ /components/com_content/views/archive /components/com_content/views/article /components/com_content/views/category /components/com_content/views/section Ainsi, ces dossiers correspondent aux quatre vues(?) possibles pour le contenu:archive, article, category et section. A lintrieur d'un point de vue, nous trouvons le dossier tmpl, et dedans, les diffrentes prsentations possibles. Si nous regardons dans le dossier de category, nous voyons /components/com_content/views/category/blog.php /components/com_content/views/category/blog_item.php /components/com_content/views/category/blog_links.php /components/com_content/views/category/default.php /components/com_content/views/category/default_items.php Notez que dans le cas de com_content, la mise en page de default.php se rfre la mise en page standard qui prsente les articles comme une liste de liens. Ouvrez le fichier blog_item.php, nous voyons les tableaux utiliss actuellement. Si nous voulons passer outre ce qui sera produit, nous mettons ce que nous voulons utiliser dans notre dossier template/html /, par exemple: templates/templatetutorial15bold/html/com_content/category/blog_item.php C'est un processus relativement simple de copier/coller ces output (sorties) depuis les dossiers /components/ et /modules/ dans templates/yourtemplate /html. La fonctionnalit override (remplacer/craser) fournit un mcanisme puissant pour personnaliser votre site Joomla grce au template. Vous pouvez crer des modles qui mettent l'accent sur le SEO, l'accessibilit ou les besoins spcifiques d'un client. Le minimum savoir Joomla 1.5 offre de nouvelles fonctionnalits pour les templates qui permettent aux concepteurs de contrler compltement le code et la prsentation d'un site web Joomla.

5.6

Joomla sans table

Le tlchargement du CMS Joomla contient galement un template appel Beez qui est un exemple de template Override en action. L'quipe charge du design et d'accessibilit ont cr une srie dlments de remplacement dans le dossier html. Notre dernier exemple est un template qui utilise ces overrides pour supprimer toutes les tables de Joomla.

5.7

CSS Template Tutorial tape 4

Nous avons maintenant un modle bas sur une maquette (ou design). Plus style typographie ont t ajouts, mais plus important encore, nous avons utilis la maquette de notre mise en page CSS pour crer un modle qui des colonnes dynamiquement tirables et un astucieux menu onglet. Nous avons galement redfini la sortie de Joomla de sorte qu'aucune table ne soit utilise. J'ai cr un modle installable est disponible sur www.joomlabook.com: CSSTemplateTutorialStep4.zip

Rcapitulatif
Dans ce chapitre, nous avons travaill au travers quatre exemples de templates, chaque fois en augmentant la complexit et les fonctionnalits. Les sites modernes ont un contenu distinct de la prsentation en utilisant une technique connue sous le nom de feuilles de style en cascade (CSS). Dans Joomla, le template contrle la prsentation du contenu. Lors de la cration d'un template, vous devez disposer de Joomla sur un serveur ce qui vous permettra d'effectuer des changements et de rafrachir la page de sortie. La cration de templates valides devrait tre une intention, et non un objectif. L'ide est de faire votre template aussi accessible que possible pour les humains et les robots, et non pour obtenir un certificat de validit de votre code. Le template de base Joomla charge simplement les modules et le corps (composants). La prsentation et le design font partie des CSS, pas du noyau Joomla. Le Web design moderne utilise le CSS plutt que des tableaux pour positionner des lments. Il est difficile apprendre, mais c'est un investissement valable. Il ya beaucoup de ressources disponibles pour vous aider. Joomla va produire des lments spcifiques, des identifiants et des classes dans le code de la page Web. Ceux-ci peuvent tre anticips et utiliss pour styler le design en utilisant CSS. Dans la version 1.5, la production des modules peut tre entirement personnalis, ou vous pouvez utiliser la sortie pr-construit. Toutes ces options sont appeles module de chrome. Il est prfrable de toujours utiliser les liste puces ou ordonnes pour crer un menu. Pour se faire, vous pouvez consulter les nombreuses ressources CSS gratuites et disponibles sur le Web. Des lments, tels que des colonnes ou des modules, peuvent tre cachs (ou replis) lorsqu'ils ne contiennent rien. Cela se fait grce aux instructions conditionnelles PHP qui les lient diffrents styles CSS. Crer un template Joomla est plus une question de conception graphique et de manipulation CSS que davoir une connaissance spciale de Joomla. Joomla 1.5 offre de nouvelles fonctionnalits pour les templates qui permettent aux concepteurs de contrler compltement le code et la prsentation d'un site web Joomla.