TheM
Le site de Mumu


english version

La Galerie de Mumu

Annecy et son lac

Pays de montagnes

Flâneries parisiennes

Passages



Contacts

La vie du site

Liens



Techniques Web

Techniques Photo

UNE PAGE D'ACCUEIL DYNAMIQUE

- 1ère partie -



Montrer des photos c'est bien,
si la page d'accueil est déjà écrite, c'est encore mieux!

Pour des galeries comportant de nombreuses photographies, les techniques HTML et Javascript permettent d'utiliser des pages d'affichages génériques. C'est le principe de la visite dynamique. Mais pour les pages d'accueil, qui présentent toutes les photographies sous forme d'imagettes, leur mise à jour est fastidieuse et rend difficile la maintenance du site web.

Dans ce cas, la programmation à base de la fonction document.write() va automatiser cette tâche.

2 types de pages d'accueil

Il existe 2 principaux types de page d'accueil :
  • toutes les photographies sont présentées sur une seule page. Ce principe est appelé ici : "PresenteTout"
  • la galerie est composée de plusieurs pages ne comportant qu'un nombre réduit de photos. C'est le principe du : "PresentePage"

principe "PresenteTout"

presenteTout




principe "PresentePage"

presentePage - 1ère page

presentePage - 2ème page


Dans les 2 cas, la structure du site est la même que celle présentée pour la visite dynamique. Tout est construit autour des données enregistrées dans la page principale.

Il est conseillé de nommer les photographies grand format xxx_gf.jpg et les imagettes petit format présentées sur les pages d'accueil xxx_pf.jpg. Il sera alors plus facile de manipuler le nom des photos dans les différentes pages dynamiques. Dans la base de donnée, le nom de la photo n'est alors représenté que par le radical, soit :
image[1] =  "ruisseau";
Afficher l'image en grand format s'effectue alors par la commande :
document.write("<img src='" + image[1] + "_gf.jpg'>");
qui revient au même qu'écrire directement dans le source de la page html :
<img src="ruisseau_gf.jpg">
Afficher l'imagette s'effectue par la commande :
document.write("<img src='" + image[1] + "_pf.jpg'>");

Toute la galerie sur une seule page

Présenter toutes les photographies sur une même page est la manière la plus simple de réaliser une page d'accueil. C'est également la plus facile à programmer.

Pour éviter d'afficher toutes les imagettes sur une seule ligne et obliger le visiteur à utiliser la barre de défilement horizontale pour les visualiser, le nombre maximale de colonnes est défini. Par exemple :
var nbCol = 3;
Pour afficher les imagettes avec la commande habituelle (voir la visite dynamique), il faudrait écrire :
document.write("<a href='affiche.html' onClick='parent.numero=1'>");
document.write("<img src='" + parent.image[1] + "_pf.jpg' border='0'></a>");
document.write("<a href='affiche.html' onClick='parent.numero=2'>");
document.write("<img src='" + parent.image[2] + "_pf.jpg' border='0'></a>");
document.write("<a href='affiche.html' onClick='parent.numero=3'>");
document.write("<img src='" + parent.image[3] + "_pf.jpg' border='0'></a>");
//une ligne de 3 imagettes est remplie : retour à la ligne
document.write("<br>");
document.write("<a href='affiche.html' onClick='parent.numero=4'>");
document.write("<img src='" + parent.image[4] + "_pf.jpg' border='0'></a>");
document.write("<a href='affiche.html' onClick='parent.numero=5'>");
document.write("<img src='" + parent.image[5] + "_pf.jpg' border='0'></a>");
...
        
Cette écriture est simplifiée en introduisant une variable i pour parcourir la liste. Elle représente le numéro des images et vaudra successivement 1,2,3...jusqu'à parent.max. C'est rôle de la boucle suivante :
for (i=1;i<=parent.max;i++) {}
        
avec :
i=1
condition de départ de la boucle
i<=parent.max
condition pour rester dans la boucle
i++
opération à effectuer entre chaque boucle. Ici i est incrémenté de 1 ( i = i+1)

Une nouvelle ligne est commencée lorsque le numéro de l'image est un multiple du nombre de colonne, ou encore si le reste de la division du numéro de l'image par le nombre de colonne est nul :
if (( i % nbCol ) == 0) document.writeln("<br>");
Il n'y a plus qu'à afficher toutes les imagettes :
for (i=1;i<=parent.max;i++)
{
    //affichage d'une imagette et de son lien vers l'affichage de la photo grand format
    document.write("<a href='affiche.html' onClick='parent.numero=" + i + ";'>");
    documentwrite("<img src='" + parent.image[i] + "_pf.jpg' border='0'></a>");
    //retour à la ligne : reste de la division de i par nbCol = 0
    if (( i % nbCol ) == 0) document.write("<br>");
}
        
La page d'affichage présentée dans la visite dynamique ne nécessite aucune modification si ce n'est le lien Galerie qui doit pointer vers la page d'accueil générique presenteTout.html :
//lien vers la galerie
document.write("<a href='presenteTout.html'>Galerie</a>");
        
Pour appliquer les principes de "PresenteTout" à votre site, adaptez les sources ci-dessous :


Source de la page d'accueil presenteTout.html

<html>
<head>
    <title>Fenêtre d'affichage</title>
</head>

<body>
    <script>
    <!--masquer le script pour les anciens browsers
        nbCol=3;

        document.writeln("GALERIE");
        numero=0;
        //affichage des imagettes
        for (i=0;i<=parent.max;i++)
        {
            document.writeln("<a href='affiche.html' onClick='parent.numero=" + i + ";'>");
            document.write("<img src='" + parent.image[i] + "_pf.jpg' border='0'></a>");
            if (((i+1) % nbCol) == 0) document.writeln("<br>");
        }

    // cesser de masquer le script -->
    </script>
</body>

</html>
        


Aussi simple soit-elle, cette formule présente néanmoins des inconvénients. Si le nombre de photographies est trop important, la page d'accueil risque d'être longue à charger. De plus, elle risque de ne pas tenir sur un seul écran et de nécessiter d'utiliser la barre de défilement verticale pour la voir entièrement ce qui n'est jamais conseillé. Pour remédier à cela, le mieux est de définir un nombre de lignes maximal par page et d'afficher la galerie sur plusieurs pages.






TheM
Le site de Mumu