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

Post on 21-Jun-2015

2.885 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Drupal Nantes

Meetup Drupal Nantes - 25 Mai 2011

http://twitter.com/drupalnantes

http://nantes.drupalgardens.com

Drupal Nantes Meetups

Meetup Drupal Nantes - 25 Mai 2011

1 fois par mois, à la Cantine

Sponsors, votre logo ici !

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

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

Attention !

Meetup Drupal Nantes - 25 Mai 2011

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

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

Structure d'un theme

Meetup Drupal Nantes - 25 Mai 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)

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')

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, ...)

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

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

Meetup Drupal Nantes - 25 Mai 2011

PAUSE

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

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 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>

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● ...

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

page.tpl.php

Contenu de la page

Region 'sidebar'Javascript

CSS

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

Fichiers templates (tpl)

Meetup Drupal Nantes - 25 Mai 2011

node.tpl.php

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

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'][ ]

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

Meetup Drupal Nantes - 25 Mai 2011

PAUSE

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

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

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

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 )

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

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

Meetup Drupal Nantes - 25 Mai 2011

PAUSE

Template de views

Meetup Drupal Nantes - 25 Mai 2011

Meetup Drupal Nantes - 25 Mai 2011

Types de templates views

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, ...)

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 ...

top related