meetup drupal nantes: le theming (25/05/2011)

35
Drupal Nantes Meetup Drupal Nantes - 25 Mai 2011 http://twitter.com/drupalnantes http://nantes.drupalgardens.com

Upload: olivierpierre

Post on 21-Jun-2015

2.885 views

Category:

Technology


2 download

DESCRIPTION

http://nantes.drupalgardens.com/meetup-25-mai-2011 Présentation lors du meetup Drupal à Nantes le Mercredi 25 Mai 2011

TRANSCRIPT

Page 1: Meetup Drupal Nantes: Le Theming (25/05/2011)

Drupal Nantes

Meetup Drupal Nantes - 25 Mai 2011

http://twitter.com/drupalnantes

http://nantes.drupalgardens.com

Page 2: Meetup Drupal Nantes: Le Theming (25/05/2011)

Drupal Nantes Meetups

Meetup Drupal Nantes - 25 Mai 2011

1 fois par mois, à la Cantine

Sponsors, votre logo ici !

Page 3: Meetup Drupal Nantes: Le Theming (25/05/2011)

Le Theming

Meetup Drupal Nantes - 25 Mai 2011

Comprendre le fonctionnement d'un theme

● Un peu de théorie

● Une démo

● Échanges et discussions

Page 4: Meetup Drupal Nantes: Le Theming (25/05/2011)

Le Theming

Meetup Drupal Nantes - 25 Mai 2011

Structure d'un theme

Fichier .info

Les fichiers de template (*.tpl.php)

Fichiers template.php & theme-settings.php

Fonctions hook_preprocessTemplate de views

Page 5: Meetup Drupal Nantes: Le Theming (25/05/2011)

Attention !

Meetup Drupal Nantes - 25 Mai 2011

Notre theme s'appelera choco jusqu'a la fin de la présentation

Page 6: Meetup Drupal Nantes: Le Theming (25/05/2011)

Structure d'un theme

Meetup Drupal Nantes - 25 Mai 2011

choco.info : Définition du themeFichiers tpl : templates (html)Fichiers css / js / imagestemplate.php : fonctions du themetheme-settings.php : Configuration du theme

Le dossier du theme doit être placé dans:sites/all/themes/chocoousites/default/themes/choco

Page 7: Meetup Drupal Nantes: Le Theming (25/05/2011)

Structure d'un theme

Meetup Drupal Nantes - 25 Mai 2011

Page 8: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichier .info

Meetup Drupal Nantes - 25 Mai 2011

Documentation: http://drupal.org/node/171205

Infos obligatoires

● name : le nom du theme

● core : version de drupal (6.x ou 7.x)

● engine : moteur de template (généralement phptemplate)

Page 9: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichier .info

Meetup Drupal Nantes - 25 Mai 2011

Infos complementaires (1/2)

● description : description du theme

screenshot : aperçu du theme

● base theme : theme parent ('starter theme')

Page 10: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichier .info

Meetup Drupal Nantes - 25 Mai 2011

Infos complementaires (2/2)

● regions : regions du theme (header, sidebar, ...)

● stylesheets : Feuilles de styles CSS (screen, print, all)

● scripts : Fichiers Javascript

● features : fonctionnalités du theme (slogan, logo, ...)

Page 11: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers CSS

Meetup Drupal Nantes - 25 Mai 2011

Autant que vous voulez !

Le fichier.info permet de préciser le media (screen, print, ...)

Exemple:stylesheets[screen][] = css/typography.cssstylesheets[screen][] = css/blocks.cssstylesheet[print][] = css/print.css

CSS Classique, rien de spécifique à Drupal

Page 12: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers Javascript

Meetup Drupal Nantes - 25 Mai 2011

Drupal embarque jQuery par defaut● Drupal6: 1.2.6 (update vers 1.3.2)● Drupal7: 1.4.4 (update vers 1.5.2)

Exemple:scripts[] = cs/main.js

Utilisation des behaviors (non couvert par ce meetup!)

Documentation:http://www.slideshare.net/mattfarina/intro-to-jquery-in-drupalhttp://mydrupalblog.lhmdesign.com/drupal-theming-jquery-basics-inc-drupal-behaviors

Page 13: Meetup Drupal Nantes: Le Theming (25/05/2011)

Meetup Drupal Nantes - 25 Mai 2011

PAUSE

Page 14: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

Définir la structure <html> de votre theme

Très peu de php ( juste <?php print $ma_variable; ?> )

Syntaxe phptemplate : <?php if(true): print $ma_variable; endif; ?>

Exemples: ● page.tpl.php : balisage global de la page● node.tpl.php : balisage d'un node (full/teaser)● block.tpl.php : balisage d'un block

Page 15: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

Page 16: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

page.tpl.php (http://bit.ly/d6-page-tpl & http://bit.ly/d7-page-tpl)

Variables importantes (1/2)

● $head : balises <meta> (encodage, RSS, favicon, ...)● $head_title : balise <title>● $styles : CSS● $scripts : Javascript● $messages : Messages d'info/erreur Drupal● $closure : rien ne doit être placé à la suite de cette

variable à part </body></html>

Page 17: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

page.tpl.php (http://bit.ly/d6-page-tpl & http://bit.ly/d7-page-tpl)

Variables importantes (2/2)

● $logo : Logo● $site_name : Nom du site● $title : Titre de la page● $content : Contenu de la page (node, view, form, ...)● $sidebar, $header... : Contenu des régions définies

dans choco.info● ...

Page 18: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

page.tpl.php

Contenu de la page

Region 'sidebar'Javascript

CSS

Page 19: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

node.tpl.php (http://bit.ly/d6-node-tpl & http://bit.ly/d7-node-tpl)

Variables importantes

● $title : titre du node● $content : contenu du node● $submitted : information de publication● $teaser / $page : information d'affichage● $node : l'Objet node

Page 20: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

node.tpl.php

Page 21: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

Surcharge de templates pour page.tpl (http://drupal.org/node/1089662)

Exemple pour l'affichage du node 132, de type 'article' (monsite.com/node/132)

Drupal6 va rechercher les fichiers tpl suivants:page-node-132.tpl.phppage-node.tpl.phppage.tpl.php

Exemple pour le formulaire de contact (monsite.com/contact)page-contact.tpl.phppage.tpl.php

Page 22: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

Surcharge des fichiers de templates pour node.tpl (http://drupal.org/node/1089662)

Exemple pour le node 132, de type 'article'

Drupal va rechercher les fichiers tpl suivants:● node-article.tpl.php (D6) | node--article.tpl.php (D7)● node.tpl.php

Possibilité d'ajouter d'autres suggestions avec le hook_preprocess_node($variables) : dans le tableau $variables['template_files'][ ]

Page 23: Meetup Drupal Nantes: Le Theming (25/05/2011)

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

Cas des champs cck

Fichier content-field.tpl.php (sites/all/modules/cck/theme)

Surcharge : copier/coller ce fichier dans votre theme.

Même principe de 'suggestions' que le core de Drupal● content-field-fieldname-contentType.tpl.php● content-field-contentType.tpl.php● content-field-fieldname.tpl.php● content-field.tpl.php

Page 24: Meetup Drupal Nantes: Le Theming (25/05/2011)

Meetup Drupal Nantes - 25 Mai 2011

PAUSE

Page 25: Meetup Drupal Nantes: Le Theming (25/05/2011)

theme-settings.php

Meetup Drupal Nantes - 25 Mai 2011

Permet d'écrire une interface de configuration du thème (Construction du site > Themes > Configurer)

Utilisation de la Form API ( = Code!)http://bit.ly/drupal6-form-apihttp://bit.ly/drupal7-form-api

Page de documentation : http://drupal.org/node/177868

Page 26: Meetup Drupal Nantes: Le Theming (25/05/2011)

template.php

Meetup Drupal Nantes - 25 Mai 2011

Déclaration de fonctions de theme (hook_theme)

Surcharge des fonctions de theme existantes

Implémentation des hooks _preprocess

Page 27: Meetup Drupal Nantes: Le Theming (25/05/2011)

Surcharge de fonctions

Meetup Drupal Nantes - 25 Mai 2011

Drupal utilise des fonctions de theme, commetheme_node_submitted() pour afficher les informations de publication d'un node.

La surchage sera donc choco_node_submitted(), à placer dans le fichier template.php

Le module devel_themer permet de trouver quelle fonction de theme est utilisée.

Documentation : http://bit.ly/d6-themable

Page 28: Meetup Drupal Nantes: Le Theming (25/05/2011)

Hooks _preprocess

Meetup Drupal Nantes - 25 Mai 2011

Modifier et préparer les variables présentes dans les tplExemple: Template page.tpl.php => hook_preprocess_page

template.phpfunction choco_preprocess_page(&$variables) { $variables['ma_nouvelle_variable'] = "Hmm, les chocos";}

page.tpl.php<?php print $ma_nouvelle_variable; ?>

( Documentation : http://drupal.org/node/223430 )

Page 29: Meetup Drupal Nantes: Le Theming (25/05/2011)

Hooks _preprocess

Meetup Drupal Nantes - 25 Mai 2011

( Documentation : http://drupal.org/files/theme_flow_6_1.pdf )

Ordre d’exécution des fonctions des preprocess

● Drupal Core○ template_preprocess○ template_preprocess_hook

● Modules○ NomDuModule_preprocess○ NomDuModule_preprocess_hook

● Themes○ NomDuTheme_preprocess○ NomDuModule_preprocess_hook

Page 30: Meetup Drupal Nantes: Le Theming (25/05/2011)

Notion de 'base theme'

Meetup Drupal Nantes - 25 Mai 2011

Base theme = framework

Héritage d'une solide base de travail

Exemples● Zen● Omega● Fusion

Page 31: Meetup Drupal Nantes: Le Theming (25/05/2011)

Meetup Drupal Nantes - 25 Mai 2011

PAUSE

Page 32: Meetup Drupal Nantes: Le Theming (25/05/2011)

Template de views

Meetup Drupal Nantes - 25 Mai 2011

Page 33: Meetup Drupal Nantes: Le Theming (25/05/2011)

Meetup Drupal Nantes - 25 Mai 2011

Types de templates views

Page 34: Meetup Drupal Nantes: Le Theming (25/05/2011)

Meetup Drupal Nantes - 25 Mai 2011

Types de templates views

Même principe de suggestions que le core:

● views-view.tpl.php● views-view--maVue.tpl.php● views-view--displayType.tpl.php● views-view--maVue--displayType.tpl.php

( également valable pour les autres templates de views: views-view--unformated.tpl, views-view--fields.tpl, ...)

Page 35: Meetup Drupal Nantes: Le Theming (25/05/2011)

Ressources

Meetup Drupal Nantes - 25 Mai 2011

http://drupal.org/documentation/themeCette presentation sur http://nantes.drupalgardens.com

OutilsDevel : http://drupal.org/project/develDevel_themer : http://drupal.org/project/devel_themer

ReflexeVider le cache, vider le cache, vider le cache, vider le cache, vider le cache, vider le cache, vider le cache, vider le cache, vider le cache ...