Présentation de Drupal 8
Forum PHP - Montrouge
22 novembre 2013
Léon Cros @chipway

.

Forum PHP 2013

.
Léon Cros
Communauté
Drupal
VP ADFF
Chipway
@chipway / chipway-drupal
.

Forum PHP 2013

.
Chipway : Spécialiste
• Formations Drupal 6, 7, ...
–
–
–
–
–

Webmasters et administrateurs
Développeurs
Designers et intégrateurs
Chefs de projet Drupal
… initiation à avancé

• Accompagnement/Coaching
• Développement
• Audit, Conseil, AMOA, ...
Drupal CMS & CMF reconnu

.

.

.

4
Qui êtes-vous ?
•
•
•
•
•

Développeur PHP ?
Chef de projet ?
Admin. système, réseaux, DevOp ?
Autre côté technique ?
Non technicien ?
Vous et Drupal ?
• Qui connait Drupal ?

• Qui connait Symfony 2 ?
Nouveautés Drupal 8

.

Forum PHP 2013

7
Un grand
Pas avec
Drupal 8 !
Faire un site
Sans
Développeur
?
Un « site » sans Développeur ?
•
•
•
•

Core facile à installer
Complet (prêt à utiliser)
Dans ma langue / mes langues
Facile à utiliser

• Êtes-vous un cliqueur fou ?
En français
Tout de suite !
Choix plus
explicite !
Approche Drupal : Contenus →

Structures de contenus
Approche Drupal : Contenus →

Requêtes et Mise en forme des résultats
Structures de contenus
Approche Drupal : Contenus →

Affichage des blocs générés
Requêtes et Mise en forme des résultats
Structures de contenus
Approche Drupal : Contenus →
Page Web

Affichage des blocs générés
Requêtes et Mise en forme des résultats
Structures de contenus
Approche Drupal : Contenus →
Page Web
Services web
Affichage des blocs générés
Requêtes et Mise en forme des résultats
Structures de contenus
Structurer : Nouveaux champs
•
•
•
•
•
•
•

Entity reference
Date
Lien
E-mail
Téléphone
Photo
User picture → champ
Structurer : Field UI
•
•
•
•
•
•
•

Modes d'affichage (vue, formulaire...)
Aide dans le champ (placeholder, blur)
Cardinalité sur mesure
Préfixe de champ
CRUD amélioré
Validation séparée du formulaire (s2 validator)
Multiples téléversements (uploads)
Structurer : Field UI
• Field API entièrement réécrit
• Entités « fieldables » → « extensibles »
• Champ non partagé entre types d'entités
– Stockage / type d'entité
– Même nom dans types d'entité <>
• Accès simplifié aux champs, ex:
– $node->field_foo->value
Requête & Affichage : Views
•
•
•
•
•
•

Qui ne connait pas Views ?
Requête sur tous types d'entités
Filtres
Tris
Contextes
Affichages : Listes ..., grilles, slideshows
menus, ...
Requête & Affichage : Views
•
•
•
•
•
•
•

Dans le Core
Drupal 8 immédiatement utilisable
Page d'accueil
Administration des contenus, utilisateurs
Gestion des fichiers
Responsive web
+ sortie → services web
Page web : Affichage en Blocs
Tout est BLOC
●
Simplification
●
Multiples instances
●
Entités extensibles
●
Révisions
●
Support ESI
●
IHM Admin. Amélioré
●
Contexte
Moteur de Template

• xxxx
• ...
TWIG
•
•
•
•
•
•
•
•

Connu, documenté
Moins de templates / « Blocs Twig »
Facile
Plus Sécurisé que PHPTemplate
Extensible
Très rapide
Bonne intégration IDEs
Utilisé ailleurs : python, Ruby, ...
Parlez-vous TWIG ?
• Template, ex de nom : node.html.twig
• Commentaires avec variables disponibles
• Imprimer une variable : {{ title }}
• Plus compliqué : {{ content.field.image }}
• Commentaire {# @todo ... my comment here #}
• Test
• {% if title %}
• <h3>{{{ title }}</h3>
• {% endif %}
• Plus fort: partie personnalisée par autre template
•

{% block toto %}

•

que la partie différente !
Gestion des Assets
Stylesheets, CSS and js <> images

• Drupal 7 :
•
•
•
•

Fichier Theme.info
hook_library_info()
#attached
drupal_add_css(), drupal_add_js()

•
•
•

Jquery.js lourd
Caching
Opaque

• Inconvénients :
Gestion des Assets D8
Assetic

•
•
•
•
•

Librairie Symfony2
Assets
Filters
AssetBag
(Thème D7 : Sasson v3)
Mobile

Mobiles
Mobile en D8 : Comment ?
●

Web Services

●

Responsive Design

●

HTML 5
●
éléments (picture, téléphone)

●

Administration Mobile

●

IE <= 8

.

Forum PHP 2013

32
32
Elements form. HTML5
$form['telephone'] = array(
'#type' => 'tel',
'#title' => t('Phone'),
);
$form['website'] = array(
'#type' => 'url',
'#title' => t('Website'),
);
$form['email'] = array(
'#type' => 'email',
'#title' => t('Email'),
); $form['tickets'] = array(
'#type' => 'number',
'#title' => t('Tickets required'),
);
Performance Front-end
●

Javascript

●

Jquery 2.0 + chargé si besoin

●

CSS avec SMACSS
– Scalable and Modular Architecture for CSS

●

Images adaptatives

●

Assetic (CSS, JS)

.

Forum PHP 2013

34
34
Drupal 8 plus facile : Editeur
• CKEditor 4 (non exclusif)
• Utilisable dès l'installation du Core
• Intégration complète avec formats de texte
– Cliquer/déposer boutons + config F.T.
• Téléversement d'image intégré
• Légende
• Intégré avec module breakpoint
• Edition inline (quick edit)
Editeur de Texte
●

.

Forum PHP 2013

36
36
Editeur de Texte
●

.

Forum PHP 2013

37
37
Editeur de Texte
●

.

Forum PHP 2013

38
38
Editeur de Texte
●

Bouton image + téléverser

.

Forum PHP 2013

39
39
Edition directe

Quick edit
Edition directe

Quick edit
Edition directe
Multilingue ?
I speak
english !

Je parle
français !

.

Forum PHP 2013

43
43
Multilingue
I speak
english !

Je parle
français !
Se habla
espanol !

.

Я говорю
на
русском !

Forum PHP 2013

44
44
Drupal 8 : MultiLingue
4 piliers

Langues

Interface

Contenu Configuration
Langues
Choix dès l'installation
●
Supprimer anglais ;)
●
Visibilité des blocs
●
Langue dans Views
●
Configuration souple
●
Affectation + large
●

●
●

Entités, Vues, Alias, Infos du site
Non affecté <> non applicable

Détection améliorée
●
Translitération
●
Traduction Interface
Traduire en anglais ;)
●
Nouvel interface + simple
●

●

pluriel

Suivi traductions Perso.
●
Import : Timeouts
●
Dossier centralisé
●
Mise à jour auto depuis
localize.drupal.org
●
Module séparé
●
Traduction du Contenu
Tous types d'entités
●
Configuration dynamique /
bundle / champ
●
Index recherche / langue
●
API de recherche
●
Support API node access
●
Traduction Configuration
Onglet traduction
●
Langue / fichier de config
●
Config supporte schema
●
Pour toute config
●
UI pour seul Core
●
UI amélioré / contrib
●
Services Web : REST
•
•
•
•
•
•
•
•
•
•
•
•
.

Inter-machines
Modules REST + Serialization + HAL
Formats de base JSON ou XML
Méthodes HTTP : POST, GET, PATCH, DELETE
Types de média json : json, hal+json
URIs : GET /node/1, GET /entity/node/1
Link Relations
Richardson Maturity Model : niveau 2. 3 @todo
Profite du nouvel Entity API, de Views
Accès / Cookies + token
← Serialize <> Normalize →
Extensible
Forum PHP 2013

50
50
Déploiement des Configurations

Sans CMI
Déploiement des Configurations

Principe CMI
ALERT!

ALERT!

Important
announcement
about
something.

Important
announcement
about
something.
Configuration : <> contenu

• Paramètres
• Types de contenus
• Champs
• Vues
• Styles d'mages
• Permissions, Rôles
•…
Configuration en D8
Configuration stockée en fichiers

• modifs via l'interface admin
•

écrites directement dans fichier yml

• format populaire YAML
• facile à lire / « écrire »
• Entités de configuration
Ex : search.settings.yml
active_modules:
- node
- user
and_or_limit: '7'
default_module: node
index:
cron_limit: '100'
overlap_cjk: '1'
minimum_word_size: '3'
tag_weights:
h1: '25'
h2: '18'
H3: '15'
Active <> Staging

.
Active <> Staging

.
Configuration Management Interface
Règle d'or :
« Ne hackez jamais le core ! …
ou Dries tue un chaton»

« Ne hackez pas votre configuration active ! » *

* Alex Pott, Core committer and CMI maintainer
.

Forum PHP 2013

58
58
Architecture technique
• > 500 lignes dans CHANGELOG.txt
• 24 APIs nouveaux ou modifiés
• Plugins (← hooks)
•
•
•
•
•
•

Entity API dans Core + amélioré
CMI
Routage
Services
Objets Formulaires
...
Révolution POO
Il est temps
de passer
vraiment à
la POO !
This guy killed Procedural
Programming in Drupal
Révolution POO
PHP
Objet

Procédural
Librairie PHP ?
Composants Symfony

Pourquoi Symfony2 ?
« Nouvelle » approche :
Fièrement trouvé ailleurs
Composants Symfony2 utilisés
•
•
•
•
•
•
•
•

.

HttpFoundation
HttpKernel
Injection de dépendances
Event dispatcher
Routage
Serializer
Validator
Yaml

Forum PHP 2013

63
63
Améliorations diverses
• PHPUnit accélère les tests
• Module Tour
– Mieux que help

• Support ESI/CSI/SSI p. cache
• Amélioration API fichiers/médias
• Dossier Core/
Synthèse

Améliorations Drupal 8
par profil

© Chipway 2009-2011

Forum PHP 2013

65
Intégrateurs / Assembleurs
Utilisation de Schema.org (RDF)
●
Services web REST
●
Blocs
●
Editeurs
●
Gestion des changements de configuration
●
UUID
●
Tour (help)
●
Designers / Thémeurs
Twig
●
Backbone.js
●
Assetic
●
Javascript accessibility Features
●
Jquery 2.0
●
CSS Coding Standards
●
Responsive Web Design
●
HTML5
●

drupal_add_css, drupal_add_js, drupal_set_title,
drupal_set_breadcrumb
●
Développeurs / Codeurs
POO
●
Composants Symfony2 (voir au-dessus)
●
Symfony CMF
●
Doctrine annotations
●
Composer
●
Namespaces & PSR-0 → 4
●
Services Symfony
●
Développeurs / Codeurs
YAML
●
PHPUnit (simpletest out en D9)
●
Nouvelles librairies externes
●
Guzzle (drupal_http_request)
●
EasyRDF (parsing RDF)
●
Zend_Feed (Feeds)
●
Drupal 8 + difficile : Développer
●

Programmation orientée Objet (POO)

●

Symfony2

●

Plus difficile ? Ou plus simple ?

●

Déconstruire & reconstuire ?

.

Forum PHP 2013

70
70
Synthèse Drupal 8 - Core
 Mobile / Responsive
 Editeur disponible dès l'installation
 Multilingue
 Séparation Configuration / Contenu
 Theming plus facile/ouvert
 Tout est Bloc
 Services web dans le Core
 Cycle développement → Production géré
 Et OOP !
.

Forum PHP 2013

71
71
Conclusion : Drupal 8 c'est plus
 Harmonisé / simplifié / mieux intégré
 Modernisé / Etat de l'art Dev PHP
 Généralisé (mobiles, services...)
 Localisé (langues, traductions)
 Professionnalisé et Ouvert aux nouveaux
 Sécurisé
 « Accéléré »
 Plus facile à Adopter
.

Forum PHP 2013

72
72
Planning Drupal 8
Gel du
Code

Début
Développement
10 Mar 2011

5 Jan 2011
Drupal
7.0

1 Juil 2013

17 Fév 2013
Gel des
Fonctionnalités

S2 2014 ?
Drupal
8.0
Remerciements
Slides :

Drupal :

●
Dries
Angela “webchick” Byron
●
●
Contributeurs
Kristof De Jaeger
●
●
Communauté
Jen Lampton
●
Dries Buytaert
●
Gábor Hojtsy
Déjà > 1600 contributeurs!
●
Larry Garfield
●
Jingsheng Wang
●
Christopher Skene
●
Boris Gordon

●
Merci de
votre attention
Questions ?
Vos retours sur https://joind.in/9369
@chipway

.

lcros@chipway.com

Forum PHP 2013

75

Conference drupal 8 au Forum PHP 2013 à Paris

  • 1.
    Présentation de Drupal8 Forum PHP - Montrouge 22 novembre 2013 Léon Cros @chipway . Forum PHP 2013 .
  • 2.
    Léon Cros Communauté Drupal VP ADFF Chipway @chipway/ chipway-drupal . Forum PHP 2013 .
  • 3.
    Chipway : Spécialiste •Formations Drupal 6, 7, ... – – – – – Webmasters et administrateurs Développeurs Designers et intégrateurs Chefs de projet Drupal … initiation à avancé • Accompagnement/Coaching • Développement • Audit, Conseil, AMOA, ...
  • 4.
    Drupal CMS &CMF reconnu . . . 4
  • 5.
    Qui êtes-vous ? • • • • • DéveloppeurPHP ? Chef de projet ? Admin. système, réseaux, DevOp ? Autre côté technique ? Non technicien ?
  • 6.
    Vous et Drupal? • Qui connait Drupal ? • Qui connait Symfony 2 ?
  • 7.
  • 8.
  • 9.
  • 10.
    Un « site» sans Développeur ? • • • • Core facile à installer Complet (prêt à utiliser) Dans ma langue / mes langues Facile à utiliser • Êtes-vous un cliqueur fou ?
  • 11.
  • 12.
  • 15.
    Approche Drupal :Contenus → Structures de contenus
  • 16.
    Approche Drupal :Contenus → Requêtes et Mise en forme des résultats Structures de contenus
  • 17.
    Approche Drupal :Contenus → Affichage des blocs générés Requêtes et Mise en forme des résultats Structures de contenus
  • 18.
    Approche Drupal :Contenus → Page Web Affichage des blocs générés Requêtes et Mise en forme des résultats Structures de contenus
  • 19.
    Approche Drupal :Contenus → Page Web Services web Affichage des blocs générés Requêtes et Mise en forme des résultats Structures de contenus
  • 20.
    Structurer : Nouveauxchamps • • • • • • • Entity reference Date Lien E-mail Téléphone Photo User picture → champ
  • 21.
    Structurer : FieldUI • • • • • • • Modes d'affichage (vue, formulaire...) Aide dans le champ (placeholder, blur) Cardinalité sur mesure Préfixe de champ CRUD amélioré Validation séparée du formulaire (s2 validator) Multiples téléversements (uploads)
  • 22.
    Structurer : FieldUI • Field API entièrement réécrit • Entités « fieldables » → « extensibles » • Champ non partagé entre types d'entités – Stockage / type d'entité – Même nom dans types d'entité <> • Accès simplifié aux champs, ex: – $node->field_foo->value
  • 23.
    Requête & Affichage: Views • • • • • • Qui ne connait pas Views ? Requête sur tous types d'entités Filtres Tris Contextes Affichages : Listes ..., grilles, slideshows menus, ...
  • 24.
    Requête & Affichage: Views • • • • • • • Dans le Core Drupal 8 immédiatement utilisable Page d'accueil Administration des contenus, utilisateurs Gestion des fichiers Responsive web + sortie → services web
  • 25.
    Page web : Affichageen Blocs Tout est BLOC ● Simplification ● Multiples instances ● Entités extensibles ● Révisions ● Support ESI ● IHM Admin. Amélioré ● Contexte
  • 26.
  • 27.
    TWIG • • • • • • • • Connu, documenté Moins detemplates / « Blocs Twig » Facile Plus Sécurisé que PHPTemplate Extensible Très rapide Bonne intégration IDEs Utilisé ailleurs : python, Ruby, ...
  • 28.
    Parlez-vous TWIG ? •Template, ex de nom : node.html.twig • Commentaires avec variables disponibles • Imprimer une variable : {{ title }} • Plus compliqué : {{ content.field.image }} • Commentaire {# @todo ... my comment here #} • Test • {% if title %} • <h3>{{{ title }}</h3> • {% endif %} • Plus fort: partie personnalisée par autre template • {% block toto %} • que la partie différente !
  • 29.
    Gestion des Assets Stylesheets,CSS and js <> images • Drupal 7 : • • • • Fichier Theme.info hook_library_info() #attached drupal_add_css(), drupal_add_js() • • • Jquery.js lourd Caching Opaque • Inconvénients :
  • 30.
    Gestion des AssetsD8 Assetic • • • • • Librairie Symfony2 Assets Filters AssetBag (Thème D7 : Sasson v3)
  • 31.
  • 32.
    Mobile en D8: Comment ? ● Web Services ● Responsive Design ● HTML 5 ● éléments (picture, téléphone) ● Administration Mobile ● IE <= 8 . Forum PHP 2013 32 32
  • 33.
    Elements form. HTML5 $form['telephone']= array( '#type' => 'tel', '#title' => t('Phone'), ); $form['website'] = array( '#type' => 'url', '#title' => t('Website'), ); $form['email'] = array( '#type' => 'email', '#title' => t('Email'), ); $form['tickets'] = array( '#type' => 'number', '#title' => t('Tickets required'), );
  • 34.
    Performance Front-end ● Javascript ● Jquery 2.0+ chargé si besoin ● CSS avec SMACSS – Scalable and Modular Architecture for CSS ● Images adaptatives ● Assetic (CSS, JS) . Forum PHP 2013 34 34
  • 35.
    Drupal 8 plusfacile : Editeur • CKEditor 4 (non exclusif) • Utilisable dès l'installation du Core • Intégration complète avec formats de texte – Cliquer/déposer boutons + config F.T. • Téléversement d'image intégré • Légende • Intégré avec module breakpoint • Edition inline (quick edit)
  • 36.
  • 37.
  • 38.
  • 39.
    Editeur de Texte ● Boutonimage + téléverser . Forum PHP 2013 39 39
  • 40.
  • 41.
  • 42.
  • 43.
    Multilingue ? I speak english! Je parle français ! . Forum PHP 2013 43 43
  • 44.
    Multilingue I speak english ! Jeparle français ! Se habla espanol ! . Я говорю на русском ! Forum PHP 2013 44 44
  • 45.
    Drupal 8 : MultiLingue 4piliers Langues Interface Contenu Configuration
  • 46.
    Langues Choix dès l'installation ● Supprimeranglais ;) ● Visibilité des blocs ● Langue dans Views ● Configuration souple ● Affectation + large ● ● ● Entités, Vues, Alias, Infos du site Non affecté <> non applicable Détection améliorée ● Translitération ●
  • 47.
    Traduction Interface Traduire enanglais ;) ● Nouvel interface + simple ● ● pluriel Suivi traductions Perso. ● Import : Timeouts ● Dossier centralisé ● Mise à jour auto depuis localize.drupal.org ● Module séparé ●
  • 48.
    Traduction du Contenu Toustypes d'entités ● Configuration dynamique / bundle / champ ● Index recherche / langue ● API de recherche ● Support API node access ●
  • 49.
    Traduction Configuration Onglet traduction ● Langue/ fichier de config ● Config supporte schema ● Pour toute config ● UI pour seul Core ● UI amélioré / contrib ●
  • 50.
    Services Web :REST • • • • • • • • • • • • . Inter-machines Modules REST + Serialization + HAL Formats de base JSON ou XML Méthodes HTTP : POST, GET, PATCH, DELETE Types de média json : json, hal+json URIs : GET /node/1, GET /entity/node/1 Link Relations Richardson Maturity Model : niveau 2. 3 @todo Profite du nouvel Entity API, de Views Accès / Cookies + token ← Serialize <> Normalize → Extensible Forum PHP 2013 50 50
  • 51.
  • 52.
    Déploiement des Configurations PrincipeCMI ALERT! ALERT! Important announcement about something. Important announcement about something.
  • 53.
    Configuration : <>contenu • Paramètres • Types de contenus • Champs • Vues • Styles d'mages • Permissions, Rôles •…
  • 54.
    Configuration en D8 Configurationstockée en fichiers • modifs via l'interface admin • écrites directement dans fichier yml • format populaire YAML • facile à lire / « écrire » • Entités de configuration
  • 55.
    Ex : search.settings.yml active_modules: -node - user and_or_limit: '7' default_module: node index: cron_limit: '100' overlap_cjk: '1' minimum_word_size: '3' tag_weights: h1: '25' h2: '18' H3: '15'
  • 56.
  • 57.
  • 58.
    Configuration Management Interface Règled'or : « Ne hackez jamais le core ! … ou Dries tue un chaton» « Ne hackez pas votre configuration active ! » * * Alex Pott, Core committer and CMI maintainer . Forum PHP 2013 58 58
  • 59.
    Architecture technique • >500 lignes dans CHANGELOG.txt • 24 APIs nouveaux ou modifiés • Plugins (← hooks) • • • • • • Entity API dans Core + amélioré CMI Routage Services Objets Formulaires ...
  • 60.
    Révolution POO Il esttemps de passer vraiment à la POO ! This guy killed Procedural Programming in Drupal
  • 61.
  • 62.
    Composants Symfony Pourquoi Symfony2? « Nouvelle » approche : Fièrement trouvé ailleurs
  • 63.
    Composants Symfony2 utilisés • • • • • • • • . HttpFoundation HttpKernel Injectionde dépendances Event dispatcher Routage Serializer Validator Yaml Forum PHP 2013 63 63
  • 64.
    Améliorations diverses • PHPUnitaccélère les tests • Module Tour – Mieux que help • Support ESI/CSI/SSI p. cache • Amélioration API fichiers/médias • Dossier Core/
  • 65.
    Synthèse Améliorations Drupal 8 parprofil © Chipway 2009-2011 Forum PHP 2013 65
  • 66.
    Intégrateurs / Assembleurs Utilisationde Schema.org (RDF) ● Services web REST ● Blocs ● Editeurs ● Gestion des changements de configuration ● UUID ● Tour (help) ●
  • 67.
    Designers / Thémeurs Twig ● Backbone.js ● Assetic ● Javascriptaccessibility Features ● Jquery 2.0 ● CSS Coding Standards ● Responsive Web Design ● HTML5 ● drupal_add_css, drupal_add_js, drupal_set_title, drupal_set_breadcrumb ●
  • 68.
    Développeurs / Codeurs POO ● ComposantsSymfony2 (voir au-dessus) ● Symfony CMF ● Doctrine annotations ● Composer ● Namespaces & PSR-0 → 4 ● Services Symfony ●
  • 69.
    Développeurs / Codeurs YAML ● PHPUnit(simpletest out en D9) ● Nouvelles librairies externes ● Guzzle (drupal_http_request) ● EasyRDF (parsing RDF) ● Zend_Feed (Feeds) ●
  • 70.
    Drupal 8 +difficile : Développer ● Programmation orientée Objet (POO) ● Symfony2 ● Plus difficile ? Ou plus simple ? ● Déconstruire & reconstuire ? . Forum PHP 2013 70 70
  • 71.
    Synthèse Drupal 8- Core  Mobile / Responsive  Editeur disponible dès l'installation  Multilingue  Séparation Configuration / Contenu  Theming plus facile/ouvert  Tout est Bloc  Services web dans le Core  Cycle développement → Production géré  Et OOP ! . Forum PHP 2013 71 71
  • 72.
    Conclusion : Drupal8 c'est plus  Harmonisé / simplifié / mieux intégré  Modernisé / Etat de l'art Dev PHP  Généralisé (mobiles, services...)  Localisé (langues, traductions)  Professionnalisé et Ouvert aux nouveaux  Sécurisé  « Accéléré »  Plus facile à Adopter . Forum PHP 2013 72 72
  • 73.
    Planning Drupal 8 Geldu Code Début Développement 10 Mar 2011 5 Jan 2011 Drupal 7.0 1 Juil 2013 17 Fév 2013 Gel des Fonctionnalités S2 2014 ? Drupal 8.0
  • 74.
    Remerciements Slides : Drupal : ● Dries Angela“webchick” Byron ● ● Contributeurs Kristof De Jaeger ● ● Communauté Jen Lampton ● Dries Buytaert ● Gábor Hojtsy Déjà > 1600 contributeurs! ● Larry Garfield ● Jingsheng Wang ● Christopher Skene ● Boris Gordon ●
  • 75.
    Merci de votre attention Questions? Vos retours sur https://joind.in/9369 @chipway . lcros@chipway.com Forum PHP 2013 75