Planète

Par juliendubreuil
julien dubreuil
Depuis 2009 maintenant, je développe avec le CMS/CMF Drupal. J’étais à la recherche d’un framework capable de remplacer un projet et je n’ai jamais arrêté de m’en servir depuis ce moment.

Yaml, le format de configuration

Yaml, le format de configuration

L’une des premières choses que vous allez remarquer en regardant le code de Drupal 8, est le nouveau format de configuration. Terminé les extensions en .info, maintenant toute la configuration réside dans des fichiers .yml écrits au format YAML (YAML Ain’t Markup Language).

Aussi facile à lire que précédemment, il permet plus de choses et s’est imposé comme l’un des formats de standardisation dans plusieurs langages de programmation, tels que C, Perl et Python. L’une des grandes décisions prise pour Drupal 8 a été de standardiser le plus possible et de réutiliser des composants existant et fiables de façon à se concentrer sur autre chose. Ainsi le format YAML remplacera nos bons vieux fichiers maison.

L’ancienne version du fichier .info du module block:


1
2
3
4
5
6
7
8
# Drupal 7 block.info
name = Block
description = Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page.
package = Core
version = VERSION
core = 7.x
files[] = block.test
configure = admin/structure/block

La nouvelle version du fichier info du module block au format YAML


1
2
3
4
5
6
7
8
# Drupal 8 block.info.yml
name: Block
type: module
description: 'Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page.'
package: Core
version: VERSION
core: 8.x
configure: admin/structure/block

Comme vous pouvez le voir, les deux fichiers sont similaires. La bonne nouvelle est que vous ne serez pas dépaysé en écrivant au format YAML.

Pour vous aider à comprendre les avantages et la structure de ce nouveau format, voici dans les grandes lignes à quoi ressemble la syntaxe. Si vous voulez en savoir plus, rendez-vous directement sur la page wikipédia ou sur la documentation Symfony 2

  • Les commentaires doivent être précédés par un #
  • La valeur Null peut être exprimée de deux façons, avec la chaîne de caractère null ou le symbole ~
  • Les booléens s’écrivent true ou false
  • Les chaînes de caractères doivent être entourées par des apostrophes. Néanmoins si votre chaîne de caractère contient une ou plusieurs apostrophes, vous pouvez utiliser les guillemets.
  • Les listes d’éléments peuvent être définies sur une seule ligne ou dans un bloc (sur plusieurs lignes). Utilisez un tiret pour ajouter un nouvel élément dans une liste.


1
2
3
4
5
# comment.info.yml
dependencies:
 - datetime
 - node
 - text

Ou si vous préférez, vous pouvez créer vos listes sur une seul ligne.


1
[datetime, node, text]

Les tableaux sont de simples objets au format clé:valeur.


1
2
3
4
5
6
7
# comment.info.yml
name: Comment
type: module
description: 'Allows users to comment on and discuss published content.'
package: Core
version: VERSION
core: 8.x

Il est possible d’imbriquer les tableaux, il suffit simplement d’ajouter une indentation à un tableau. Attention, les indentations doivent utiliser deux espaces et non pas des tabulations.


1
2
3
4
5
6
7
8
#block.routing.yml
block_admin_display:
  pattern: '/admin/structure/block'
  defaults:
    _content: '\Drupal\block\Controller\BlockListController::listing'
    entity_type: 'block'
  requirements:
    _permission: 'administer blocks'

Au final rien de méchant et rien de compliqué, l’intégration du format YAML ne vous donnera pas du fil à retordre. Cela aura juste pour conséquence d’unifier tous les fichiers de configurations en imposant un standard. Que ce soit pour la déclaration des modules, de fichiers de configuration en passant par le nouveau système de plug-in tout sera fait dans ce format.

Crédits Photo

Comment Drupal est protégé contre les 10 plus importantes failles de sécurité







Dans le domaine de la sécurité, la réputation de Drupal n'est plus à faire. Interrogé sur les raisons de cette réputation, il est souvent indiqué que Drupal est sécurisé by design, c'est à dire depuis sa conception même. Autrement dit, dès le départ, Drupal a été conçu avec la notion toujours présente à l'esprit que le système doit être sûr et sécurisé. Regardons en détail comment Drupal, grâce à ses interfaces de programmations (API) si elles sont utilisées correctement, prend en compte chacune des failles de sécurité les plus importantes. Ces éléments de réponse proviennent du rapport publié régulièrement sur drupalsecurityreport.org.

Thème 
Sécurité Drupal
Prestataire
Spécialiste
Drupal

Par Artusamak
Julien Dubois

CMI : De la théorie...

CMI : De la théorie...

CMI, ou « Content Management Initiative » représente l’une des avancées majeures de Drupal 8 visant à répondre à un besoin semblant simple au premier abord : Apporter une solution permettant de synchroniser la configuration d’un site entre plusieurs instances.

Comme le disait Greg Dunlap, le leader du projet :

CMI hopes to separate management of your code and content once and for all! We want to make it possible to store your site’s configuration in a standard API separate from its content, soliving issues like feature management and content staging that are cumbersome in previous Drupal versions.”

Mais ça ressemble à quoi ?

Il s’agit principalement d’une API fournissant aux développeurs une manière simple, standardisée, de stocker de la configuration de telle sorte qu’elle soit déployable.
Pour l’utilisateur final, cela signifie que nous sommes désormais capables de créer et configurer un site sur un serveur (de développement, de préproduction) et de le « déplacer » ensuite en production cette même configuration.

Pour bien comprendre le fonctionnement, il faut d’abord clarifier deux notions que CMI utilise : Active storage et Staging Storage.

  • L’Active Storage est un espace, par défaut la base de données, où Drupal stocke la configuration courante du site.
  • Le Staging Storage est lui un espace, par défaut le système de fichier, où Drupal stocke la configuration qu’il va devoir importer.

Chaque changement entre le Staging et l’Active peut être visualisé dans l’administration de Drupal.

Examinons ensemble un exemple d’un fichier de configuration, ici le fichier définissant le type de contenu « Book » :

type: book
name: 'Book page'
description: '<em>Books</em> have a built-in hierarchical navigation. Use for handbooks or tutorials.'
help: ''
has_title: true
title_label: Title
settings:
  node:
    preview: 1
    options:
      status: true
      # Not promoted to front page.
      promote: false
      sticky: false
      revision: false
    submitted: true
status: true
langcode: en

Comme on peut le voir, la configuration reste très compréhensible et facile à lire. Le plus important à comprendre est que ces fichiers fonctionnent sur un mode déclaratif.

Qu'est-ce que le mode déclaratif ?

Voyons ce que nous dit Wikipedia :

La programmation déclarative est un paradigme de programmation. Il consiste à créer des applications sur la base de composants logiciels indépendants du contexte et ne comportant aucun état interne. Autrement dit, l'appel d'un de ces composants avec les mêmes arguments produit exactement le même résultat, quel que soit le moment et le contexte de l'appel.

En programmation déclarative, on décrit le quoi, c'est-à-dire le problème. Par exemple, les pages HTML sont déclaratives car elles décrivent ce que contient une page (texte, titres, paragraphes, etc.) et non comment les afficher (positionnement, couleurs, polices de caractères, etc.). Alors qu'en programmation impérative (par exemple, avec le C ou Java), on décrit le comment, c'est-à-dire la structure de contrôle correspondant à la solution.

Autrement dit, en simplifiant, on pourrait dire :

  • Programmation impérative : décris à la « machine » comment faire quelque chose, et il en résulte ce que vous escomptez.
  • Programmation déclarative : décris à la « machine » ce que vous souhaitez qu’il se passe, et laisse la machine trouver comment y arriver

CMI n’est pas features !

Si vous aviez l’habitude (et vous devez l’avoir !) d’utiliser le module Features, vous serez peut-être un peu perdu au début. En effet, il ne faut pas oublier le but initial de Features était de pouvoir packager des « trucs » ensemble afin qu’ils puissent être réutilisés.
Ce n’est pas du tout le but de CMI. Ici, on exporte systématiquement l’ensemble de la configuration de votre site, et non pas une petite section.

Pour résumer, CMI est donc un outil permettant de gérer la configuration de manière déclarative, versionnable, et déployable.

Prochaine étape, la pratique !

Par Artusamak
Julien Dubois

Keynote de Dries – Drupalcon Austin 2014

La keynote que Dries a tenu pour le lancement de la nouvelle édition américaine de la Drupalcon 2014 à Austin se résume à se demander ce que sera le web de demain et comment Drupal pourrait jouer un rôle dans cet écosystème.

Drupalcon Austin 2014C’est une question intéressante à se poser lorsque l’on constate que de plus en plus d’acteurs venus à Drupal commencent à faire marche arrière faute de libertés suffisantes avec Drupal 7 et d’une arrivée très tardive de Drupal 8. S’interroger sur ce à quoi ressemblera le web dans quelques années est une chose, mais s’inquiéter de savoir si Drupal fera partie de ce tableau en est une autre. La réponse est probablement non.

Mais il est intéressant de constater que l’évolution à laquelle on assiste auprès des acteurs du web est que les géants deviennent de plus en plus géants et qu’ils écrasent complètement les nouveaux venus. Il va falloir que les gens acceptent de se rebeller contre ça pour que l’équilibre d’internet ne soit pas en danger.

Il est presque déjà trop tard, Google décide actuellement de ne plus montrer certains sites, qu’en sera-t-il demain lorsqu’il aura aspiré toutes les données de vos sites et les montrera directement dans sa page de recherche sans vous renvoyer le moindre trafic ?

Dries pose cette question et se dit que Drupal pourrait avoir un rôle à jouer en vous permettant d’avoir entre les mains un outil permettant de créer un genre de plateforme riche à partir de laquelle le contenu pourrait être disséminé facilement selon le format dans lequel vous le consommeriez (article sur un PC, billet sur votre téléphone, etc).

Je trouve que cette keynote a le mérite de mettre en lumière ce problème pour lequel nous n’avons pas forcément conscience mais je reste sceptique sur le rôle que Drupal pourra jouer. Le pouvoir réside principalement sur le trafic plus que sur les moyens technologiques à disposition pour formater le contenu et adapter le message au visiteur. Drupal n’a pas d’emprise sur l’acquisition du trafic et l’on peut légitimement se demander comment s’affranchir d’un Google pour faire venir les visiteurs. C’est un acte citoyen de s’interroger sur ce point et sur nos habitudes de consommation, la réponse n’est pas simple mais il faudra accepter de soutenir des petits acteurs prometteurs faute de tous les voir disparaitre les uns après les autres.

La keynote complète :

Par admin

DrupalFR au CMS day 2014

Comme pour la troisième édition, l'association Drupal France et Francophonie (drupalfr) sera présente le 17 juin 2014 au CMS Day.

Il s'agit d'un événement consacré à la gestion de contenu open source (CMS), dont nous somme sponsor Bronze.

Pour l'édition 2014, le CMSday proposera plus de 30 tables rondes et ateliers.
Bien entendu, tout au long de la journée, vous pourrez également venir nous rencontrer pour échanger et parler du CMS Drupal.

CMS Day

Il est impératif de vous inscrire gratuitement pour obtenir votre badge.
Inscrivez-vous au CMS Day 2014

Trouver un prestataire Drupal







Vous avez un projet de site web et vous avez déjà identifié Drupal comme solution idéale ? Mais vous avez des difficultés pour trouver un prestataire Drupal ? Comment vous assurer que le prestataire sera en mesure de vous développer un site internet dans le respect de l'état de l’art ? Bref comment trouver un prestataire Drupal, ou comment s’assurer que le prestataire dispose effectivement des compétences nécessaires à la bonne maîtrise de Drupal ? Ce billet va essayer de vous donner quelques pistes pour vous permettre d'éviter quelques mauvaises surprises.

Thème 
Drupal
Spécialiste
Prestataire

Par Artusamak
Julien Dubois

Drupal 8 pour de vrai

Drupal 8 pour de vrai

Alors que Drupal 8 se profile doucement et promet des améliorations majeurs par rapport à Drupal 7, intéressons nous à ce temps avant l'apparation des premiers sites majeurs en Drupal 8.

Quel est la situation de la contrib ? Comment devons nous changer nos habitudes et que faire pour se tenir prêt à l'arrivée de Drupal 8 ?

Ensemble essayons de répondre à cette question "Quand est ce que je pourrais utiliser Drupal 8 en production ?"

 

Cette session est largement inspiré par celle de @Florian Lorétan : Drupal 8 for real

crédit image : http://www.greenhouseloft.com/

Illustration: 
Catégorie: 
Par Artusamak
Julien Dubois

La fin du .info

La fin du .info

L'arrivée prochaine de Drupal 8 marquera la mort d'un (des nombreux) aliens de Drupal : le fichier ".info".

Ce fameux ".info", indispensable à tout module, thème ou encore profil d'installation sera remplacé dans un fichier YAML.

Évidemment, la principale motivation de ce changement est de pouvoir assurer une certaine consistance avec le reste de drupal (le nouveau système de routage utilisera aussi des fichiers YAML). Et bien sûr, l'adoption de la norme YAML consiste également en un switch vers un format bien connu et surtout standard.

Ce changement se traduit donc par la conversion de tous les anciens fichiers ".info" en ".info.yml".

Pour la majorité des anciennes instructions, le simple remplacement des "=" en ":" fera le plus gros du boulot.
Pour toutes les déclarations qui avaient la forme de tableaux (c'est à dire, avec un "[]" dedans), la forme sera :

dependencies:
  - node

Autre exemple avec les feuilles de style, anciennement de la forme :

; Stylesheets
stylesheets[all][] = css/layout.css
stylesheets[all][] = css/style.css
stylesheets[print][] = css/print.css

Ceci deviendra :

# Stylesheets
stylesheets:
  all:
    - css/layout.css
    - css/style.css
  print:
    - css/print.css

Comme vous avez pu le voir dans l'exemple précédent, pour insérer un commentaire, il ne faudra plus utiliser un ";" mais un "#" en début de ligne.

Enfin, on note l'arrivée d'une nouvelle clé : "type". Celle-ci, obligatoire, aura pour valeur "module", "theme", ou encore "profile". Je crois que vous avez compris son fonctionnement là, non ?

Un exemple complet avec le thème "Seven".

Drupal 7 :

name = Seven
description = A simple one-column, tableless, fluid width administration theme.
package = Core
version = VERSION
core = 7.x
stylesheets[screen][] = reset.css
stylesheets[screen][] = style.css
settings[shortcut_module_link] = 1
regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
regions[sidebar_first] = First sidebar
regions_hidden[] = sidebar_first

Drupal 8 :

name: Seven
type: theme
description: 'A simple one-column, tableless, fluid width administration theme.'
package: Core
version: VERSION
core: 8.x
stylesheets:
  screen:
    - style.css
stylesheets-override:
  - vertical-tabs.css
  - vertical-tabs-rtl.css
  - jquery.ui.theme.css
settings:
  shortcut_module_link: '1'
regions:
  content: Content
  help: Help
  page_top: 'Page top'
  page_bottom: 'Page bottom'
  sidebar_first: 'First sidebar'
regions_hidden:
  - sidebar_first
Par LaboRouge

Module : Comment Notify

Comment Notify est un module qui permet d'envoyer des notifications par e-mail aux visiteurs ayant laissés un commentaire sur votre site. Fonction bien utile, car elle permet de fidéliser vos visiteurs et de les inciter à revenir sur votre site.

Il y a deux choix de notifications possibles : 


Drupal


Module

Par LaboRouge

Drupal 7: ajouter un lien permanent RSS

Lorsque votre site Drupal possède un flux RSS, il peut s'avérer judicieux d'ajouter à votre HTML un lien permanent vers ce dernier.

L'avantage : certain navigateur, tel Firefox, detecte la présence de ce lien et inclus automatiquement le logo RSS dans la barre de navigation.

Comment faire : il faut insérer une nouvelle balise <link> dans la balise <head> de votre page HTML.

Cela doit ressembler à ça :


Drupal 7


Theme

Par LaboRouge

Drupal 7 : ajouter la signature sur Node

Lors du paramétrage des comptes, il est possible de définir une "signature" pour chaque utilisateur. Par défaut, celle-ci s'affiche avec les commentaires de l'utilisateur.

Mais Drupal ne prévoit pas d'ajouter cette signature sur les "Nodes" lors de la création d'un contenu par l'utilisateur.

Avec quelques lignes de code le problème est résolu :


Drupal 7


Theme

Par LaboRouge

Drupal 7 : modifier le titre d'une page

Le titre d'une page web est gérer par la balise <title> dans la balise <head>. 

Par défaut, Drupal 7 génére ce nom sous la forme "titre de la page | nom du site"

Mais il est possible d'agir sur cette balise en passant par la fonction "theme_preprocess_html" du fichier template.php de votre thème :


Drupal 7


Theme

Par GoZ
Fabien CLEMENT

Trouvez la version de Drupal d'un site

Il y a plusieurs mois, j'ai mis en ligne un service qui vous permettra de savoir si un site fonctionne sous Drupal et sous quelle version.

Il y a 2 fonctionnements possibles:
- Soit les fichiers .TXT ne sont pas protégés ou le fichier CHANGELOG.txt n'a pas été supprimé, et c'est très facile.
- Soit il faut aller plus loin pour connaitre la version, et je me base alors sur le checksum des fichiers disponibles en clair (CSS et JS de drupal)

en lire plus

Par admin

Crash du site

Bonjour à toutes et à tous,

comme vous avez pu le constater le site a été inactif pendant plusieurs jours.
Il se trouve que le serveur hébergeant le site a crashé et que les disques durs ont été endommagés.

Les admins ont pu récupérer les données et remonter l'infra.
Tous les services ne sont pas encore revenus mais l'essentiel est là.

Bonne journée à tous et n'oubliez pas on se retrouve au Drupal Camp Soleil les 24 et 25 mai 2014 à Montpellier.

Par hellosct1

Les stands PHP au salon solutions linux 2014

Le salon « solutions linux » va se dérouler le 20 et 21 mai 2014 au Cnit à Paris. Et de nombreuses sociétés Open source seront présentes, ainsi que de nombreux acteurs du langage PHP.

Linux_2014_150x150.gif

Au niveau du village associatif, le langage PHP sera aussi représenté avec les associations comme Dolibar, AFUP (Association Française des Utilisateurs de PHP), Drupal, GLPI...

Pour ma part, je vais m'occuper des stands AFUP et Drupal, situé sur les stands B41 et B39, mais aussi de nombreuses acteurs de ces communautés seront présents pour répondre à toutes vos questions et bien sur parler de CMS ou encore du langage PHP.

N'hésitez pas à venir nous rencontrer pendant ces 2 jours.

C'est pourquoi sans plus attendre, il faut vous inscrire gratuitement sur le stand du salon linux pour venir nous voir.

Le salon Solutions Linux qui se déroule du 20 et 21 mai 2014

Par Marc Delnatte
Akabia

Drupal 8 : Le Responsive Design

Définition :

Le terme responsive design a été créé par Ethan Marcotte. Il désigne un ensemble de techniques (grille fluide, images flexibles, medias queries CSS3), il est fortement associé aux feuilles de style CSS3.







Par Mantalo Conseil
Benjamin Grapeloux
Agence web, Agence de Communication et Marketing en Dordogne (Aquitaine)

Blue Drop Awards : 2 sites made in Mantalo nominés

Blue Drop Awards, c'est quoi ?

Blue Drop Awards est une initiative communautaire indépendante initiée en 2012 et animée par une collaboration bénévole entre acteurs de la communauté internationale DrupalL'événement est soutenu par Drupal Association, mais ne revêt aucun caractère officiel en lien avec la marque Drupal déposée par Dries Buytaert.

Blue Drop Awards, pourquoi ?

Le concours souhaite permettre aux parties prenantes impliquées dans un projet Drupal de se reconnaître et d'être reconnues pour leur capacité à optimiser ou à enrichir les potentiels qu'offre Drupal en tant que système de gestion de contenu Open Source.

Qui peut concourir ?

Tout le monde peut soumettre un site développé sous Drupal au comité de sélection qui statue sur sa recevabilité.

Quels critères ?

Les finalistes sont sélectionnés par le Comité de remise des prix Blue Drop sur les critères suivants :

  • Innovation,
  • Respect des bonnes pratiques,
  • Structure du contenu,
  • Ergonomie de navigation,
  • Conception visuelle,
  • Fonctionnalités,
  • Expérience utilisateur globale.

2 sites créés par Mantalo parmi les nominés

C'est par twitter que nous avons appris la nomination des C'est sur twitter que nous avons appris que 2 de nos sites avaient été nominés !!! Nous n'avons en effet entrepris aucune démarche particulière, et nous sommes d'autant plus ravis de constater que notre travail ait pu être apprécié comme valorisant pour la communauté Drupal... Thank you guys !

Quand connaitra-t-on les gagnants ?

Le vote sera ouvert au public sur le site BlueDropAwards.org à partir de la liste des finalistes : 
  1. Pré-sélection des candidatures :  du 7 au 21 Avril
  2. Confirmation des candidatures :  du 22 au 28 Avril
  3. Sélection des finalistes par le Comité des prix Blue Drop : du 29 Avril au 4 Mai
  4. Vote du public sur liste des finalistes : du 5 au 19 mai
  5. Le vote se termine le 19 mai minuit CST
  6. Cérémonie DrupalCon Austin, Texas:  4 Juin

Que du positif pour la communauté Drupal !

Les Blue Drop Awards contribueront à la visibilité de la communauté Drupal sur 3 axes :
  • Les Blue Drop Awards font du buzz en dehors de la communauté Drupal... Drupal s'exposant peu aux médias en dépit du très grand nombre de sites prestigieux qui l'utilisent.
  • Les Blue Drop Awards apportent une visibilité aux candidats, aux finalistes, et aux vainqueurs, et une reconnaissance envers la communauté Drupal.
  • Les Blue Drop Awards valorisent une vitrine de projets Drupal primés, ouvrant ainsi la perspective pour tous les porteurs de projets qui se sentent limités dans leurs options créatives !

Tags: 

Pour voir nos 2 sites nominés, rendez vous sur Terroir et vin du Périgord et sur Artisans du foie gras !

Vous aussi avez décidé de professionnaliser vos relations avec votre prestataire Web ? Contactez nous !

Par admin

Présence DrupalFR à Solutions Linux 2014

Le salon "SOLUTIONS LINUX" 2013 se déroule le 20 et 21 mai 2014 au CNIT / La défense.

L'Association Drupal France et Francophonie (DRUPALFR) sera sur le stand B39 dans la partie village associatif et recherche des bonnes volontés pour venir nous aider à tenir le stand pour parler de Drupal et aussi venir nous voir.

  • Si vous souhaitez venir nous rendre visite, vous serez les bienvenus.
  • Si vous voulez tenir le stand avec moi, merci de me contacter en m'indiquant vos disponibilités (par demi journée)

Exemple :

  • Christophe Villeneuve
  • Contact : http://drupalfr.org/profil/hellosct1
  • Stand : matin 20 mai (à partir de 9h)

Il faut en parallèle qu'on parle des matériels!!! Discute-on!

À bientôt!

La page DRUPAL :

http://www.solutionslinux.fr/exposant_154_3498_p.html?eid=875

Planning de présence

Nom 20 mai matin 20 mai AM 21 mai matin 21 mai AM
hellosct1 oui
fgm oui

Horaire du salon

  • Mardi 20 mai 2013 : 9h00-19h00
  • Mercredi 21 mai 2013 : 9h00-18h00

Lieu du salon

  • Le CNIT Paris la Défense
  • Hall Marie Curie

Demander un badge pour entrée

http://www.solutionslinux.fr/preinscription.html

Responsable et contact pour le stand :

Christophe Villeneuve

Plus nous serons nombreux, moins de temps vous serez bloqué.

Pour compléter le planning, merci de poster un message dans les commentaires ou m'envoyer directement un message. Merci

Drupal8 : autopsie d’un module de création de page

image

Téléchargement de Drupal8 et nouvelle arborescence

Après téléchargement de la dernière version de Drupal, vous constaterez déjà de gros changements dans l’arborescence.

image

En effet, un dossier “core” a été ajouté. Cela permet d’éviter aux débutants d’ajouter par mégarde des modules contribués parmi ceux du core. On retrouvera donc dans notre dossier core, les modules et thèmes du coeur de Drupal.

Mais où doit-on ajouter nos modules contribués ? Cela se passe dans le répertoire “modules” à la racine. Comme le recommande Drupal, nous vous conseillons de créer deux sous-répertoires :

  • contrib (contiendra les modules téléchargés depuis Drupal.org)
  • custom (contiendra les modules personnalisés que vous développerez)

Nous gérons nos thèmes personnalisés depuis le répertoire “themes” également à la racine.

Qu’en est-il du fichier de configuration pour relier notre site Drupal à sa base de données ? Et bien nous retrouvons nos habitudes : sites/default/settings.php.

Installation et activation du module salutation

  1. Commencez par récupérer le module “salutation” depuis notre dépôt github
  2. Placez le module “salutation” dans le répertoire modules/custom de votre Drupal. Puis allez activer le module depuis le backoffice de Drupal en cliquant sur ”Extend” (anciennement modules).

Une fois activé, un nouvel item s’ajoute au menu principal : “Salutation - basic page” (http://d8.dev/salutation_page).

image

Nous avons également testé l’ajout de sections à la page de configuration principale (http://d8.dev/admin/config).

image

image

Les fichiers à la loupe

image

Nous allons commencer par parler de la nouvelle extension utilisée dans Drupal8 mais également dans d’autres Framework et CMS : YAML (.yml). Ce format est assez strict en termes d’indentations (La tabulation doit être remplacée par deux espaces). Après un petit temps d’adaptation vous ne pourrez plus vous en passer.

salutation.info.yml

Nous allons regarder plus en détail le fichier salutation.info.yml :

name: Salutation
type: module
description: An example of custum module.
package: Custom modules
core: 8.x

Anciennement nommé avec l’extension .info, ce fichier est toujours obligatoire afin de créer un module sur Drupal8.

On y retrouve comme champs obligatoires :

  • name
  • type (module ou theme)
  • description
  • package
  • core

salutation.routing.yml

Restons dans les fichiers .yml avec salutation.routing.yml :

salutation.admin_config_be:
  path: '/admin/config/be'
  defaults:
    _content: '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage'
    _title: 'BelleEpoque section title'
  requirements:
    _permission: 'access administration pages'
salutation.admin_config_be_besub:
  path: '/admin/config/be/besub'
  defaults:
    _content: '\Drupal\salutation\Controller\SalutationController::salutationAdminPage'
    _title: 'Salutation admin page title'
  requirements:
    _permission: 'access administration pages'
salutation.salutation_page:
  path: '/salutation_page'
  defaults:
    _content: '\Drupal\salutation\Controller\SalutationController::salutationPage'
    _title: 'Salutation page title'
  requirements:
    _access: 'TRUE'

Ce fichier est nouveau dans Drupal8 et remplace la partie propre au routage qui était gérée auparavant dans le hook_menu.

Vous voyez clairement le rôle de l’indentation dans ce fichier. Pour rappel, vous devez utiliser deux espaces à la place de la tabulation classique.

On y voit trois déclarations de route :

  • salutation.admin_config_be
  • salutation.admin_config_be_besub
  • salutation.admin_page

Ces trois « noms machines » permettent d’identifier une route de manière unique. Par convention, ils commencent par le nom du module suivi d’un point puis un nom qui doivent donner du contexte à cette route. Par exemple, j’ai choisi de reprendre le « path » générique en remplaçant les « / » par des « _ ».

Le path désigne la route pour accéder à la page. Elle commence par un slash (/) et est entre quote (”).

Puis dans defaults, on retrouve :

  • « _content » : C’est le chemin d’accès vers le controller::actionAExecuter
  • « _title » : Titre de la page

Enfin la section “requirements”  permet de définir les règles d’accès à appliquer à la page en question.

Mais que font ces trois routes ?

  1. salutation.admin_config_be permet d’ajouter une section propre à notre module. Cette section apparait seulement si cette dernière compte au moins une page rattachée. Nous la voyons à cette adresse : /admin/config
  2. salutation.admin_config_be_besub est une page d’administration (pour le moment juste une page avec un peu de contenu textuel) qui est rattachée à notre section salutation.admin_config_be.
  3. salutation.admin_page est une page visible par tous les internautes (_access à true pour cette démonstration).

salutation.module

Avant de passer à l’explication du controller, visualisons le fichier salutation.module :

&lt;?php

/**
* Implements hook_menu_link_defaults().
*
* Routing functionality of hook_menu() has been replaced by new routing system:
* <a href="https://drupal.org/node/1800686">https://drupal.org/node/1800686</a>
*/
function salutation_menu_link_defaults() {
  // Basic page on "main" menu.
  $links['salutation.basic_page'] = array(
    'link_title' =&gt; 'Salutation - Basic page',
    'description' =&gt; '',
    'route_name' =&gt; 'salutation.salutation_page',
    'menu_name' =&gt; 'main',
  );

  // Add new section (admin/config path) with an other basic page.
  $links['salutation.admin.be'] = array(
    'link_title' =&gt; 'BelleEpoque section block title',
    'description' =&gt; 'BelleEpoque section block description.',
    'route_name' =&gt; 'salutation.admin_config_be',
    'parent' =&gt; 'system.admin.config',
  );
  $links['salutation.admin.be.besub'] = array(
    'link_title' =&gt; 'BelleEpoque page menu title',
    'description' =&gt; 'BelleEpoque page menu description.',
    'route_name' =&gt; 'salutation.admin_config_be_besub',
    'parent' =&gt; 'salutation.admin.be',
  );

  return $links;
}

Ce dernier est identique à celui sur Drupal7 mais quelques hooks changent comme le hook_menu() qui disparaît pour laisser place au hook_menu_link_defaults().

Ce dernier se concentre sur la déclaration des items de menus car le routage (déclaration des chemins d’accès) est géré dans le fichier salutation.routing.yml.

Entre crochet, on retrouve le nom machine de l’item de menu qu’il ne faut pas confondre avec le nom machine du chemin d’accès déclaré depuis route_name.

Programmation Orientée Objet

Nous arrivons maintenant à la partie Orientée Objet de cet article. Vous allez voir, cela passe tout seul.

Par convention, nos controllers seront dans un dossier controller mais ce dernier n’est pas n’importe où. Encore une fois, il faut respecter les conventions :

Il faut créer cette arborescence : lib/Drupal/[nommodule]/Controller

image

&lt;?php

/**
* @file
* Contains \Drupal\salutation\Controller\SalutationController.
*/

namespace Drupal\salutation\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
* Controller routines for block example routes.
*/
class SalutationController extends ControllerBase {
  /**
   * A simple controller method to explain what the block example is about.
   */
  public function salutationPage() {
    $build = array(
      '#markup' =&gt; t('My first custom page!'),
    );

    return $build;
  }

  /**
   * Admin page.
   *
   * Todo: add form on this page.
   */
  public function salutationAdminPage() {
    $build = array(
      '#markup' =&gt; t('My first custom admin page!'),
    );

    return $build;
  }

}

La classe SalutationController étend ControllerBase (localisée grâce au mot clé use et du chemin Drupal\Core\Controller\ControllerBase).

On y retrouve deux fonctions que vous allez reconnaître. Au niveau de la structure on retrouve Form API référence. Pour rappel, chaque fonction est associée à une route spécifique dans le fichier salutation.routing.yml (voir les lignes “_content”).

Vers l’infini et au delà

image

Nous venons de voir ensemble la nouvelle structure d’un module Drupal8. La standardisation des composants avec l’adoption du YAML et l’utilisation de classes (POO) pour créer des pages, va très certainement améliorer la montée rapide en compétence de nouveaux développeurs Drupal et stimuler l’activité de la communauté.

Nous vous retrouverons très prochainement pour de nouvelles aventures (module de création de blocks, formulaires, etc.).

En attendant, vous pouvez télécharger le module salutation depuis notre dépôt Github.

Pages