4. 31/05/2013
4Last Friday Talk @ M6Web
§ Drupal est un C.M.S. libre et open-
source (licence libre GPL)
§ C’est aussi un environnement de
développement grâce à son API
(Content Management Framework)
§ Ultra-flexible grâce aux milliers de
modules disponibles
§ Une communauté extrêmement active
§ Développé en PHP
Qu’est-ce que Drupal ?
5. 31/05/2013
5Last Friday Talk @ M6Web
Les origines de Drupal
§ Créateur : Dries Buytaert
§ Fin des années 1990 : étudiant à
l'Université d'Anvers, il entreprend de
créer un site de partage d'actualités
§ 2001 : Drupal devient un logiciel libre
§ 2005 : sortie de la version 4.6
§ 2008 : sortie de la version 6.0
§ 2009 : arrivée de « Features », un module
permettant d’augmenter
considérablement l’industrialisation
§ Janvier 2011 : sortie de la version 7.0
6. 31/05/2013
6Last Friday Talk @ M6Web
§ Nombreux évènements
communautaires annuels
Drupal aujourd’hui
§ Drupal 7 : sortie début 2011 (actuellement 7.22)
§ Drupal 8 prévu pour 2014
§ Des millions de sites basés sur Drupal
§ 22 000 modules (7500 début 2011)
§ 2,5 millions de comptes drupal.org créés (1M en 2011)
§ 26 000 développeurs actifs (4000 début 2011)
è son adoption partout dans le monde est en
croissance rapide
7. 31/05/2013
7Last Friday Talk @ M6Web
Serveur :
§ Apache (recommandé)
§ Nginx
§ ou Microsoft IIS
PHP : 5.3 recommandé (incl. PDO)
Base de données :
§ MySQL 5.x ou équivalent (MariaDB),
§ PostgreSQL >=8.3,
§ SQLite >= 3.3.7
§ Support + ou – expérimental de MongoDB, SQL
Server, Oracle
Pré-requis
9. 31/05/2013
9Last Friday Talk @ M6Web
Types de site
Drupal au coeur de la stratégie globale de
communication digitale :
§ site Web grand public
§ eCommerce
§ Social Networking
§ Intranet collaboratif / RSE
§ Web app
§ Application mobile
§ Intégration de systèmes métier (LDAP, Webservices,
…)
13. 31/05/2013
13Last Friday Talk @ M6Web
§ Core : fichiers du cœur de Drupal, à ne jamais modifier
§ Entité / Type de Contenu / Node
§ Taxonomie : système de catégorisation du contenu
§ Module : extension qui étend et modifie les
fonctionnalités du core de Drupal
§ Thème : aspect visuel du site
§ Blocs : éléments de contenus spécifiques, affichés dans
des régions du site
§ Régions : zones définies dans le thème contenant des
blocs
Terminologie Drupal
14. 31/05/2013
14Last Friday Talk @ M6Web
« There is a module for that »™
Aperçu des fonctionnalités
§ Référencement
§ i18n
§ Recherche (solR)
§ E-commerce
§ Réseaux sociaux
§ Multimédia
§ etc.
§ Types de contenu
§ Catégorisation
§ Commentaires
§ Blog
§ Forum
§ RSS
§ Newsletter
Et pour des besoins très personnalisés,
il « suffit » d’en développer un !
15. 31/05/2013
15Last Friday Talk @ M6Web
Notion de hameçon (hook)
§ Peut être comparé à des événements internes de
Drupal
§ Construction autour d’une convention de nommage
§ L’implémentation d’un hook permet de « s’attacher »
à ce qui se passe dans le reste de Drupal
§ Ex. : hook_node_delete() : un module implémentant ce
hook peut réaliser des opérations chaque fois qu’un node
est supprimé
§ Ex : hook_menu_alter() : altérer le contenu d’un menu
Modules & hooks
16. 31/05/2013
16Last Friday Talk @ M6Web
MODULES
§ Views
§ Token
§ Pathauto
§ Features
§ Context
§ Webform
§ Global Redirect
§ Backup and Migrate
§ Devel
§ …
Modules & APIs
APIs
§ Entity API
§ Hooks API
§ Form API
§ Field API
§ Database API
§ Search API
§ …
17. 31/05/2013
17Last Friday Talk @ M6Web
§ Permet de créer des listes de contenus
§ Gère les jointures
§ Plusieurs types de sorties possibles : page, bloc,
rss, rdf, xml, json
§ Rendu paramétrable
§ Gère les arguments
§ Gère les filtres
è C’est un des éléments clés de Drupal
Module Views
18. 31/05/2013
18Last Friday Talk @ M6Web
§ Moteur de template PHPTemplate
§ Possibilité de créer son thème à partir de zéro ou en
partant d’un thème existant
§ Niveau « débutant » : utiliser un thème contribué (plus de
1000 sont disponibles, dont certains « colorisables »)
§ Niveau « intermédiaire » : modifier un thème existant,
notamment en créant un sous-thème, qui va hériter du
thème parent
§ Niveau « avancé » : utiliser un starter-theme ou le créer
« from scratch »
Thèmes
20. 31/05/2013
20Last Friday Talk @ M6Web
Template suggestions
Template de base
block.tpl.php
Exemple de nommage de template pour les blocs
block--[region|[module|--delta]].tpl.php
Drupal choisit le template le + spécifique :
1. block--module--delta.tpl.php
2. block--module.tpl.php
3. block--region.tpl.php
4. block.tpl.php
21. 31/05/2013
21Last Friday Talk @ M6Web
Fonctions de preprocess
Chaque template peut avoir un « preprocess »
Les hooks preprocess permettent d’altérer les
variables accessibles dans le template.
Exemple, dans template.php :
mytheme_preprocess_page(&$variables)
{
$variables[‘raoul’]
=
‘test’;
}
è Dans page.tpl.php :
//
affichera
‘test’
sur
toutes
les
pages
print
$raoul;
22. 31/05/2013
22Last Friday Talk @ M6Web
§ Concept puissant et flexible de
structuration des différents
éléments de contenu d’un site
Drupal
§ La taxonomie repose sur :
§ des « termes »
§ des « vocabulaires » = groupe de
termes
§ Une taxonomie peut définir des
relations hiérarchiques entre les
termes afin de définir des
catégories et des sous-catégories
Taxonomie
23. 31/05/2013
23Last Friday Talk @ M6Web
§ Flexibilité : architecture ultra-modulaire et périmètre
fonctionnel très large
§ SEO-friendly
§ Fiabilité (cf. les milliers de références)
§ Sécurité
§ Communauté
§ Approche full open-source
Les points forts de Drupal
24. 31/05/2013
24Last Friday Talk @ M6Web
§ Beaucoup (trop ?) de
modules
§ Courbe d'apprentissage non
négligeable
§ Pas de modèle objet
§ Problèmes potentiels de
performances si mal conçu
Les points faibles
30. 31/05/2013
30Last Friday Talk @ M6Web
Features est une API
permettant de packager des
paramètres « exportables » :
§ Types de contenus
§ Views
§ Permissions
§ Roles
§ Taxonomy
§ Blocs
§ Contextes
§ Menus
§ Presets d’image…
Le paramétrage peut ainsi être
packagé, versionné, déployé.
Industrialisation avec Features
31. 31/05/2013
31Last Friday Talk @ M6Web
Solution 1 : Feeds
§ un moteur générique d’aggrégation de données
§ Nombreux format d’import : CSV, RSS, OPML,
PubSubHubbub
§ Mapping des champs en BO
§ Module feeds_tamper : filtre sur les données avant
import
§ Intégré à Batch API (mais performances limitées si
gros volume)
Import de données 1/2
32. 31/05/2013
32Last Friday Talk @ M6Web
Solution 2 : Migrate
§ Formats d’entrées : SQL, CSV, XML, JSON, etc.
§ Gestion des structures de données complexes
(gestion des dépendances)
§ Intégré à Drush (pour intégrer la migration dans un
script de déploiement par ex.)
§ Très performant
§ Mais presque pas d’UI (définition des classes
Migration dans un module custom)
Import de données 2/2
33. 31/05/2013
33Last Friday Talk @ M6Web
Plusieurs solutions
1. Installations séparées, gérées par ex. avec Aegir
2. Installations séparées, mais configuration gérée via
Features
3. Architecture Multi-sites : 1 seul Drupal, n bases de
données
4. Module Domain Access : 1 seul Drupal, 1 seule base de
données, sur n noms de domaine
+ d’infos sur http://www.palantir.net/blog/multi-headed-drupal
Multi-sites & Usines à sites
37. 31/05/2013
37Last Friday Talk @ M6Web
Drupal 8
Sortie de Drupal 8 prévue fin 2013
MAIS
Il faudra attendre fin 2014 pour avoir une base
solide de modules contribués portés en D8
38. 31/05/2013
38Last Friday Talk @ M6Web
Principales avancées de Drupal 8
§ Twig comme moteur de template
§ HTML5, « Mobile First »
§ WYSIWYG, CKEditor et In-Place Editing
§ Amélioration de l’i18n
§ Gestion de la configuration via fichiers YAML =>
processus de déploiements facilités
§ Symfony 2 :
§ injection de dépendance
§ mise en cache d'une page Web par blocs avec le composant ESI
de Symfony
§ Web Services gérés désormais via Symfony
39. 31/05/2013
39Last Friday Talk @ M6Web
Drupal est un C.M.S. gratuit reposant
sur une base communautaire solide
Sa flexibilité́ lui permet de répondre
aux besoins de tous les types de site
Son architecture évolutive permet
l'enrichissement fonctionnel au fil
de l’évolution de vos besoins
Synthèse
40. 31/05/2013
40Last Friday Talk @ M6Web
Des questions ?
Clever Age
29 rue Flandin 69003 Lyon
www.clever-age.com
04 78 89 46 45
commercial@clever-age.com
technique@clever-age.com