A votre avis, quel est le meilleur moyen de créer son template ?

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.

Hello
Drupal (même si j'ai échoué à le mettre en français) semble convenir à mes besoins (notamment la gestion multi-sites), je vais donc attaquer la mise en forme du site.
Comment vous en êtes vous pris ?

Forum : 

Je n'ai pas encore fait de template pour drupal, mais la mailleur chose à faire est de se baser sur un thème proche de ce que l'on souhaite faire.
Sinon, comme je l'ai expliquer dans un précédent message, un template sert à "écraser" la définition d'une fonction de drupal qui sert à afficher un contenu. Par exemple, il existe une fonction theme_forum_display qui sert à afficher les forums. Et bien tu peux créer un template nommé 'forum_display', et ce que tu mettra dedans écrasera ce qui a été défini dans la fonction theme_forum_display

Il faut savoir que l'appel à la fonction theme_page affichera la page html entière, alors que les autres renvoient le code HTML correspondant à la partie définie.

Ce que tu peux faire, c'est refaire une installation de drupal, et supprimer le répertoire 'theme', tu verras alors drupal s'afficher tel qu'il a été défini dans les différentes fonctions theme_*
Prends la fonction [url=http://drupaldocs.org/api/4.6/function/theme_page]theme_page[/url], et regarde comment elle est faite :

<?php
function theme_page($content) {
  
$output = "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n";
  
$output .= '<html xmlns="http://www.w3.org/1999/xhtml">';
  
$output .= '<head>';
  
$output .= ' <title>'. (drupal_get_title() ? strip_tags(drupal_get_title()) : variable_get('site_name', 'drupal')) .'</title>';
  
$output .= drupal_get_html_head();
  
$output .= theme_get_styles();
 
  
$output .= ' </head>';
  
$output .= ' <body style="background-color: #fff; color: #000;"'. theme('onload_attribute'). '">';
  
$output .= '<table border="0" cellspacing="4" cellpadding="4"><tr><td style="vertical-align: top; width: 170px;">';
 
  
$output .= theme('blocks', 'all');
  
$output .= '</td><td style="vertical-align: top;">';
 
  
$output .= theme('breadcrumb', drupal_get_breadcrumb());
  
$output .= '<h1>' . drupal_get_title() . '</h1>';
 
   if (
$tabs = theme('menu_local_tasks')) {
   
$output .= $tabs;
   }
 
   if (
$help = menu_get_active_help()) {
    
$output .= '<small>'. $help .'</small><hr />';
   }
 
  
$output .= theme_status_messages();
 
  
$output .= "\n<!-- begin content -->\n";
  
$output .= $content;
  
$output .= "\n<!-- end content -->\n";
 
  
$output .= '</td></tr></table>';
  
$output .= theme_closure();
  
$output .= '</body></html>';
 
   return
$output;
 }
?>

Tu peux créer un template 'page' et tu mets exactement le contenu de la variable $output. Ensuite tu y apporte des modifications, et par magie ton thème prendra forme. Dans cet exemple, on voit qu'il font appel à une fonction theme('blocks', 'all'), qui va s'occuper de l'affichage des blocs. Cette fonction va appeler la fonction theme_blocks. Par conséquent, si tu souhaites faire appel à une fonction 'theme_nom' tu devras le faire en utilisant theme('nom', 'contenu')

La liste des fonctions themable :
[url=http://drupaldocs.org/api/4.6/group/themeable]Themeable functions[/url]

Bonjour,
Sur les conseils de mon meilleur ami, je tente l'expérience drupal, et je suis séduit !
Maintenant que j'ai vu un peu comment se gère le contenu...j'aimerais voir si la création d'un thème est facile, et franchement, j'aurais besoin de vos lumières à ce sujet.

Je suis développeur Web et j'ai l'hébitude de conceptualiser les sites selon une arborescence de contenu, dont découle une arborescence de fichiers et de répertoires ayant des noms explicites pour optimiser entre autre le référencement et l'ergonomie du site.

Là dans drupal, apparemment, il n'y a qu'une seule page qui s'occupe d'afficher toutes les pages du site, de n'importe quelle rubrique...

C'est pourquoi j'ai du mal à voir comment on s'y prend pour faire un site de A à Z en drupal. C'est une doc que j'aurais aimé trouver sur le site, mais qui ne figure nulle part apparemment.

Est-ce que (pour un thème fait en phptemplate) la page page.tpl.php doit donc prévoir l'affichage en fonction de tous les cas possibles, ou bien peut-on tout de même organiser ses pages de façon plus classique en créant des répertoires et une page pour chaque rubrique...

En gros : comment on doit s'y prendre ?
Y a-t-il des tutoriaux bien fait à ce sujet ? Depuis ce week-end j'épluche tous les sites drupal mais rien ne m'a vraiment éclairé jusqu'à maintenant.

alors voilà...j'espère que qlq1 pourra me donner une feuille de route, une procédure à suivre pour gérer son contenu comme il faut et faire un thème en fonction de ce contenu...

J'en profite pour signaler que je ne veux pas faire un blog !
Il y aurait une rubrique de ce genre, mais le site que je souhaite monter est un site plutôt institutionnel d'une entreprise avec des rubriques classiques du genre Qui sommes-nous ?, nos travaux, nous contacer, un espace blog pourquoi pas, et puis d'autres à venir, mais je pense que la base est là..

Je vous remercie d'avance.

Je suis développeur Web et j'ai l'hébitude de conceptualiser les sites selon une arborescence de contenu, dont découle une arborescence de fichiers et de répertoires ayant des noms explicites pour optimiser entre autre le référencement et l'ergonomie du site.

Tout a fait, sauf que la tu es en train de decrire un site statique.

Là dans drupal, apparemment, il n'y a qu'une seule page qui s'occupe d'afficher toutes les pages du site, de n'importe quelle rubrique...

En fait il n'y pas pas vraiment qu'une seule page et c la que rentre en jeu toute la logique de Drupal.
Si tu parles de la page index.php, certes elle est toute seule, mais elle est le centre du site et permet de gerer tous les appels aux modules.
Si tu parles du template, c'etait vrai avec xtemplate, mais maintenant avec phpTemplate, tu peux creer autant de design que tu le souhaites.
Un exemple : http://progressive.org/ ca c la page de garde.
http://progressive.org/mag_wx112905 ca c une page de leur magazine
http://progressive.org/radio_lydersen05 ca la radio
Tu notes le changement de design ;)
A priori ca a ete cree avec divers module adapte et surtout une bonne dose de CSS http://drupal.org/node/37359#comment-68661

Bref a mon avis il faut que tu te plonges dans le handbook, que tu commences a bien comprendre la logique des themes, prendre un exemple tout fait pour voir les differences apportees et une fois tout ca un peu plus clair, ne pas hesiter a poser des questions precises sur le forum.

Je te laisse la doc des themes : http://drupal.org/node/509

Bon courage.

Est-ce que (pour un thème fait en phptemplate) la page page.tpl.php doit donc prévoir l'affichage en fonction de tous les cas possibles, ou bien peut-on tout de même organiser ses pages de façon plus classique en créant des répertoires et une page pour chaque rubrique...

avec le module sections !

memme aussi, la version 4.7 estbeaucoup mieux pout les themes. il vientra avec plusieurs regions.

a+

Martin GERSBACH
www.gersbach.net
Paris, FRANCE

hola,

pour moi -comme developpeur de themes aussi- la meilleur façon (le +simple) de créer un theme est la suivante :

1.- se baser sur PHPTemplate theme engine (a partir de la version 4.7 il viendra par default)
2.- l'edition des fichiers .tpl est facile : avec le Dreamweaver aussi !
3.- voila !

Là dans drupal, apparemment, il n'y a qu'une seule page qui s'occupe d'afficher toutes les pages du site, de n'importe quelle rubrique...

solution :
utiliser le drupal 4.5 front_page module
ou (beaucoup mieux): le module Sections
cet solution est ideal pour les sites en plusieurs langues avec le module Internationalization
faire 2 themes differents et mettre un sur le section

ici les exemples que j'ai fait pour vous : exemple pour Haddock post

pd : malheuresment je pas fini mon manual 'Diseño de themes con TopStyle (versión alfa)' en espagnol. apres je veut le faire en français. :D

a+

Martin GERSBACH
www.gersbach.net
Paris, FRANCE