Construire un site avec Drupal

Le but de ces pages est de donner quelques indications pour construire un site avec Drupal. N'hésitez pas à modifier ou à rajouter un page si cela vous semble opportun (il faut disposer d'un compte et être connecté).

Quel que soit le site

Drupal 6

Vous aurez besoin au moins des deux modules suivants que vous devez installer dès le départ :

Drupal, une histoire de modules

On essaie ici de présenter une petite liste de modules avec leur application, on s'appliquera à noter si le module a été testé ou non.

La liste est loin d'être exhaustive, bien entendu, allez voir sur http://drupal.org pour avoir une idée de ce que l'on peut trouver.

 

 

Module à tester (6 ou 7)

interpréter du Tex dans Drupal http://drupal.org/project/drutex

Ajouter des champs aux votes : http://drupal.org/project/pollfield

Ajouter des champs multimédia http://drupal.org/project/emfield

 

Modules pour Drupal 7

Content Access

Ce module permet comme son nom l'indique de restreindre l'accès plus finement que les rôles de Drupal. En effet, il permet de gérer l'accès node par node et non plus par type de contenu.

Pour l'utiliser, il faut activer le Content Access dans le type de node (onglet structure) et ensuite un nouvel onglet apparaît lors de la création du node.
le module optionnel ACL est aussi très intéresant car il permet de gérer les droits utilisateurs par utilisateurs et par node.
Pour créer un intranet, ce module peut être efficace ou restreindre les forums, etc.

Je l'ai utilisé avec succès.

A comparer avec Taxonomy Access Control que je ne connais pas.

Ce module est disponible pour la v6 aussi.

http://drupal.org/project/content_access

http://drupal.org/project/acl

 

Make Meeting Scheduler (Doodle like)

Permet de proposer un doodle anonyme. pour la V6, ça marche ss pb.

malheureusement le port en v7 ne semble pas concluant, j'ai posé un request mais pas de réponse.

http://drupal.org/project/makemeeting

Rules

en test

Permettrait d'associer des évènements à des actions (ou l'inverse)

 

Webform

L'interface de Drupal 7 par défaut permet de créer le type de node que l'on souhaite en pouvant modifier les différents champs (si Field est activé). Et lors de la création d'un nouveau contenu, on contrôle les champs. Mais dans ce cas, on crée à chaque réponse de formulaire, un nouveau node. Ce qui est rarement le but d'un formulaire.

Webform permet de créer des formulaires personnalisés avec des contrôles automatiquement appliqués : mail, date, obligatoire ou non, etc. et la liste des résultats aux formulaires est exportable en différents formats.

Un Webform est un type de contenu, donc on peut déléguer la création de formulaire.

Ce module est très utile pour créer un nouveau sondage par exemple, plus fin que le module Poll intégré à Drupal.

Ou comme dans mon cas, je compte l'utiliser pour gérer les formulaires de missions ou invitations en parallèle avec Rules pour gérer un workflow de validation des missions.

Testé et validé.

http://drupal.org/project/webform

Site d'un laboratoire

Annuaire

Intranet

Pour faire un intranet, on commence par répondre à deux types de questions :

  • Qui y aura accès ? comment discriminer les utilisateurs ? Via leur login ou via un autre système ?
    Drupal propose par défaut un système de rôle que l'on attribue aux utilisateurs. Dans ce cas, on donnera l'accès selon le rôle.
  • Comment identifier le contenu 'Intranet' parmi ceux du site ? A-t-on besoin d'un granularité plus fine que contenu privé et contenu public ? Est-ce qu'un contenu est susceptible de changer de statut au cours de sa vie ?
    Il existe plusieurs modules qui gèrent des ACLs. On en présente ci-dessous quelques uns.
  1. Gérer par contenu via le module Content Access
    Ce module permet de gérer les ACLs contenu par contenu. On definit les droits d'accès à un contenu dans sa page d'édition en fonction des rôle.
    • Avantage : tres grande simplicité de mise en place. Évolution de statut des contenus relativement aisée.
    • Inconvénient : Pas de possibilités de changement de politique des ACLs sauf à aller éditer à la main les droits de chaque contenu.
  2. Gérer par type de contenu via le module Content Type
    Les types de contenus servent à créer des contenus distincts. La distinction peut autant concerner la structure de données sous-jacente à un contenu que les droits que l'on souhaite associés à un type de contenu. La gestion des ACLs est implémentées automatiquement avec la création d'un nouveau type de contenu. On la gère via la pages standard des droits d'accès. Dans notre situation, nous aurons deux types de contenu privé et public.
    • Avantage : grande simplicité de mise en place.
    • Inconvénient : les contenus sont figés dans le type de contenu dans lequel ils ont été créés.
  3. Gérer par la taxonomie des contenus via le module Taxonomy Access Control (TAC)
    Drupal possède un système de taxonomie qui permet de gérer des mots (appelées étiquettes) que l'on associe aux contenux. Ces mots sont rangés dans des vocabulaires. Le module TAC permet de gérer les ACLs ayant la forme suivante : donner (interdire) le droit en écriture (ou en lecture) au rôle R sur les contenus ayant l'étiquette E.
    • Avantage : grande souplesse. Changement de statut d'un contenu aisé. Possibilité de changement de politique des ACLs à un niveau logique.
    • Inconvénient : gestion très complexe qui nécessite une bonne compréhension de la gestion des ACLs contradictoire : Que se passe-t-il si une personne possède deux rôles donnant des droits contradictoires ? Que se passe-t-il si deux étiquettes donnent des droits contradictoires ?

 

Pages personnelles

Authentification dap

Site pour une conférence

Formulaire d'inscription

Drupal 6

Pour faire un formulaire d'inscription, il faut

  • configurer dans Gestion des utilisateurs>paramètres des utilisateurs les modalités d'inscription (confirmation d'inscription ou non, mail de confirmation, etc) auquelles les participants seront soumis lors de leur inscription à votre conférence (L'inscription à la conférence prendra donc la forme de la création d'un compte d'utilisateur sur le site de la conférence)

  • activer le module Core facultatif > Profile dans la section construction du site>modules et configurer ensuite le formulaire d'inscription dans la section Gestion des utilisateurs>profils en rajoutant par exemple des champs texte pour le nom de famille, le prénom, l'adresse, etc (l'email est déjà par défaut dans le formulaire d'inscription d'un utilisateur drupal).

    NB : on peut aussi utiliser Gestion des utilisateurs>profils pour définir des champs qui serviront à la gestion des inscrits, par exemple, un champs liste avec le statut des inscripts (inscription confirmée, bourse accordée, etc). 

La lites des personnes inscrites, c'est-à-dire des utilisateurs, est visible dans Gestion des utilisateurs>Utilisateurs>Lister. Elle n'est accessible qu'aux personnes ayant les autorisations nécessaires.

Liste publique des inscrits

Drupal 6

Si vous voulez une liste des inscrits publique et dynamique, il faut activer le module Views > Views  et Views > Views UI (et Autres > Advanced help si ça n'est pas déjà fait) dans la section construction du site > modules. Le module views sert à faire des requêtes dans la base de données de votre site et à afficher les résultats dans des pages. Il est très complexe. Aussi, vous pouvez commencer par un exemple simple en important le code ci-dessous via construction du site > vues > importer :

$view = new view; $view->name = 'liste_inscrits'; $view->description = 'listes des inscrits'; $view->tag = ''; $view->view_php = ''; $view->base_table = 'users'; $view->is_cacheable = FALSE; $view->api_version = 2; $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ $handler = $view->new_display('default', 'Paramètres par défaut', 'default'); $handler->override_option('fields', array( 'mail' => array( 'label' => 'E-mail', 'alter' => array( 'alter_text' => 0, 'text' => '', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'target' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'html' => 0, 'strip_tags' => 0, ), 'empty' => '', 'hide_empty' => 0, 'empty_zero' => 0, 'link_to_user' => 'mailto', 'exclude' => 0, 'id' => 'mail', 'table' => 'users', 'field' => 'mail', 'relationship' => 'none', ), 'created' => array( 'label' => 'Date d\'inscription', 'alter' => array( 'alter_text' => 0, 'text' => '', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'target' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'html' => 0, 'strip_tags' => 0, ), 'empty' => '', 'hide_empty' => 0, 'empty_zero' => 0, 'date_format' => 'custom', 'custom_date_format' => 'd/m/Y', 'exclude' => 0, 'id' => 'created', 'table' => 'users', 'field' => 'created', 'relationship' => 'none', 'override' => array( 'button' => 'Supplanter', ), ), )); $handler->override_option('access', array( 'type' => 'none', )); $handler->override_option('cache', array( 'type' => 'none', )); $handler->override_option('header', 'Personnes inscrites'); $handler->override_option('header_format', '1'); $handler->override_option('header_empty', 0); $handler->override_option('items_per_page', 0); $handler->override_option('distinct', 1); $handler->override_option('style_plugin', 'table'); $handler->override_option('style_options', array( 'grouping' => '', 'override' => 1, 'sticky' => 0, 'order' => 'asc', 'columns' => array( 'created' => 'created', 'mail' => 'mail', ), 'info' => array( 'created' => array( 'sortable' => 1, 'separator' => '', ), 'mail' => array( 'sortable' => 1, 'separator' => '', ), ), 'default' => '-1', )); $handler = $view->new_display('page', 'liste_des_inscrits', 'page_1'); $handler->override_option('path', 'liste-inscrits'); $handler->override_option('menu', array( 'type' => 'none', 'title' => '', 'description' => '', 'weight' => 0, 'name' => 'navigation', )); $handler->override_option('tab_options', array( 'type' => 'none', 'title' => '', 'description' => '', 'weight' => 0, 'name' => 'navigation', ));

Choisissez ensuite choisir les champs que vous voulez ajouter, enlever, afficher en trouvant le bon endroit où cliquer dans la zone champs de la configuration de la vue. Lorsque vous ajoutez des champs, vous trouverez certainement les champs qui vous intéresse dans les groupes profil et utilisateur. Finissez de configurer puis cliquez sur enregistrer.

La liste des inscrits est maintenant visible pour tous à l'adresse

monsite.fr/listes-inscrits

Si vous voulez faire des vues plus complexes, reportez-vous à la documentation de views associée aux points d'interrogation ou trouvez une vidéo d'initiation avec google.

Site multilingue

Prérequis

Drupal 6 

Vous devez installer les modules

  • Core facultatif > Locale
  • Core facultatif > Content translation
  • Multilanguage > Locale updater
  • Multilanguage > Language icons
  • Multilanguage > Intertionalization

Drupal 7

Vous devez installer les modules

  • Core facultatif > Locale
  • Core facultatif > Content translation
  • Multilanguage > Locale updater
  • Multilanguage > Intertionalization

Voici un tutoriel vidéo en français qui explique la procédure

http://www.drupalfacile.org/tutoriel/drupal7/episode-35-realiser-un-site...

http://www.drupalfacile.org/tutoriel/drupal7/episode-35-realiser-un-site...

Ajouter et configurer une langue

 Drupal 6

  1. Rajouter la langue de son choix via Configuration du site > Langues > Ajouter une langue
  2. Choisir la langue par défaut dans Configuration du site > Langues > Lister
  3. Importer un (ou des) fichier(s) de traduction dans Construction du site > Traduire l'interface > Importer
    (Vous trouverez les fichiers de traduction en français ici )
  4. Si vous voulez mettre à jour plus tard, ce fichier de configuration, vous pourrez le faire via  Construction du site > Traduire l'interface > Mettre à jour