Drupal Développeur. Theming et développement pour Drupal. Une formation T@hitiClic. Formateur : Fabien Crépin. Drupal Développeur.



Documents pareils
DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

PHP 5.4 Développez un site web dynamique et interactif

Drupal Contributeur. Maitrisez la publication sous Drupal. Une formation Formateur : Fabien Crépin. Drupal Contributeur.

SYSTÈMES D INFORMATIONS

Projet en nouvelles technologies de l information et de la communication

Groupe Eyrolles, 2003, ISBN : X

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Un site web collaboratif avec Drupal. Judith Hannoun - Journées INSHS 16 Octobre 2012

ECLIPSE ET PDT (Php development tools)

Initiation à html et à la création d'un site web

Nouveautés de Drupal 8. Léon

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Utiliser un CMS: Wordpress

DRUPAL. Réalisez des développements professionnels avec PHP. Résumé. David OLMETA Rémi BENOIT. ENI Editions - All rigths reserved - Moha Anisa

Bureautique Initiation Excel-Powerpoint

TP 5 Les CMS, la forme et le fond Internet et Outils (IO2)

Système de Gestion de Ressources

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

INTRODUCTION AU CMS MODX

Nouveautés joomla 3 1/14

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Installation locale de JOOMLA SEPIA

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Drupal, pour quel usage? Comment se positionne Drupal? Les fonctionnalités de Drupal et de son écosystème. L'architecture technique et logicielle Le

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Formation Webmaster : Création de site Web Initiation + Approfondissement

Drupal (V7) : principes et petite expérience

Utilisation de GalaxShare

Silfid : Agence de création de site internet, formations et Conseils Retour sommaire

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

WINDOWS SHAREPOINT SERVICES 2007

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

Joomla! Création et administration d'un site web - Version numérique

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Conférence Développeurs Magento. 27 novembre 2013 mageconf.org

Introduction aux concepts d ez Publish

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Google Merchant Center

Livre Blanc WebSphere Transcoding Publisher

TeamViewer 9 Manuel Management Console

BIRT (Business Intelligence and Reporting Tools)

CMS Made Simple Version 1.4 Jamaica. Tutoriel utilisateur Récapitulatif Administration

REX gros projets Drupal. Drupal Camp Toulouse Novembre - +qdelance

MEDIAplus elearning. version 6.6

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Comment bien référencer mes sites internet? Les 100 SECRETS EN VIDÉO

Utiliser CHAMILO pour le travail collaboratif

Administration du site (Back Office)

Dans cette Unité, nous allons examiner

SITE I NTERNET. Conception d un site Web

Catalogue Formations Jalios

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Guide d installation de Gael

Documentation technique

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

Architectures web/bases de données

Drupal : quelques fonctionnalités (ce qu il permet, ce qu il ne permet pas)

Formation : WEbMaster

FORMATION / CREATION DE SITE WEB / 4 JOURNEES Sessions Octobre 2006

Module BD et sites WEB

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

< Atelier 1 /> Démarrer une application web

La double authentification dans SharePoint 2007

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

4. SERVICES WEB REST 46


Comparatif de serveurs de contenus (CMS Content Management Server)

Freeway 7. Nouvelles fonctionnalités

Créer une base de données vidéo sans programmation (avec Drupal)

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Manuel du composant CKForms Version 1.3.2

Générer du code à partir d une description de haut niveau

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Guide Reseller Onbile

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Maarch V1.4

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Par KENFACK Patrick MIF30 19 Mai 2009

SERVEUR DE MESSAGERIE

Webmaster / Webdesigner / Wordpress

les techniques d'extraction, les formulaires et intégration dans un site WEB

Programmation Web. Madalina Croitoru IUT Montpellier

Devenez un véritable développeur web en 3 mois!

CYBERHOTEL PRESENTATION & SETUP

Drupal, le couteau suisse de la publication d informations

Armand PY-PATINEC 2010

Programmation Web TP1 - HTML

Tutoriel Drupal version 7 :

PRO CED U RE D I N STALLATI O N

Transcription:

Theming et développement pour Drupal Une formation Formateur : Fabien Crépin

Introduction Objectif : savoir développer un module et un thème 4 demi-journées Ce qu'on verra en théorie et en pratique : Environnement logiciel Architecture de Drupal Les grands principes Modifier des éléments graphiques Créer un thème Créer un module

Environnement logiciel

Environnement logiciel Le core : PHP4, peu d'objets Les modules : PHP4, parfois 5, parfois l'utilisation de véritables classes, assez rare Donc Drupal n'est pas codé orienté objet Cependant, il utilise des objets ponctuellement Procédural, documentation format JavaDOC API explorable à http://api.drupal.org

Environnement logiciel Le core est maintenu et très guidé par une équipe dédiée dont le créateur de Drupal Il existe des normes d'écritures Le code est versionné via CVS, tout le monde peut contribuer Devel permet d'afficher des variables de façon sympathique Coder permet de mettre en évidence les soucis syntaxiques

Configuration de travail Eclipse installé avec le plugin PDT Si vous travaillez avec javascript ou ExtJS, installez aussi SpKet (www.spket.com) Mettez en forme par défaut selon les préconisations Drupal, notamment remplacez les tabulations par des espaces Créez un projet qui pointe vers le répertoire sites/all de votre site

Système de fichiers Allez à la racine de votre installation et regardez les fichiers files : fichiers utilisateurs includes : fichiers des fonctions principales modules : modules du core, utilisent les includes misc : js, icones, png profiles : profils d'installation sites : les données propres aux sites themes : les themes du core tmp : fichiers temporaires

Système de fichiers Points d'entrée : cron.php : invoque les tâches de maintenance, à appeler via crontab index.php : le point d'entrée principal install.php : à supprimer après installation xmlrpc.php : utile pour mettre en place des services, on lui préférera le module Services

Thème

Thème : les bases http://drupal.org/theme-guide/6 Contenu d'un thème : Fichier.info template.php *.tpl.php Assets : css, js, images, etc En général, les modules produisent le rendu au travers de fonction theme_* Les thèmes se basent sur des moteurs, en général phptemplate

Surcharge On peut surcharger les fichiers de template en copiant les fichiers.tpl.php dans le répertoire du thème On peut surcharger les fonctions themable dans le fichier template.php Les fichiers les plus utiles sont page.tpl.php, node.tpl.php, block.tpl.php, comment.tpl.php On peut particulariser des templates pour des zones ou pages, par exemple node-recette.tpl.php, pagefront.tpl.php, block-sidebar_left.php

Contenu d'un fichier template On utilise surtout des variables fournies au thème qui sont juste rendues via print Quelques fonctions utilisées parfois : check_url ou theme Le reste est de la mise en forme HTML et CSS Les variables utiles : $language, $head, $scripts, $styles les régions : $sidebar_first, $content, $ closure, etc

Le fichier.info Ce fichier contient les infos sur le thème les positions offertes les styles utilisés scripts utilisés les caractéristiques configurables les styles Skinr

T.P. : Créons notre thème Créer un thème revient donc à fournir le fichier.info et le fichier template.php, au moins Dans sites/all/themes, créez un nouveau dossier my_theme En vous inspirant d'un thème existant, créez un fichier my_theme.info Ajoutez un fichier template.php Activez votre nouveau thème et mettez le par défaut Le rendu est produit par modules/system/*.tpl.php

T.P. : Créons notre thème Copiez les fichiers node.tpl.php, page.tpl.php et block.tpl.php depuis le thème garland vers le vôtre Créez un fichier styles.css et insérez le dans votre thème Amusez-vous un peu à modifier les styles

Preprocessing Avant de sortir les variables vers le thème (templates ou fonctions), il y a des étapes de preprocessing http://drupal.org/node/223430 donne l'ordre d'appel des différentes fonctions, attention les modules eux mêmes ont un poids et donc ordre Les fonctions de preprocessing s'empilent et modifient les variables successivement On garde ainsi la logique métier bien séparée de la présentation par le thème

T.P. : Preprocessing Activez le module Devel Dans le fichier template.php, ajoutez ceci : <?php function my_theme_preprocess_page(&$vars){ dsm($vars); }?> Choisissez une variable ($vars['left'] par exemple) et modifiez la dans la même fonction

Theming à la demande avec Skinr Skinr est un module assez récent Il permet de spécifier des styles qui pourront être utilisées individuellement par les blocs Il sera sans aucun doute rapproché du Core à terme Pour l'utiliser, on définit des styles dans le fichier.info, voir le module Acquia Prosper pour un bon exemple

Modules : Grands principes

Hooks Les hooks sont des points d'entrée permettant aux modules d'enrichir des traitements Par exemple, la page d'aide est le résultat de l'invocation des différents hook_help Les hooks très utiles : hook_help hook_init : permet de charger des fichiers au démarrage hook_theme : permet de préciser les fonctions themables hook_menu : permet d'enregistrer des chemins et menus hook_block : permet de créer un bloc hook_perm : permet de gérer les droits d'accès hook_form_alter : permet de modifier un formulaire hook_nodeapi : permet de travailler sur les nœuds

Menus Grâce à hook_menu, on va pouvoir intégrer nos modules dans le menu d'administration et créer des menus locaux Une insertion dans un menu : $menu['admin/build/visual_admin'] = array( ); 'title' => t('visual Admin'), 'description' => t("provides a way to define admin buttons."), 'page callback' => 'visual_admin', 'access arguments' => array('administer visual_admin'), 'file' => 'visual_admin.admin.inc', On peut ajouter un type : MENU_LOCAL_TASK, MENU_CALLBACK

Les formulaires http://api.drupal.org/api/drupal/developer--topics-- forms_api.html On les utilise pour enregistrer des contenus ou pour l'administration Un formulaire est : Un tableau $my_form Des éléments $my_form['my_element'] Des attributs #attribut (du formulaire ou des éléments) On le récupère et rend via drupal_get_form('nom_de_la_fonction_qui genere'); ou drupal_render_form($my_form);

Les formulaires Pour chaque formulaire on peut définir les fonctions : nom_du_formulaire_validate : permet de contrôler la saisie nom_du_formulaire_submit : permet de définir ce qui se passe à la soumission system_settings_form($my_form) permet de créer des formulaires à vocation d'enregistrer des valeurs dans la table variables hook_form_alter vous permet de modifier un formulaire depuis une autre fonction

Module

Le contenu d'un module Fichier.info : contient la désignation du module, les dépendances Fichier.module : le fichier principal du module En général, on trouve aussi : Fichier.admin.inc : fonctions de l'administration du module Fichier.[DB].inc : fonctions d'accès à la base Fichier.theme.inc : fonctions themables Fichier.install : schéma de la base, procédure d'installation Dossier Translations : contient les fichiers *.po D'autres fichiers : js, css, images, classes, etc

Le fichier.info C'est en gros le manifeste du module Typiquement : visual_admin.info ; $Id$ name = Visual Admin description = Provides a visual administration page core = 6.x version = "6.x-0.3" dependencies[] = menu

Le fichier.info D'autres informations peuvent y figurer et sont ajoutées lors du commit (date notamment) On retrouve certaines informations sur la page des modules

Le fichier.module Il est nécessaire mais ne contient pas forcément tout On préférera séparer le code sur plusieurs fichiers Une bonne pratique est de créer les hooks Drupal en 1er, et notamment hook_help

Fonctions Utiles : générales t : rend la chaine traduisible theme : invoque une fonction de mise en forme drupal_set_message : permet d'afficher des messages variable_get : permet de récupérer des variables enregistrées drupal_add_css/js : insére des fichiers où il doivent aller path_to_theme : renvoie le chemin du thème db_query : exécute une requête db_fetch_* : diverses opérations sur les résultats check_url, check_plain : contrôles

Fonctions Utiles : particulières Pour les autres modules, il faut aller voir les modules en question soit sur la doc en ligne, soit directement dans votre projet Eclipse Par exemple peuvent servir suivant les projets : taxonomy_get_vocabularies taxonomy_get_tree menu_get_item/menu_set_item menu_get_menus

T.P. : créons notre module Nous allons créer un module qui affiche des titres de nœud dans un bloc Nous paramétrerons le nombre et le titre via une page d'administration Puis nous créerons une page affichant ces nœuds en utilisant des fonctions de thème

T.P. : créons notre module Commencez par créer le.info et le.module Ajoutez les hooks de base : hook_help, hook_perm Ajoutez ensuite le hook_block Googlez hook_block pour les infos précises, il faut retenir qu'on peut définir plusieurs blocs ($delta) et gérer les diverses opérations liées aux blocs : list, view, configure, save

T.P. : créons notre module Ajoutez une interface de configuration pour votre module Séparez la collecte des informations du rendu graphique Surchargez dans votre thème le template ainsi créé

Liens utiles http://www.drupal.org http://api.drupal.org http://api.audean.com/api http://views.doc.logrus.com/ Images : http://www.sxc.hu Thèmes : http://www.themebot.com http://www.themegarden.org http://www.templatemonster.com http://www.osskins.com

Liens utiles Blogosphère : http://www.kolossaldrupal.org http://www.ineation.com http://www.tahiticlic.com/blog http://www.drupalistic.net