Mon 1er site en CSS/XHTML : Une expérience expliquée en détail

Date 19/05/2006 | Sujet : Documentations

Avant de vous présenter en détails mon tout nouveau thème, ou plutôt devrais-je écrire ma 1ère expérience en "full" CSS/XHTML et de surcroit sans aucun tableau dans mon thème, de vous l'expliquer, et de vous montrer le cheminement effectué pour arriver au résultat final, laissez-moi vous donner quelques rappels sur les sites sur lesquels j'ai travaillé.



Plan :
0) Introduction
1) Theme de départ - Idée de départ
2) Les colonnes factices
3) Principaux "div"
4) Onglets, partie 1 : bords arrondis
5) Onglets, partie 2 : colorisation de l'onglet actif
6) Validation W3C
7) Téléchargement du thème



0) Introduction

Après la mise en place de l'intanet, mon 1er projet XOOPS (pas visible évidemment), c'était en Juin 2003 je crois, j'ai continué à prendre beaucoup de plaisir à monter des projets de sites webs via cet extraordinaire CMS et grace surtout à cette communauté inégalable et inégalée.

La suite plus bas...


Mon 1er site public a été le site de
la Ligue Rhône-Alpes de volleyball, pour lequel j'ai travaillé sur le thème (Lire l'article).

Celui-ci est disponible en libre téléchargement ici.


J'ai ensuite enchainé par 2 sites "vitrine" en multilangue français / anglais. Ces sites n'ont pas l'aspect de sites réalisés en XOOPS mais pourtant, détrompez-vous, cliquez tout en bas sur "login", vous retrouverez des éléments familiers.

Il s'agit du Laboratoire de Dynamique des Machines et des Structures (Lire l'article) ainsi que du site présentant un logiciel spécifique nommé ROTORINSA.







Par la suite j'ai réalisé la mise à jour complète (noyau de XOOPS, modules et thèmes) de l'excellent site de l'association de protection des éléphants d'Asie, Elefantasia, géré par Gilles.


Pour le tout dernier site, après avoir lu l'article de Christian Xoopser un template xhtml/css en moins de 10mn, je me suis dit : Pourquoi pas moi ?
Alors j'ai tenté l'expérience, plus pour évaluer mes capacités d'apprentissage et la curiosité de se mettre à des "standards" qu'une vrai volonté de faire tout en css/XHTML, un défi, quoi !


Tout d'abord, 1er constat, moi, j'ai seulement mis 14 jours et 10mn pour peaufiner le thème soit à peine 14 jours de plus !

Je me suis largement inspiré de quelques infos pertinentes glanées ici et là :
- Pompage.net
- Alsacréation et là
- peutetreunereponse.net

Mon objectif concernant le thème (aucun objectif pour le site en lui-même) :
- Réaliser un thème original
- N'utiliser que la norme CSS/XHTML
- Ne pas avoir de tableaux dans le thème
- Réussir la validation CSS et XHTML
- Intégrer des onglets attrayants
- Onglets à bords arrondis
- Onglets avec mémorisation de la position du visteur sur le site



1) Theme de départ - Idée de départ

J'ai beaucoup apprécié l'originalité du thème présenté ici et disponible dans les thèmes de frxoops.org ici.

Je suis donc parti sur une idée d'un cahier à spirale et donc pas de colonne de droite.






2) Les colonnes factices

Lire l'article sur l'astuce des colonnes factices.
Cette méthode est assez pratique dans le cas de mon thème


Haut 1 + emplacement des onglets vers les liens externes


Haut 2 + emplacement vers les liens internes


Motif principal répété en y


Bas


3) Principaux "div"

<div id="conteneur">
     <
div id="navigation">
          
// position des onglets vers liens externes
     
</div>

     <
div id="navigation2">
         
// position des onglets vers liens internes
     
</div>

     <
div id="logo">
         
// ici le lien du logo
     
</div>

     <
div id="gauche">
         
// Boucle blocs de gauche
     
</div>

     <
div id="centre_gd">
          <
div id="centre_gauche">
               
// Boucle blocs centre gauche
          
</div>
          <
div id="centre_droite">
               
// Boucle blocs centre droite
          
</div>
     </
div>

     <
div id="centre">
          
// Boucle blocs centre centre
          
<div id="content">Affichage du contenu du module</div>
     </
div>

     <
div id="blocnote_bottom">
          
// bas de page
     
</div>
</
div>



4) Onglets, partie 1 : bords arrondis

Il existe une méthode pour définir des onglets, c'est la méthode des portes coulissantes, ce n'est pas celle que j'ai utilisée mais celle-là (Exemple 2, Horizontal).

Il s'agit d'une astuce css tout à fait fabuleuse. cela vous génére des formes d'onglets sans avoir besoin d'images. Une fois le principe bien compris, vous pourrez créer autant d'onglets de couleurs différentes de vous souhaitez, en une seule ligne css.
Quand vous avez maitrisez ces quelques lignes de css, libre à vous de définir des types d'onglets avec les paramètres suivants :
- couleur,
- grandeur de l'onglet
- onglet sombre ou clair

Tentative d'explication :
<div id="navigation">
    <
ul>
        <
li>
            <
class="menumini" href="http://monsite.fr/lien1.html" title="Mon lien 1">
                 <
class="BoxOnglet"><span class="BoxContenu couleur4">Lien 1</span><class="b4 couleur4"></b><class="b3 couleur4"></b><class="b2 couleur4"></b></b>
            </
a>
        </
li>
    </
ul>
</
div>


avec comme css (que j'ai commenté):
// placement des onglets sur la page
#navigation {
    
padding-left300px;
    
backgroundtransparent no-repeat;
    
margin0px;
    
height4em/* cache overflow:hidden de IE5/Mac */
    
overflowhidden/* */
    
background-imageurl(images/fonds_blocnote_top.png);
   
height45px;
}

#navigation ul {
  
margin:0px
  
padding:0
  list-
style-type:none
  
background:transparent;
  }
#navigation li {
  
display:block
  
float:left
  
margin:15px 2px 0px 0px;
  }
.
BoxOnglet, .BoxOngletFonce {
  
background:transparent;
  }

// Onglet pour texte sombre
.BoxOnglet span {
   
text-aligncenter;
   
color#FFCC33;
   
margin0px;
   
font-familyverdana;
   
font-size80%;
   
font-weightnormal;
}

// Onglet pour texte clair
.BoxOngletFonce span {
   
text-aligncenter;
   
color#093F7D;
   
margin0;
   
font-familyverdana;
   
font-size80%;
   
font-weightnormal;
}


// Astuces pour faire des bords arrondis
// b1 Ã©tant la base la plus large et b4 la plus petite
.b1, .b2, .b3, .b4 {
  
display:block
  
font-size:xx-small;
/* cache overflow:hidden de IE5/Mac */ 
/* */ 
  
overflowhidden
/* */ 
  
}

.
b1, .b2, .b3 {height:1px;}
.
b2, .b3, .b4 {
  
border-left:1px solid #FFFFFF; 
  
border-right:1px solid #FFFFFF;
  
}
.
b1 {margin:0px 5pxbackground:#FFFFFF;}
.b2 {margin:0 3pxborder-width:0 2px;}
.
b3 {margin:0 2px;}
.
b4 {height:2pxmargin:0 1px;}

// contour des onglets
.BoxContenu {
  
display:block
  
border-left:1px solid #FFFFFF; 
  
border-right:1px solid #FFFFFF;
  
}

// onglets taille normale
a.menu {
  
display:block
  
text-decoration:none
  
width:6.5em;
  }

// petits onglets
a.menumini {
  
display:block
  
text-decoration:none
  
width:3.5em;
  }

// onglets grande taille
a.menugrand {
  
display:block
  
text-decoration:none
  
width:9.5em;
  }

a.menu:hovera.menumini:hovera.menugrand:hover  {
  
background:transparent
  
cursor:pointer;
  
text-decorationnone;
  }
a.menu:hover spana.menumini:hover spana.menugrand:hover span {
  
padding-top:8px;
  }

// définition des couleurs des onglets
.rouge {background:#cc3333;}
.bleu {background:#093F7D;}
.jaune {background:#FFCC33;}
.comite{background:#3662a2;}



5) Onglets, partie 2 : colorisation de l'onglet actif

Une fois les onglets réalisés, certes, ils étaient beaux, colorés mais il manquaient quelque chose. Pouvoir coloriser l'onglet actif, c'est à dire, l'onglet qui reprénte la page sur laquelle on navigue.

Pour un onglet d'un lien vers un module, ce n'est pas si simple que cela. En effet, l'onglet doit rester dans sa colorisation active tant que l'on est sur une page du module donc faire un test sur la racine de l'url du module ne fonctionnera que sur la page index.html du module. Il nous faut donc trouver un autre test.

En parcourant les forums, j'ai trouvé des infos interessantes ainsi qu'en éditant mon site en mode SMARTY.


Pour les modules, j'utilise cette méthode :
<{if ($xoops_requesturi|truncate:18:"":true) == "/modules/wordpress"}>

ou
<{if ($xoops_requesturi|truncate:14:"":true) == "/modules/xhld0"}>



Modif (Merci Skalpa)
Pour les modules j'utilise maintenant cette methode :
<{if $xoops_dirname == 'wordpress'}>


<{if $xoops_dirname == 'xhld0'}>


Pour un onglet qui pointe vers un fichier c'est plus ou moins compliqué selon le lien :

Pour accueil
<{if $SCRIPT_NAME == "/index.php"}>


Pour Login/inscription
<{if ($xoops_requesturi|truncate:24:"":true) == "/user.php?xoops_redirect"}>

En effet, l'onglet doit être actif dans le cas d'une redirection vers la demande de login

Enfin, je fais un test pour remplacer l'onglet "login/inscription" par "Mon compte" quand le visiteur est loggé.
<{if $xoops_isuser}>
// Onglet "mon compte"
<{else}>
// Onglet "login/inscription"
<{/if}>



6) Validations W3C

Validation XHTML


Validation CSS




7) Téléchargement du thème

Ce nouveau thème est donc disponible en libre téléchargement ici.





Cet article provient de Communauté Francophone des Utilisateurs de Xoops
https://www.frxoops.org

L'adresse de cet article est :
https://www.frxoops.org/modules/news/article.php?storyid=1001