Création d’un squelette sur la base de 960.gs
Comme vous avez pu le voir, l’interface de mon site est toute fraiche. Il est basé sur le framework CSS 960.gs. Je l’utilise quasi systématiquement pour la création de mes squelettes persos comme professionnels. Je vais vous expliquer comment j’ai procédé à sa réalisation avec SPIP.
Avant propos
J’ai déjà abordé sur mon blog de certaines astuces que j’ai réutilisé sur mon site :
Je vais aujourd’hui vous parler de la première partie de la réalisation de mon squelette. Nous n’aborderons pas l’étape graphique qui est propre à chacun.
Présentation de 960.gs
Il existe plusieurs frameworks CSS : Blueprint, YUI Grid CSS, 960 Grid System.
Ce dernier (960.gs pour les intimes) est devenu ma référence maintenant. Il me permet de réaliser rapidement mes prototypes mais aussi mes versions de squelettes en production.
Pour mon design, j’ai réalisé ma maquette sous Photoshop grâce à la grille psd mis à disposition sur le site officiel. De ce fait, je peux aisément retrouver mes largeurs de bloc par rapport à un élément de grille (2 grilles, 3 grilles, etc.). Rapide et efficace.
Mon design est basé sur une division de 4 « sections » de la grille de 16. Ce qui correspond à la classe CSS grid_4
.
Mise en place des gabarits.
En plus de ma grille 960.gs, mon squelette est basé sur la structure « Z » et le plugin Compositions. Je recrée de ce fait les répertoires de base de ma structure :
- contenu
- extra
- head
- images
- inclure
- lang
- navigation
Selon mes besoins, je copierai les fichiers html que je dois modifier de z-dist_v1/
à squelettes/
.
Premier élément : head.html
Head.html
Il faut que SPIP arrive à retrouver les fichiers de 960.gs. Je copie les fichiers 960.css
, reset.css
, text.css
à la racine de mon dossier squelettes.
Dans le fichier inclure/head.html
, je copie ce code juste avant tous les appels des fichiers css présent dans ce fichier :
Body.html
Mon design n’utilise pas de zone « extra » de base. En tout cas, pas sur la page contenu/page-sommaire.html
. L’appel aux extras se fera dans le fichier contenu/type.html
(article.html
, breve.html
, mot.html
, etc.)
En voici le code source spipien :
À noter : la zone de contenu est dans un
grid_12
. De ce fait, si nous utilisons desgrid_X
dans cette zone, nous devrons attribuer desalpha
et/ouomega
selon la position en premier ou dernier dans la colonne. Cela a pour effet d’enlever lesmargin-left
oumargin-right
.
J’ai gardé le même principe d’INCLURE pour mes besoins spécifiques : inclure/navigation-secondaire
Ce dernier fait appel à ma petite barre de navigation contenant : le lien vers la page d’accueil, lien vers mon CV, lien vers mes informations générales telles que les conditions générales, la page de contact et enfin ma barre de recherche.
Jusque là, rien de bien « difficile ».
Le contenu
En tout premier lieu, on va commencer par éditer le fichier contenu/page-sommaire.html
. Il est la vitrine du site, et conditionnera les autres pages. Ses lignes de codes sont très simple :
Rien de plus.
La subtilité vient de inclure/article-resume-rubrique.html
. Vous pouvez voir des paramètres particuliers qui vont me servir selon la page :
Il y a 2 #SET
importants. Ils déterminent la largeur et la hauteur de mes vignettes.
-
#SET
: il est configuré grâce aux paramètresimglargeur
etimghauteur
. On y met une valeur de sécurité si l’un des paramètres n’est pas renseigné. -
[ (#ENV{grille})]
: renseigne sur quelle grille va s’adapter mon bloc. -
[ (#ENV{position}]
: renseigne tour à tour si je suis en début de colonne ou en fin de colonne (alpha
ouomega
ou rien…). Je le conditionne danscontenu/page-sommaire.html
avec un#COMPTEUR_BOUCLE|alterner{…}
-
image_passe_partout
: mon filtre préféré pour les images, couplé àimage_recadre
. Dans ces 2 filtres, j’applique ma largeur et ma hauteur déterminées par les#SET
.
Voilà ! Le site est prêt ! Si si, je vous jure ! On a fait le plus dure. Le reste n’est que la déclinaison de ce même principe…
Pour chaque rubrique, ou presque, j’ai un gabarit spécifique que j’applique grâce au plugin Compositions.
Déclinaisons
Pour ma rubrique Savoir-faire, j’ai un squelette dédié : contenu/rubrique-services.html
.
C’est le meilleur exemple pour la réutilisation de mon modèle inclure/article-resume-rubrique.html
. Bon… J’avoue, je l’ai un peu modifié en réel car je n’ai pas besoin de la date ni même de l’auteur sur ces pages. Un display:none
ne me suffisait pas…
Donc, dans contenu/rubrique-services.html
, j’ai fait une boucle pour chaque sous rubrique pour les afficher différemment. Rien de complexe de ce fait, je ne l’illustre pas car un basique en boucle SPIP. Ma première boucle utilise cette inclusion :
Explications :
-
#GET{position}
: ça n’a pas changé de sa première utilisation.[(#COMPTEUR_BOUCLE|alterner{' alpha',' omega'})]
défini la position de mon bloc ; - Le paramètre
grille
: je nomme expressément ma grille àgrid_6
pour que je sois à l’affichage sur "2 colonnes" ; - Le paramètre
imglargeur
: je donne la largeur à laquelle mon logo sera redimensionné, 340 px qui correspondent à la largeur d’ungrid_6
; - Le paramètre
imghauteur
: je donne la hauteur à laquelle mon logo sera redimensionné, 220 px ;
Vous pouvez vérifier ce que ça donne ici
Le deuxième appel
Pour ma 2ème sous-rubrique, je fais l’appel ainsi :
Là, pas de changement existentiel. On est sur 3 colonnes, soit des grid_4
. Pas la peine de renseigner la largeur et la hauteur de ma vignette car les nombres par défaut me conviennent sur cette grille.
Et enfin…
Je fais un 3ème et dernier appel à cet inclure pour les articles de ma rubrique (et plus ses sous-rubriques) :
Le but de cet appel est d’afficher sur une plus grande largeur les articles de la rubrique. On est sur un grid_10
. Je lui rajoute un prefix_1
et un suffix_1
pour que la colonne soit centrée dans ma zone de contenu.
La position est en alpha
ET omega
car 10+1+1=12. Les margin-left
et margin-right
sont alors superflus.
Conclusion
Vous pouvez voir que ce n’est pas compliqué de réaliser un squelette pour SPIP sur les modèles :
- Z-dist ;
- Compositions ;
- et enfin 960.gs.
Pour pousser l’exemple, un autre article sera publié dans peu de temps sur les quelques paramètres à modifier pour en faire un squelette dédié aux smartphones. Cette déclinaison m’a pris 1 heure de mon temps maximum.
Le tout est de bien pensé à votre squelette, comment vous simplifier la tâche par la suite. C’est le conseil que je peux vous donner.
Derniers commentaires
# Le 19 octobre à 13:09, par nico
En réponse à : MagicMirror², ma configuration personnalisée
# Le 25 septembre à 12:01, par Teddy Payet
En réponse à : Un Nouveau Chapitre : Mon Admission dans un MBA en Intelligence Artificielle et Data Innovation
# Le 25 septembre à 11:20, par vY
En réponse à : Un Nouveau Chapitre : Mon Admission dans un MBA en Intelligence Artificielle et Data Innovation
# Le 21 juin à 13:49, par Teddy Payet
En réponse à : Home Assistant : Routine le matin avant l’école
# Le 21 juin à 10:47, par Teddy Payet
En réponse à : Ma domotique open source
# Le 16 juin à 17:15, par Eric
En réponse à : Ma domotique open source