Panels : construire autrement. Pascal Morin bellesmanieres @ d.o. Senior Dev @ Code Enigma

Documents pareils
Drupal Développeur. Theming et développement pour Drupal. Une formation Formateur : Fabien Crépin. Drupal Développeur.

PHP 5.4 Développez un site web dynamique et interactif

Nouveautés joomla 3 1/14

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

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

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

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

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

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise

Présentation du Framework BootstrapTwitter

Projet en nouvelles technologies de l information et de la communication

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

Nouveautés de Drupal 8. Léon

Une interface moderne et multi devices avec Drupal Focus sur Omega

Dispositions relatives à l'installation :

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

Java 7 Les fondamentaux du langage Java

Responsive Design. Technologies du web. Stéphane Bouvry, 2014

Tour d horizon des CMS. Content Management System

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

Administration du site (Back Office)

Manuel du composant CKForms Version 1.3.2

Optimiser pour les appareils mobiles

Business Sharepoint Contenu

Responsive Web Design. La Rochelle, Avril 2014

Sage CRM. Sage CRM 7.3 Guide du portable

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

Introduction aux concepts d ez Publish

MODE D'EMPLOI DU CONTRIBUTEUR WEB UAPV "CONTRIBUER DANS UNE RUBRIQUE DU SITE WEB"

Créer une application de livre interactif pour tablette avec Indesign CS6 et Adobe Digital Publishing Suite

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Utiliser Access ou Excel pour gérer vos données

Dans ce mémento, vous trouverez les informations détaillées pour configurer les fonctionnalités du Responsive Design dans le Worldsoft CMS:

Freeway 7. Nouvelles fonctionnalités

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

GESTION DE PROCESSUS WEB DESIGN ET CONCEPTION DES SITES WEB DYNAMIQUES A L'AIDE DE CMS. Viktoriia IVNYTSKA

Programmation Web TP1 - HTML

MODULES 3D TAG CLOUD. Par GENIUS AOM

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

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

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

Drupal (V7) : principes et petite expérience

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Wildix Web API. Guide Rapide

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

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

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

Gestion des documents associés

Comment développer et intégrer un module à PhpMyLab?

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Kaseya 2. Guide de démarrage rapide. pour VSA 6,0

Formation. Module WEB 4.1. Support de cours

CMS Open Source : état de l'art et méthodologie de choix

Programme de la formation

TalkToMe : votre première appli App Inventor Ce tutoriel vous aidera à construire une appli parlante qui peut sauvegarder des phrases sur demande.

7 S'abonner aux notifications des nouveaux appels

Procédure d Installation et de mise à jour du client CAN-8 32 bits

Auguria_PCM Product & Combination Manager

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

Edition de sites Jahia 6.6

INTRODUCTION AU CMS MODX

Utilisation de GLPI. 1.Page d'accueil. Introduction

Module pour la solution e-commerce Magento

Entity API. Alexandre Todorov, Felip Manyer i Ballester. Montpellier, le 17 septembre 2014

Module d introduction Comment réaliser vos propres cartes avec ArcGIS Online

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

Tutoriel TYPO3 pour les rédacteurs

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

SOMMAIRE 1 INTRODUCTION 4 2 GUIDE D UTILISATION ET TUTORIAUX VIDEOS EN LIGNE 4 3 CONTACTER VOTRE SUPPORT 4 4 RACCOURCIS CLAVIER 5

Introduction : Cadkey

Pierre Racine Professionnel de recherche Centre d étude de la forêt Département des sciences du bois et de la forêt, Université Laval, Québec

Panorama des CMS open sources. Sylvain Ferrand, CMAP École Polytechnique Journées Mathrice, Poitiers, 19 mars 2008

MEDIAplus elearning. version 6.6

Dans l'article précédent, vous avez appris

Gestionnaire de procédure Guide rapide

CP Upgrade Guide HOPEX V1R1 FR. Révisé le : 25 octobre Créé le : 16 juillet Auteur : Jérôme Horber

ECLIPSE ET PDT (Php development tools)

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

Découvrir Drupal. Les meilleurs thèmes et modules Drupal (présenta5on démo)

Le meilleur de l'open source dans votre cyber cafe

Utiliser CHAMILO pour le travail collaboratif

Créer une base de données

FORMATION DRUPAL. Support de cours - Mise à jour 02/11. Drupal / Matthieu Levet / JlGestion

Sage CRM. 7.2 Guide de Portail Client

Découvrir le CMS. et l utiliser dans une approche pro!

Sébastien Sougnez 24/12/ / s.sougnez@areaprog.com 2 ans et demi d expérience

LAB-Multimedia CMS. Guide d'auto-formation. Copyright by LAB-Multimedia 1/22

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

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

Introduction : présentation de la Business Intelligence

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

WordPress, thèmes et plugins : mode d'emploi

DRUPAL Guide de référence des meilleures extensions

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

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

Prototyper un site web avec Awestruct et Boostrap

STAGE2 STAGIAIRE / NIKOLAOS TSOLAKIS. 16/02/2015 : choix des outils nécessités pour l application : Didier Kolb, le maitre de stage

Transcription:

Panels : construire autrement Pascal Morin bellesmanieres @ d.o. Senior Dev @ Code Enigma

1. Définition, utilisation, concepts de base >site builders 2. Panels et le theme >themers & frontend devs 3. Developpement et concepts avancés >devs

1. Définition, utilisation, concepts de base

La page du projet : Qu'est-ce que c'est? https://drupal.org/project/panels

Qu'est-ce que c'est? At its core it is a drag and drop content manager that lets you visually design a layout and place content within that layout. À la base, c'est un gestionnaire de contenu drag and drop qui vous permet de concevoir visuellement une mise en page et d'y placer des éléments de contenu.

Qu'est-ce que c'est? At its core it is a drag and drop content manager that lets you visually design a layout and place content within that layout. À la base, c'est un gestionnaire de contenu drag and drop qui vous permet de concevoir visuellement une mise en page et d'y place des éléments de contenu.

Qu'est-ce que c'est? Il faut le voir comme une manière différente de faire interagir ensemble les éléments et concepts habituels de Drupal: Système de menu Entités (noeuds, utilisateurs, etc) Système de thème

Pour quoi? Pour aller au delà de ce que Drupal permet de faire, de manière simple et propre. La preuve par l'exemple

Article Titre Bloc téléchargement Image principale Corps du texte Les 5 derniers noeuds de la même catégorie

Drupal hook_node_preprocess arg(1) node--article.php node_load/entity_load page.tpl.php field_view_field hook_page_preprocess global $user hook_block_info module_invoke('block', 'block_view', XXX); user_is_logged_in() If/else/switch

Page C'est l'élément de base, qui correspond à un chemin : node/%node, mapage, autre/page. Ce chemin peut contenir des arguments, et sert de «support» aux variantes et aux autres éléments. Créer une 'page', c'est donc l'équivalent d'implémenter un hook_menu, dont le callback, les arguments, les droits d'accès, etc sont gérés pour nous par 'Panels'* * En fait, c'est pas vrai!

Contexte L'ensemble des informations disponibles pour tous les éléments de la page. Un contexte est souvent une entité ou un objet «chargé» (nœud, utilisateur, terme de taxonomie), mais pas forcément : langue pour un site multilingue, chaîne de texte, Un contexte peut découler d'un argument, du contexte global, d'une relation.

Variante C'est la partie responsable de générer le contenu, à partir des éléments préparés par la 'page' Une page peut contenir plusieurs variantes, dont l'une ou l'autre sera choisie en fonction de critéres prédéfinis, souvent liés au(x) contextes. C'est ce qui permet de moduler la mise en page et les éléments de contenu pour une même page.

Layout C'est un modèle de mise en page qui représente la disposition dans laquelles les différents éléments seront placés (colonnes, lignes). C'est l'équivalent d'un template de page dans un thème drupal, avec des régions (gauche, droite, bas, etc) Panels fourni un layout 'flexible', qui permet de créer par l'interface quasiment n'importe quel layout, et de le réutiliser.

Pane (panneau) C'est l'élément de contenu lui même, semblable au blocs de Drupal Un pane peut contenir n'importe quel type d'élement : un bloc, un menu, un élément d'entité, une vue,

2. Panels et le theme

En guise d'introduction L'interface d'administration permet d'ajouter des classes et des ids aux différents éléments (body, régions, panes). Suffisant dans certains cas simples.

Concevoir sa page Panels conserve le système de theming standard drupal, mais les éléments de bases sont différents. Par défaut, Panels agit au niveau du «contenu» de la page : $page['content']. Le niveau de «Panelization» est donc principalement une question de choix, de besoins et de familiarité avec le module.

Choix du thème Certains thèmes sont plus adaptés que d'autres à l'utilisation avec Panels. En vrac : Tao, Zen, AT Panels Everywhere, Aurora, Panels 960gs, Precision, Clarity, Omega, Le contenu d'un page.tpl.php idéal : <?php print render($page['content']);?>

Templates Par défault, il y a peu de templates qu'on peut directement overrider dans le theme. En gros un seul : panels-pane.tpl.php Les suggestions de templates sont basées sur le type de pane : (voir https://drupal.org/node/1678810) panels-pane--node-title panels-pane--views-panes Il est bien sûr possible d'implémenter d'autres templates (HOOK_preprocess_panels_pane) pour des besoins précis.

Layouts Panels fournit quelques layouts les plus courants : 2 et 3 colonnes, colonnes + haut et bas, etc Il existe aussi un layout flexible, qui permet de construire et de réutiliser presque tout type de layout. https://drupal.org/project/panels_extra_layouts Dans la plupart des cas, on a besoin de plus de contrôle sur le markup généré. On doit donc créer son propre layout.

Layouts Un layout est constitué de : Un fichier de définition des caractéristiques de notre layout (nom, catégorie, régions disponibles, etc) Un fichier tpl.php (Un fichier CSS) (Un fichier PNG) C'est un peu comme un page.tpl.php, ou un mini-theme qui ne s'appliquerait qu'au contenu que l'on choisi.

Fichier paris2013.inc $plugin = array( 'title' => t('2 colonnes'), 'category' => t('paris 2013'), 'icon' => 'paris2013.png', 'theme' => 'paris2013', // Les underscores doivent être remplacés par des tirets. 'css' => 'paris2013.css', 'regions' => array( 'section1' => t('section 1'), 'section2' => t('section 2'), ), );

Fichier paris2013.tpl.php <div class="panel-display panel-2col clearfix" <?php if (!empty($css_id)) { print "id=\"$css_id\""; }? >> <div class="panel-panel panel-col-first"> <div class="inside"><?php print $content['section1'];?></div> </div> <div class="panel-panel panel-col-last"> <div class="inside"><?php print $content['section2'];?></div> </div> </div>

Styles Un style correspond à un ensemble de mise en forme. Un style est réutilisable et s'applique au niveau de la région, du pane ou de la variante. Un sous-module de Panels (stylizer) permet de créer et réutiliser des styles par l'interface.

Styles Exemple tiré de : https://drupal.org/project/panels_tabs $plugin = array( 'title' => t('tabs'), 'description' => t('show panel panes in a region as tabs.'), 'render region' => 'panels_tabs_style_render_region', );

Pour résumer, la démarche est à l'opposée du theming Drupal habituel : au lieu de subir du contenu formaté et de chercher comment supplanter le markup, on définit le markup séparément (layout, style) et on choisit à quel élément l'appliquer. C'est toujours la même démarche de séparation de la logique et de la génération de contenu.

Pour aller plus loin https://drupal.org/project/semantic_panels https://drupal.org/project/ds https://drupal.org/project/panels_everywhere http://www.codeenigma.com/en/blog/drupal-theming-death-of-athemer

3. Developpement et concepts avancés

Rendre à César Panels lui-même ne fournit en fait que certaines des fonctionalités que l'on a vu jusqu'à présent. C'est en fait la combinaison de 3 modules : CTools Page Manager Panels

Ctools C'est le module sur lequel tout repose. Il fournit les composants de base : Contextes et arguments Droits d'accès Cache* Relations «Content type»

Page Manager Il joue un rôle similaire au menu router de Drupal Implémente/supplante les entrées de menu Détermine quels handlers doivent être appelés Fournit aussi l'interface d'administration des pages

Panels Il étend (beaucoup!) les fonctionnalités du page manager et de Ctools et sert de glue entre les deux Définit des 'renderer' (ce qui effectivement génére le HTML) Ajoute de nouveaux types de plugins Ctools : style, layout, cache Et bien sûr, fournit l'interface d'administration qui permet de créer tout notre contenu

Plugins Taches Contexte Cache Access Argument Content type Relationship (Layout) (Style)

Plugins HOOK_ctools_plugin_directory() HOOK_ctools_plugin_api()

plugin_name.inc $plugin = array( 'title' => t('mon plugin'), 'category' => t('ma catégorie'), 'callback' => 'ma_function_de_callback', ); MODULENAME_PLUGINNAME_PLUGINTYPE_CALLBACKNAME()

Task handler : json_output.inc

Content type : paris_2013.inc $plugin = array( 'single' => TRUE, 'title' => t('infos utilisateurs'), 'icon' => 'icon_test.png', 'category' => t('paris 2013'), 'defaults' => array(), 'render callback' => 'panelstalk_paris_2013_content_type_render', 'required context' => array( new ctools_context_optional(t('user ID'), 'user') //@see argument uid.inc @see node.inc ), ); function panelstalk_paris_2013_content_type_render($subtype, $conf, $panel_args, $context) function panelstalk_paris_2013_content_type_admin_title($subtype, $conf) function panelstalk_paris_2013_content_type_edit_form($form, &$form_state) function panelstalk_paris_2013_content_type_edit_form_submit($form, &$form_state)

Accès Garder à l'esprit que les contextes ne sont pas encore disponibles Variante + 403 Un exemple de plugin d'accès : https://drupal.org/project/domain_ctools

Contexte Ctools fournit déjà un contexte pour les entités, même custom.

Renderer Permet de controller entièrement le rendu d'un display de Panels. C'est, par exemple, la méthode utilisée par les modules IPE et ESI.

En vrac https://drupal.org/project/pm_existing_pages http://drupal.org/project/fieldable_panels_panes https://drupal.org/project/panelizer https://drupal.org/project/panopoly