Personnaliser l'apparence. Les thèmes sous Drupal.

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Cette question a été posée 1000 fois, mais je vous jure (c'est pourtant pas bien de jurer) que je n'ai jamais trouvé une réponse claire et limpide.

Je veux bien être fustigé sur la place publique s'il existe une ressource qui réponde à cette demande d'aide.

Je développe des sites depuis très longtemps, soit en partant de rien (avec ma bibliothèque de classe PHP), soit avec des CMS comme Spip ou un CMS maison.

La graphiste me communique une maquette, que j'intègre ensuite.

J'ai l'habitude de commencer l'intégration de la maquette, puis, dans celle-ci, je place mon contenu dynamique. A savoir des boucles Spip quand je bosse avec Spip, ou des self::display('mavariable') lorsque je bosse avec mon CMS made in moi.

Sous Drupal, rien à faire, je n'y arrive pas. J'ai lu que tout ce faisait en CSS, qu'il n'était pas nécessaire de toucher le code des templates. Euh, non, tout ne se gère pas en CSS, faut pas abuser :-)

Ce qui me manque, c'est un tuto, ou peut-être une seule phrase (elle serait alors sûrement magique) qui pourrait déclencher en moi un déclic qui ferait que je me dirais : "Ah, mais d'aaaacccoooord ! En fait c'est ça. Donc je dois faire comme ça... puis comme çi..."

Sauf que je n'ai toujours pas eu ce déclic.

J'ai lu aussi qu'il ne fallait pas partir de rien avec Drupal. Il faut procéder par modification d'un thème existant. Mais les thèmes existants sont à 10000 années lumières de ce que me communique ma graphiste. Imaginer une page d'accueil très graphique, pas de design en colonne. Comment faire ?

Et d'ailleurs, je n'ai pas non plus trouvé le moyen simple d'avoir des rendus de pages différents. Par exemple, là, j'ai une page d'accueil complétement différente des autres pages du site. Comment cela se gère ?

Dans mon CMS Perso, j'indique tout simplement le nom du template correspondant à une page. Dans Spip, je créé un fichier dont le nom correspond à une rubrique particulière.

Mais sous Drupal ?

Vous l'aurez compris, c'est dur dur. Bien-sûr, l'ai lu les différentes ressources, la doc, avec le contenu d'un thème, le fichier .info, les zones, les blocs, etc.

Cas concret : je modifie le template d'un noeud, par exemple. mais comment je fais si je veux que ce tempate soit différent pour une certaine page de mon site ? En fait, j'ai l'impression que sous Drupal, il faut un site avec un design en colonne, et que toutes les pages soient identiques. Or, moi, je n'ai pas de design en colonne, et j'ai souvent besoin de personnaliser les templates en fonctions d'une rubrique (d'un contenu) particulier (et des contenus fils).

Qui peut m'aider ?

Forum : 

salut a toi je manipule drupal depuis a peu prêt un mois et je suis capable de faire du theming (simple) donc il doit te manque le declic qui je pense te viendra en cherchant ceci :

recherche le theme "basic" pour drupal celui-ci est complètement épuré.
de mémoire je suis parti de ce lien http://www.ineation.com/basic-le-meilleur-starter-theme-pour-drupal-6

le theme est téléchargeable ici : http://drupal.org/project/basic

une fois que tu aura compris le principe des fichier d'un theme tu pourra te pencher sur certain modules dont le but est de permettre de modifier le css des block, noeud ...

a cette fin je t'invite a regarder par exemple ces modules :
- "block theme" pour créer différent gabarit pour tes block (n'hésite a pas a regarder la vidéo de démo elle est plutôt efficace )
- contemplate : celui-ci e permet de définir des template pour chaque type de contenu

voila j'espère que ça te donnera une piste pour démarrer car j'étais dans ton cas et ça m'a plutôt bien débloqué.
bonne chance

Merci pour ton soutiens.

Concernant le thème "basic", il est indique la chose suivante :

"Non, aujourd'hui je veux vous parler d'un thème qui est parfaitement adapté pour des mises en pages sur 1, 2 ou 3 colonnes"

Cela signifie t-il que ce thème ne me permettra que de créé un design en colonne ?

je n'ai pas essayé moi même mais cependant si tu vas regarder le fichier page.tpl.php du theme basic tu constatera que tu peux modifier a loisir le template général de ton site.

libre a toi ensuite de faire le "

<?php
 
print $left;
?>

" par exemple qui affiche le contenu du bloc de gauche dans ton le bloc central et de retirer les bloc droite et gauche

cependant il existe peut être des thèmes qui ont une structure de base plus complexe que la structure à 3 colonnes. Mais basic est un outil de prise en main du theming qui t'aidera a bien appréhender la base

Merci pour ton aide.

J'aurai peut-être une dernière question pour aujourd'hui, en espérant ne pas abuser de ta disponibilité...

Est-il simple, avec Drupal, de créer plusieurs gabarits pour un même site ?

J'ai une page d'accueil entièrement différente (donc elle nécessitera pas les mêmes templates pour les nodes, les blocks, etc.).

Idem pour toutes les pages filles d'une page particulière de mon site.

As-tu une piste pour cela ? J'étais autrefois tombé sur un article qui expliquait cela, de mémoire, mais il s'agissait plutôt d'une astuce, de bricolage. Ce n'était pas une façon robuste de procéder, et c'est d'ailleurs ce qui m'avait fait abandonner (face à la simplicité d'un Spip, par exemple, pour créer autant de squelettes que nécessaire).

Aujourd'hui, je reviens avec plein de bonne volonté, en espérant que les choses aient peut-être évoluées ?

je ne me suis pas penché sur la question, mais pour en avoir un peu discuter c'est une "faiblesse" de drupale la homepage car elle n'est pas vraiment configurable de manière complètement séparé (elle n'est qu'une page parmis d'aute) cependant je peux te porposer des pistes de reflexions autant que ma faible expérience le permet.
Peut-être qu'une personne plus expérimenté pourra t'apporter de meilleurs conseils

il est possible de gérer l'affichage de tout tes blocs dans l'administration ainsi tu peux désactiver des blocs pour la page "" (c'est la homepage) et en activer d'autres uniquement pour elle, cela répond a ton besoin pour les bloc je pense.

pour ce qui est de son gabarit, peut-être que tu pourrais créer un "panel" grace au module du même nom. il y a différent gabarit qui pourront j'espère répondre a ton besoin. Ensuite tu peux customiser ce gabarit avec des class css et autre.(tu peux le promouvoir en tant que homepage)

pour ce qui est des noeuds que tu remonteras dans ta homepage, si tu le fais avec des "views" (module du même nom) le module "devel" peut t'aider a modifier l'affichage des noeud de ta vue

voila en espérant que ça t'aide
n.b : Si jamais tu trouve une manière plus intéressante j'en suis preneur aussi

Et bien il semblerait que nativement, PHPEngine qui est intégré à Drupal recherche des templates différents, dans un ordre défini, selon l'URL de la page. Ce qui me convient puisqu'on se rapproche de ce que propose Spip, par exemple.

Cependant, ce dernier gère les pages filles, c'est à dire que si une page possède un template particulier, on peut faire en sorte que toutes ses sous-pages bénéficient du même template, celui de leur page mère.

Avec Drupal, cela semble exclusif à l'url...

Plus d'info ici

Et ici

Pour les pages filles, y'a pas vraiment déquivalent dans drupal où la notion de hiérarchie est quasi absente. mais il est possible de theme en fonction d'un type de contenu ce qui couvre tout l'éventail des besoins (en tous cas j'ai jamais été bloqué du côté des suggestions de template pour ma part).

Hello
aucun souci pour créer autant de template / gabarits que nécessaire; d'ailleurs ça ressemble à la manip que je faisais avec SPIP à l'époque lointaine ou je m'en servais.
Il faut utiliser la suggestion de template :
http://drupal.org/node/190815 (marque page :-) )

Pour prendre un exemple simple, pour la page d'accueil tu copie colle ton page.tpl.php de ton fichier de theme, et tu le renommes page.front.tpl.php et ce sera ton template pour la page d'accueil. voici deux autres exemple de suggestion qui te permettent de spécifier un type de page.tpl pour un node particulier ou pour le mode édition.

  1. page-node-edit.tpl.php
  2. page-node-1.tpl.php

Pour les nodes, tu peux les templater selon leur type de contenu également.

Pour créer un theme les 90% du départ son en fait très simple une fois qu'on a pigé : tout se passe dans page.tpl.php qui lui même appelle node.tpl.php
(attention, il faut sans doute vider le cache pour que ton nouveau template soit pris en compte sur drupal 6; il me semble que tu peux le faire manuellement dans site->performance->vider le cache mais je ne me souviens plus eaxtement.)

donc si tu veux partir de zéro, tu prends un theme quelconque , tu gardes les variables php mais tu fais ton propre html et ton propre css. Pour les finitions ça peut se compliquer un peu mais si y des questions on est là :-)

edit :
"pour ce qui est de son gabarit, peut-être que tu pourrais créer un "panel""

pour ma part je déconseille l'utilisation de panels pour usage de design, c'est une usine à gaz : si c'est uniquement pour du design, on peut obtenir strictement la même chose avec du html de base dans le template et des régions bien placées.

Bonjour,

je suis parvenu à intégrer ma page staique html dans le tmplate page.tpl.php, mais la difficulté que je rencontre est celle-ci:
Page.tpl.php appelle d'autres fichiers que je retrouve grace au module devel.

ma maquette a des sous blocs dans la partie centrale dont 2 infos cote à cote sur 3 lignes, Je ne sais pas n'arrive pas à créer une telle archi sur ma page d'acceuil.

Bref, quel module me permettra de créer des blocs de données dans ma partie centrale

Salut ginglo,

J'ai l'impression qu'on a le même soucis tous les deux :)
Je galère également actuellement pour la gestion d'une homepage et des templates de pages différents que peuvent avoir certaines maquettes que je reçois.

Pour ma part, j'ai également compris le principe de templating de la homepage : page-front.tpl.php.
Mais là où ça se complique, c'est sur l'administration des contenus de la homepage, notamment qd ces contenus sont spécifiquement des images (des vignettes d'accroche, des pubs, etc).
Car si j'ai tout suivi correctement jusque là, actuellement, j'ai créé :

  • - un nouveau type de contenu (ex : vignette_homepage_1) de type image [Super Drupal 7 de ce côté là :) et son intégration de CCK ]
  • - du contenu de type "vignette_homepage" contenant une image donc
  • - une vue qui va chercher ce contenu et me crée un bloc
  • - un template de bloc
  • - une configuration de "mon_theme.info" avec les régions par défaut (celles utilisées par page.tpl.php) + les régions de ma homepage.

Ensuite, en backend, j'affilie mes blocs de homepage dans les régions de la homepage.
Mais là où je ne suis pas ébahie devant Drupal, c'est cette page de configuration des blocs où l'on retrouve toutes les régions du site (homepage, page et autres templates spécifiques) et forcément tous les blocs du site...
Je pense qu'une administration de homepage (avec ses propres régions), aurait été la bienvenue et surtout bien plus ergonomique. Car une homepage, généralement, contient bcp de contenus administrables (et pas forcément que des articles, news, etc).

Après, il y a peu être une autre méthode, plus friendly user mais je n'ai pas encore trouvé... et il faut bien avouer, trouver de bonnes sources sur le templating expert, c'est pas franchement facile (en tout cas, je n'ai pas encore trouvé).

Bon courage à toi.
Je reste à l'écoute de ce topic au cas ou il y aurait de bonnes idées à prendre.