Personnaliser et adapter SPIP Développeur SPIP

Transcription

Personnaliser et adapter SPIP Développeur SPIP
Personnaliser et adapter SPIP
Développeur SPIP
En pratique
Pour réaliser ce TD vous avez besoin de :
. Un navigateur web
. Un client FTP ou une invite de commande Unix
. Un éditeur de texte
Pour le TD nous avons mis à votre disposition l'ensemble des fichiers d'un site SPIP contenant
des articles déjà remplis.
Accédez à votre site SPIP préinstallé :
dans le navigateur saisissez l'adresse : http://wwwufe.obspm.fr/webfci/stag<votre numéro>/
tp-squelettes/
Dans une autre fenêtre de navigateur ouvrez l'interface d'administration de votre site spip :
http://wwwufe.obspm.fr/webfci/stag<votre numéro>/tp-squelettes/ecrire/
Login : stag<votre numéro>
Mot de passe : stag<votre numéro>
Créez en local sur votre bureau un dossier appelé squelette_voyage qui sera l'image locale du
dossier squelette_voyage sur le serveur.
connectez vous au dossier squelette_voyage de votre site SPIP par SFTP ou SSH:
serveur wwwufe.obspm.fr
login : webfci
mot de passe : webfci$2011
se placer dans le dossier squelette sur le serveur
cd public_html/votre nom/squelette_voyage/
se placer dans le dossier squelette local
lcd squelette_voyage
Conservez cette connexion ouverte pendant la durée du TD.
Contenu et design
Notre travail portera sur un site web de photos de voyage. Il propose une galerie de photos par
lieu visité avec un texte descriptif. Le plan du site est le suivant :
Voici la mise en page d'un article de notre site avec le squelette de base de SPIP :
La première étape consiste à définir une interface graphique pour notre site.
On peut réaliser une maquette sous Gimp ou Photoshop.
Voici le graphisme pour la mise en page d'un article.
Pour installer un squelette SPIP (Dans le cas de ce TP ces opérations ont déjà été effectuées :
vous n'avez rien à faire):
1) -Créer le dossier pour notre squelette SPIP. Appelons le squelette_voyage/.
Et y placer les fichiers du jeu de squelettes.
2) -Indiquer à SPIP d'utiliser le jeu de squelettes de ce dossier pour la mise en page.
Editer le fichier
/ecrire/mes_options.php3
qui doit contenir le code PHP suivant :
<?php
$GLOBALS["dossier_squelettes"] = "squelette_voyage";
?>
On affecte à la variable globale "dossier_squelettes" le nom du dossier qui contient le jeu de
squelettes que nous souhaitons utiliser.
La page sommaire
Nous allons commencer par créer la page d’entrée dans notre site web qui contiendra comme
information le nom du site ainsi que l'affichage des rubriques de niveau 0 (les secteurs) de notre site :
Cette page se nommera sommaire.html.
Créer le fichier sommaire.php dans le dossier squelette_voyage/ local (sur votre
bureau).
Créer le fichier site_voyage.css dans le dossier squelette_voyage/ local (sur votre
bureau).
Ce fichier contiendra l'ensemble des styles CSS de notre site web et sera appelé dans l'entête de
chacune des pages du squelette.
CSS et HTML
Pour le graphisme on découpe la page en "boîtes" qui correspondent aux balises <div> </div> en
HTML
Nous avons trois boîtes :
- Une boîte globale avec un cadre bleu, centrée dans la page. Nous appellerons cette boîte
"interface" et nous créerons un style .interface qui correspondra à son aspect graphique (centré, cadre
bleu). Cette boîte contient elle-même deux boîtes.
- Une des boîtes qui contient le titre du site. Nous appellerons cette boîte "titre_site" et nous
créerons un style .titre_menu qui correspondra à son aspect graphique.
- Une autre boîte qui contient le menu. Nous appellerons cette boîte "menu" et nous créerons un
style .menu qui correspondra a son aspect graphique.
En HTML le code correspondant à cette mise en page est :
Editer le fichier sommaire.html
Copier le code suivant
<!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="fr">
<head>
</head>
<body>
<div id="interface" class="interface">
<div id="titre_site" class="titre_site">
</div>
<div id="menu" class="menu">
</div>
<!-- la balise DIV qui suit est une astuce bien connue lorsqu'on fait de
la mise en page avec les boîtes. Pour plus d'information : http://css-discuss.
incutio.com/wiki/Clearing_Space -->
<div style="clear :both;"></div>
</div>
</body>
</html>
Sauvegarder le fichier.
Nous devons ensuite créer une feuille de style CSS pour gérer l’aspect graphique de cette
interface. La boîte "interface" a les caractéristiques suivantes :
Largeur : 1000px
Hauteur minimale : 750px
Alignement dans le navigateur : centré
Une bordure bleu (la couleur exacte est codée #8CBCEC en hexadécimal) de 1px de large
Les boîte "titre_site" et "menu" ont les caractéristiques suivantes :
Alignement : centré
Editer le fichier le fichier site_voyage.css.
Copier le code suivant :
.interface
{
width:1000px;
margin:auto;
min-height:500px;
border:#8CBCEC;
border-width:1px;
border-style: solid;
}
.titre_site
{
text-align:center;
}
.menu
{
text-align:center;
}
Sauvegarder le fichier.
Il faut ensuite associer cette feuille de style au fichier sommaire.html du squelette :
ajoutez la ligne suivante à l’intérieur de l’élément <head> du fichier sommaire.html :
<!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="fr">
<head>
<link href="squelette_voyage/site_voyage.css" rel="stylesheet" type="text/
css"/>
</head>
...
sauvegarder le fichier
Placer les fichier sommaire.html et site_voyage.css sur le serveur via la connexion
SFTP.
Recalculer la page dans le navigateur
Les balises de SPIP
Jusque là nous n'avons utilisé que du code HTML et des styles CSS. Nous allons à présent
utiliser du code propre à SPIP pour afficher le titre du site à l'intérieur de la boîte "titre_site".
Le titre d'un site SPIP correspond à la valeur spécifiée dans l'interface d'administration de SPIP,
via l'onglet "Configuration -> Contenu du site", c'est le premier champ.
Dans notre cas, le site s'appelle "Voyages"; mais on pourrait utiliser notre squelette pour un autre
site et ce serait un autre texte qu'on indiquerait à cet emplacement.
Dans les squelettes SPIP il correspond à une balise qu'on peut utiliser à n'importe quel endroit
d'un squelette la balise #NOM_SITE_SPIP ( http://www.spip.net/fr_article1902.
html ).
Lorsqu'on l'utilise, SPIP remplace cette balise par le nom du site web.
Modifier le fichier sommaire.html en ajoutant la balise #NOM_SITE_SPIP dans la boîte
titre_site :
...
<div class="titre_site">
[(#NOM_SITE_SPIP)]
</div>
...
sauvegarder
Placer le fichier sommaire.html sur le serveur via la connexion FTP.
On peut agrémenter notre CSS afin que notre titre ressemble à un vrai titre de site
Modifier le fichier site_voyage.css
.titre_site
{
text-align:center;
font-family: Arial, Helvetica, sans-serif;
font-size: 36px;
font-weight: bold;
color: #8CBCEC;
}
sauvegarder
Placer le fichier sommaire.html sur le serveur via la connexion FTP.
Recalculer la page dans le navigateur
Les Boucles de SPIP
La réalisation d'un menu des rubriques de premier niveau nous offre une bonne occasion
d'utiliser les boucles de SPIP.
Mais avant toute chose nous devons nous replonger un peu dans le HTML et le CSS ; en effet
notre menu devra avoir cet aspect là :
Nous pouvons le décomposer en petites boîtes (une par item du menu) qui auront les
caractéristiques suivantes :
Largeur fixe : 200px;
Hauteur variable
Police de caractère : arial 12px gris
Notre code HTML sera donc (ne pas modifier le fichier sommaire.html pour l'instant) :
(...)
<div class="menu">
<div class="item">
item 1
</div>
<div class="item">
item 2
</div>
</div>
(...)
et chaque fois on remplacera item 1, item 2... par le titre d'une rubrique de niveau 1.
Pour lister les titres des rubriques de niveau 1 nous allons utiliser la boucle RUBRIQUES (
http://www.spip.net/fr_article904.html )
La boucle rubrique s'utilise de la façon suivante :
<Bn(RUBRIQUES){critères...}>
Instructions conditionnelles
<BOUCLEn(RUBRIQUES){critères...}>
Données à afficher
</ BOUCLEn>
Instructions conditionnelles
</Bn(RUBRIQUES){critères...}>
Instructions conditionnelles si aucun résultat n'est renvoyé
<//Bn(RUBRIQUES){critères...}>
Pour lister les rubriques de premier niveau nous pouvons utiliser deux critères différents :
- Le critère {racine} qui sélectionne les rubriques racines d'un site SPIP. Ces rubriques sont
appelées "secteur"
-Le critère {id_parent=0} qui sélectionne toutes les rubriques filles de la rubrique dont le
numéro est 0. Or il n'y a pas de rubrique de numéro 0 et ce critère sélectionne toutes les rubriques à la
racine de SPIP.
On utilise cette dernière solution. Nous n'utilisons pas d'instructions conditionnelles ici et les
données à afficher seront les titres des rubriques imbriqués dans des boîtes "item".
Pour afficher les titres des rubriques on peut utiliser la balise #TITRE de la boucle RUBRIQUE
qui affiche le texte du titre d'une rubrique.
modifier le code de sommaire.html en ajoutant la boucle _rubriques :
<div class="menu">
<BOUCLEmenu_rubriques(RUBRIQUES){id_parent=0}>
[<div class="item">(#TITRE)</div>]
</BOUCLEmenu_rubriques>
</div>
Sauvegarder.
Placer le fichier sommaire.html sur le serveur via la connexion SFTP.
Afficher la première page du site recalculer la page et regarder le code HTML généré par SPIP
pour comprendre le fonctionnement des boucles SPIP.
Il nous reste a mettre en page ce menu en créant un style CSS pour les éléments "item".
Modifiez le fichier site_voyage.css en ajoutant le style suivant à la suite des autres :
.item
{
width : 300px;
float:left;
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;
color: #a6a6a6;
}
Sauvegarder.
Placer le fichier site_voyage.css sur le serveur via la connexion FTP.
Actualiser la page dans le navigateur
A présent nous voulons créer un lien sur chaque Item du menu afin que lorsqu'on clique sur une
rubrique, on accède a la page de la rubrique en question qui affichera le texte descriptif de la rubrique.
Pour cela on utilise la balise #URL_RUBRIQUE qui affiche l'URL de la page de la rubrique.
Essayez de deviner comment modifier le fichier sommaire.html pour définir un lien vers
cette URL sur chaque item .
Solution :
<div class="menu">
<BOUCLEmenu_rubriques(RUBRIQUES){id_parent=0}>
[<div class="item"><a href="[(#URL_RUBRIQUE)]">(#TITRE)</a></div>]
</BOUCLEmenu_rubriques>
</div>
Modifier le fichier sommaire.html et placer le fichier sur le serveur pour tester le résultat
dans le navigateur.
Modifier le fichier site_voyage.css et placez les styles suivants à la suite des autres :
/*texte des boutons de rubrique*/
.item a
{
width : 300px;
float:left;
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;
color: #a6a6a6;
text-decoration: none;
}
/* effet de survol sur les rubriques*/
.item a:hover
{
width : 300px;
float:left;
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;
color: #000000;
text-decoration: none;
}
placer le fichier sur le serveur actualiser le navigateur.
La balise #INCLURE
Voici à quoi devra ressembler notre page rubrique :
On remarque que toute une série d'éléments sont identiques à la page sommaire, à quelques
détails près. Par exemple le cadre bleu le titre et le menu.
Pour créer la page des rubriques nous devons créer et éditer un nouveau fichier rubrique.
html dans notre dossier squelette_voyage/. On pourrait recopier toute une partie du code de
sommaire.html.
Mais nous allons utiliser une autre solution : la balise <INCLURE>(http://www.spip.
net/fr_article1828.html).
La balise <inclure> permet d'intégrer dans un fichier de squelette SPIP du code contenu dans un
autre fichier du même dossier squelette.
On peut donc découper nos fichiers de squelettes SPIP en petites parties communes à plusieurs
fichiers de squelettes.
Nous allons par exemple extraire le code de notre menu du fichier sommaire.html et le
remplacer par une balise <inclure>.
Ensuite, nous pourrons utiliser de nouveau une balise inclure pour intégrer le menu au fichier
rubrique.html.
Créer un nouveau fichier menu.html et éditer ce fichier.
Copier le code suivant (extrait du fichier sommaire.html ):
<div class="menu">
<BOUCLEmenu_rubriques(RUBRIQUES){id_parent=0}>
[<div class="item"><a href="[(#URL_RUBRIQUE)]">(#TITRE)</a></div>]
</BOUCLEmenu_rubriques>
</div>
Remplacer ce même code dans le fichier sommaire.html par
(...)
<INCLURE{fond=menu}>
(...)
Sauvegarder, placer les fichiers sommaire.html et menu.html sur le serveur, reclalculer
la page.
Copier-coller l'intégralité du code du fichier sommaire.html dans le fichier rubrique.
html.
Sauvegarder, placer le fichier rubrique.html sur le serveur, reclalculer la page.
Il n'y a aucune différence entre la page sommaire et une page rubrique. Il faudrait au moins que
la rubrique en cours soit d'une couleur différente dans le menu du haut.
La balise #EXPOSE
Pour cela on peut utiliser la balise #EXPOSE (http://www.spip.net/fr_
article2319.html)
L’objet qui est « exposé » est l’article (ou la brève, la rubrique, le mot-clé ou l’auteur) qui
appartient au « contexte » courant. La Balise #EXPOSE est remplacée par les caractères "on" si
une rubrique listée par une boucle RUBRIQUES correspond à la rubrique contextuelle (passée en
paramètre a la page).
Si vous cliquez sur la rubrique "Irlande", vous remarquerez que l'URL se termine par "spip.
php?rubrique2", la rubrique numéro 2 est la rubrique contextuelle dans ce cas là. Et lorsque la boucle
RUBRIQUES du menu traitera la rubrique 2, la balise #EXPOSE affichera les caractère "on", si ce
n'est pas la rubrique 2 qui est traitée, la balise #EXPOSE n'affichera rien.
- On crée une nouvelle classe CSS item_on avec une couleur différente pour indiquer dans quelle
rubrique on se situe.
Editer le fichier site_voyage.css. en ajoutant le style suivant à la suite des autres:
.item_on a
{
width : 300px;
float:left;
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;
color: #87b7e8;
text-decoration: none;
}
sauvegarder
Editer le fichier menu.html de façon a intégrer la balise #EXPOSE
<div class="menu">
<BOUCLE_menu_rubriques(RUBRIQUES){id_parent=0}>
[<div class="item[_(#EXPOSE)]"><a href="[(#URL_RUBRIQUE)]">(#TITRE)</a></
div>]
</BOUCLE_menu_rubriques>
</div>
- ! Important : comme on a utilisé une balise <INCLURE> dans nos fichiers de squelettes, nous
devons passer les informations de contexte (ID de la rubrique ou de l'article en cours) au fichier inclus,
ceci se fait à l'aide de paramètres.
Rien n'est à modifier dans le fichier sommaire.html, puisqu'il n'y a pas de contexte sur cette
première page.
En revanche on appelle le fichier rubrique.html avec un numéro de rubrique.
Modifier la balise <INCLURE> dans le fichier rubrique.html :
(...)
<INCLURE{fond=menu}{id_rubrique}>
(...)
Sauvegarder
Placer les fichier rubrique.html, menu.html et site_voyage.css sur le serveur,
reclalculer la page.
Mise en page de la liste des articles en colonne à gauche
Nous allons à présent réaliser un menu pour lister l'ensemble des articles d'une rubrique en
prenant exemple sur le fichier menu.html.
Lorsqu'on intégrera ce menu dans une page (rubrique ou article) on passera en paramètre un
contexte de rubrique (et éventuellement un contexte d'article).
Le menu affichera l'ensemble des articles de cette rubrique.
On suppose que {id_rubrique} est défini. On peut lister les titres des articles de cette rubrique
avec une boucle ARTICLE (http://www.spip.net/fr_article902.html) et la balise
#TITRE selon un système similaire au menu des rubriques.
Le menu sera contenu dans une boîte "menu_articles".
On inclura les items de ce menu dans des boîtes qu'on appellera "item_articles".
Créer un fichier menu_articles.html dans le dossier squelette_voyage/.
Essayez de trouver le code du fichier menu_articles.html.
Solution :
<div class="menu_articles">
<BOUCLEmenu_articles(ARTICLES){id_rubrique}>
[<div class="item_articles[_(#EXPOSE)]"><a href="[(#URL_
ARTICLE)]">(#TITRE)</a></div>]
</BOUCLEmenu_articles>
</div>
Sauvegarder
Intégrer ce menu dans la page rubrique.html, comme on à déjà intégré le premier menu,
avec la balise <INCLURE> :
(...)
<INCLURE{fond=menu_articles}{id_rubrique} {id_article} >
(...)
sauvegarder
Editer le fichier site_voyage.css. en ajoutant les styles suivants à la suite des autres :
.item_articles
{
margin-top:10px;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #a6a6a6;
}
.menu_articles
{
float:left;
margin-top:90px;
margin-left:15px;
width:150px;
}
.item_articles a
{
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #a6a6a6;
text-decoration: none;
}
.item_articles a:hover
{
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #000000;
text-decoration: none;
}
.item_articles_on
{
margin-top:10px;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #a6a6a6;
}
.item_articles_on a
{
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #87b7e8;
text-decoration: none;
}
Sauvegarder
Placer les fichier rubrique.html, menu_articles.html et site_voyage.css
sur le serveur, reclalculer la page.
Affichage du texte de la rubrique
Nous allons créer une nouvelle boîte pour afficher le contenu de la rubrique.
Cette boîte contiendra elle même deux boîtes : une pour le titre de la rubrique et une pour le
texte descriptif de la rubrique.
Editer le fichier rubrique.html
Après la balise <INCLURE> du menu des articles ajouter le code suivant :
(...)
<div class="contenu">
<div class="titre"> </div>
<div class="texte"> </div>
</div>
(...)
sauvegarder
Editer le fichier site_voyage.css. en ajoutant les styles suivant à la suite des autres:
/* boîte qui contient les titres et les textes des pages*/
.contenu
{
float:left;
margin-top:150px;
width:400px;
}
/*Boîte qui contient les titres des pages*/
.titre
{
font-family: Arial, Helvetica, sans-serif;
font-size: 24px;
font-weight: bold;
color: #8CBCEC;
}
/*Boîte qui contient les textes des pages*/
.texte
{
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #a6a6a6;
}
sauvegarder
Pour afficher le contenu de la rubrique nous allons utiliser une boucle RUBRIQUES qui ne
sélectionnera que la rubrique en cours via le critère {id_rubrique}. On affichera le titre avec la balise
#TITRE de la boucle RUBRIQUES et le texte via la balise #TEXTE de la boucle RUBRIQUES.
Editer le fichier rubrique.html en ajoutant juste après les menus
(...)
<BOUCLE_rubrique_actuelle(RUBRIQUES){id_rubrique}>
<div class="contenu">
<div class="titre">[(#TITRE)]</div>
<div class="texte">[(#TEXTE)]</div>
</div>
</BOUCLE_rubrique_actuelle>
(...)
sauvegarder
page.
Placer les fichier rubrique.html et site_voyage.css sur le serveur, reclalculer la
Affichage des articles
Nous pouvons réutiliser une bonne partie du code du fichier rubrique.html pour créer notre
fichier article.html.
Créer un fichier article.html.
Editer ce fichier, copier-coller le code suivant en modifiant la boucle RUBRIQUE en boucle
ARTICLE et le critère {id_rubrique} en critère {id_article}:
<!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="fr">
<head>
<link href="squelette_voyage/site_voyage.css" rel="stylesheet" type="text/
css" />
</head>
<body>
<div class="interface">
<div class="titre_site">
[(#NOM_SITE_SPIP)]
</div>
<INCLURE{fond=menu}{id_rubrique}>
<INCLURE{fond=menu_articles}{id_rubrique}>
<BOUCLE_article_actuel(ARTICLES){id_article}>
<div class="contenu">
<div class="titre">[(#TITRE)]</div>
<div class="texte">[(#TEXTE)]</div>
</div>
</BOUCLE_article_actuel>
</div>
</body>
</html>
sauvegarder
Placer le fichier articles.html sur le serveur, reclalculer la page.
On remarque que le menu des articles (à droite) ne s'affiche plus sur la page article et que la
rubrique en cours n'est pas affichée sur le menu du haut.
Cela vient du fait qu'on passe le critère {id_rubrique} dans les balises <INCLURE> alors
qu'on appelle le fichier article.html non plus avec un numéro de rubrique mais avec un numéro
d'article. {id_rubrique} n'est donc pas défini dans la page et {id_article} prend la valeur passée en
paramètre.
Il faut donc se placer dans le contexte de l'article avant d'afficher les menus. Lorsqu'un article
a été sélectionné avec une boucle ARTICLES, on se trouve dans le contexte de cet article. Le critère
{id_rubrique} correspond alors au numéro de la rubrique de l'article sélectionné.
Modifier le fichier article.html en déplaçant le début de la boucle
_article_actuel avant les balises <INCLURE> :
<!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="fr">
<head>
<link href="squelette_voyage/site_voyage.css" rel="stylesheet" type="text/
css" />
</head>
<body>
<div class="interface">
<div class="titre_site">
[(#NOM_SITE_SPIP)]
</div>
<BOUCLE_article_actuel(ARTICLES){id_article}>
<INCLURE{fond=menu}{id_rubrique}>
<INCLURE{fond=menu_articles}{id_rubrique}>
<div class="contenu">
<div class="titre">[(#TITRE)]</div>
<div class="texte">[(#TEXTE)]</div>
</div>
</BOUCLE_article_actuel>
</div>
</body>
</html>
sauvegarder
Placer le fichier article.html sur le serveur, reclalculer la page.
Les documents associés : une photothèque
Nous allons à présent utiliser la boucle DOCUMENTS pour lister les éléments multimédia
associés a un article et réaliser une photothèque.
Nous allons créer une boîte "document_associes" cette boîte contiendra une boîte "photo" pour
l'image affichée en grand et une boîte "planche_contact" pour la planche contact.
La boîte "planche_contact" contiendra elle même des petites boîtes "photo_icone" pour les
miniatures de chaque images. Au niveau HTML on obtient le code suivant :
Ne rien saisir pour le moment
(...)
<div class=" document_associes">
<div class="photo"> </div>
<div class="planche_contact">
<div class="photo_icone"></div>
</div>
</div>
(...)
Pour la photo en grand :
Si un paramètre id_document est passé dans l'URL alors on peut faire une requête sur ce
document et l'afficher dans la boîte "photo".
Pour la planche contact on utilise la boucle DOCUMENTS avec le critère {id_article} afin de
récupérer tous les documents associés à l'article en cours. On affiche ensuite le résultat dans les boîtes
prévues.
Pour afficher les images on utilisera la balise #FICHIER de la boucle DOCUMENTS et le filtre
image_reduire qui permet de générer des miniatures d'images automatiquement. Ce filtre prend en
critère la dimension maximale de l'image réduite.
Modifier le fichier article.html en ajoutant le code suivant juste avant </BOUCLE_
article_actuel>
(...)
<div class="document_associes">
<BOUCLE_photo(DOCUMENTS){id_document}>
<div class="photo">[(#FICHIER|image_reduire{300})]</div>
</BOUCLE_photo>
<B_planche_contact>
<div class="planche_contact">
<BOUCLE_planche_contact(DOCUMENTS){id_article}>
<div class="photo_icone"> [(#FICHIER|image_reduire{50})] </div>
</BOUCLE_planche_contact>
</div>
</B_planche_contact>
</div>(...)
Sauvegarder
Editer le fichier site_voyage.css. en ajoutant les styles suivant à la suite des autres:
/*la boîte pour l'ensemble photo en grand + planche contact*/
.document_associes
{
margin-top:150px;
margin-left:80px;
margin-bottom:50px;
width: 300px;
float:left;
}
/*la boîte pour la photo en grand*/
.photo
{
width:300px;
}
.photo img
{
border: 3px solid #000000;
}
/*La boîte planche contact*/
.planche_contact
{
}
/*les boîtes pour les miniatures*/
.photo_icone
{
float:left;
margin:5px;
width:50px;
height:50px;
}
/*le miniatures avec un cadre noir*/
.photo_icone img
{
border: 3px solid #000000;
}
Sauvegarder
Sur chaque image de la planche contact nous devons ajouter un lien vers la page article en cours
avec un paramètre en plus : l'id_document du document sur lequel on vient de cliquer ; pour cela on
utilise la balise #URL_ARTICLE de la boucle ARTICLES _article_actuel.
On utilise aussi le filtre technique parametre_url ():
Modifier le fichier article.html en ajoutant les liens sur les miniatures.
(...)
<div class="photo_icone"> [<a href="[(#_article_actuel:URL_ARTICLE|parametre_
url{id_document,[(#ID_DOCUMENT)]})]">(#FICHIER|image_reduire{50})</a>] </div>
(...)
page.
sauvegarder
Placer les fichier article.html et site_voyage.css sur le serveur, reclalculer la