|
Travaux Personnels Encadrés |
|||||||||||||||||||||||||||
Documentation: Templates/modèlesLe design du site de TPE se fera par le biais de modèles, aussi appelés "templates". Ceux-ci permettent une réutilisation du design, pour un bon nombre de TPE différents. Ci-dessous vous voyez la chaîne de production que suit la création des pages: Le format des Templates utilisés est celui de Template Toolkit, un module Perl. Vous pourrez trouver plus d'information sur leur site. ![]() Le fonctionnement général des modèles est simple: ils définissent un design (HTML), mais avec certaines balises qui seront remplacées par des valeurs au moment de la génération (sujet, auteurs, etc...). Nous verrons ici chaque modèle nécessaire, les variables qu'il reçoit, et des exemples de son utilisation. Dossiers où figurent les fichiersPar rapport au dossier de base, les templates doivent figurer dans le dossier templates/, et les fichiers HTML produits figureront dans le dossier html/. Accès aux variablesPour chaque template, un certain nombre de variables sont accessibles. Celles-ci sont la plupart du temps de 3 types:
Constructions IF/ELSETemplate Toolkit, que nous utilisons, contient, en plus des accès de variables, bon nombre d'autres fonctions, dont le contrôle conditionnel. Comme pour les langages de programmation, ceci se fait par suite de IF/UNLESS, ELSIF, ELSE. Voici quelques exemples qui vous aideront à comprendre ce qui suit: Exemple 1: Inclusion d'un paragraphe de carnets de bord uniquement si ceux-ci sont disponibles. [% IF carnets %] <p><b>Carnets de bord:</b><br> [% FOREACH carnet = carnets %] <a href="[% carnet.url %]">[% carnet.nom %]</a><br> [% END %] </p> [% END %] Exemple 2: Inclusion d'un paragraphe de formats disponibles s'ils existent, ou sinon inclusion d'un autre paragraphe. [% IF formats %] <p><b>Dossier:</b><br> [% FOREACH format = formats %] [% format.type %]: <a href="[% format.url %]">[% format.url %]</a><br> [% END %] </p> [% END %] Inclusion d'autres fichiersAfin d'inclure des fichiers ré-utilisés partout de la même façon dans vos templates, vous pourrez utiliser la construction [% INCLUDE %]. INCLUDE prend comme argument un nom de fichier, par exemple [% INCLUDE menu.thtml %]. Exemple 1: Inclusion d'un menu sanas arguments. Disons qu'avant d'utiliser [% INCLUDE %], toutes vos pages sont de la forme: <table> <tr> <td> ... Menu: Lien 1 Lien 2 Lien 3 (tout ça avec des balises <a> etc.) </td> <td> .... Contenu! </td> </tr> </table> Disons que vous voulez réutiliser le menu dans toutes les pages. Vous séparez alors celui-ci dans un autre fichier, menu.thtml, comme ceci: ---- menu.thtml ... Menu: Lien 1 Lien 2 Lien 3 (bon tout ca avec des balises <a> etc) Puis apres, dans toutes tes pages, vous placez une instruction [% INCLUDE %] : --- page.thtml <table> <tr> <td> [% INCLUDE menu.thtml %] </td> <td> .... Contenu! </td> </tr> </table> En utilisant cette méthode, menu.thtml pourra être modifié une seule fois pour mettre à jour le menu de toutes les pages. Exemple 2: Inclure un début de document avec des variables. Une autre façon d'utiliser [% INCLUDE %] et peut-être encore meilleure, dépendant de votre cas, est de l'utiliser pour inclure directement tous les débuts de de documents complets et les débuts de page au lieu de juste contenir le menu. ---- page.thtml [% INCLUDE en-tete.thtml titre = 'Une page' %] <p>Un peu de contenu...</p> [% INCLUDE pied.thtml %] ---- en-tete.thtml <html> <head> <title>[% titre %]</title> </head> <body> <h1>[% titre %]</h1> Menu.... ---- pied.thtml </body> </html> Ainsi, vous voyez que vous pouvez facilement automatiser les choses qui reviendront souvent dans vos pages. themes.thtmlthemes.thtml a pour fonction de faire la liste de tous les thèmes qui existent pour ces TPE, et de créer des liens vers des pages individuelles pour celles-ci. Variables disponibles
ExempleVoir themes.thtml pour l'exemple complet, et themes.html pour le résultat. <p> [% FOREACH theme = themes %] <a href="[% theme.id %].html">[% theme.nom %]</a><br> [% END %] </p> theme.thtmltheme.thtml est utilisé une fois par thème, et produit alors pour ce thème une page contenant la liste de tous les TPE disponibles pour ce thème. Variables disponibles
ExempleVoir theme.thtml pour l'exemple complet, et images.html pour un résultat (thème Images). <head> <title>[% theme.nom %]</title> </head> <body> <h1>[% theme.nom %]</h1> <p>Voici une liste des TPE ayant choisi le thème [% theme.nom %].</p> <p> [% FOREACH tpe = tpes %] <a href="[% tpe.id %].html">[% tpe.sujet %]</a><br> [% END %] </p> tpe.thtmltpe.thtml est utilisé pour la génération de chaque page de TPE, donnant toute l'information nécessaire sur celui-ci. Variables disponibles
ExempleVoir tpe.thtml pour l'exemple complet, et oeil-couleur.html pour un résultat. <head> <title>[% sujet %]</title> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1"> </head> <body> <p>Thème: <a href="[% theme.id %].html"><i>[% theme.nom %]</i></a></p> <h1>[% sujet %]</h1> <p>Auteurs:</p> <ul> [% FOREACH auteur = auteurs %] <li> [% IF auteur.email %] <a href="mailto:[% auteur.email %]"> [% END %] [% auteur.prenom %] [% auteur.nom %] [% IF auteur.email %] </a> [% END %] , [% auteur.classe.html %] </li> [% END %] </ul> [% IF problematique %] <p>Problématique:<br> [% problematique | html_break %] </p> [% END %] <p>Résumé:<br> [% resume %] </p> <p>Dossier: [% IF site %] (voir aussi le <a href="[% site %]">site de ce TPE</a>) [% END %] </p> <ul> [% FOREACH format = formats %] <li><a href="[% format.url %]">[% format.type %]</a></li> [% END %] </ul> [% IF carnets %] <p>Carnets de bord:</p> <ul> [% FOREACH carnet = carnets %] <li><a href="[% carnet.url %]">[% carnet.nom %]</a></li> [% END %] </ul> [% END %] [% IF fiches %] <p>Fiches de synthèse:</p> <ul> [% FOREACH fiche = fiches %] <li><a href="[% fiche.url %]">[% fiche.nom %]</a></li> [% END %] </ul> [% END %] |