Introduction

Ne vous est-il jamais arrivé de reprendre un projet et de ne plus connaitre le mot de passe admin ?

Plusieurs solutions s'offrent alors à vous, l'une d'entre-elles consiste à modifier le mot de passe directement en base. Oui mais quel est l'encodage du mot de passe ? MD5 ? Et bien non, ce n'est pas si simple !  Heureusement, Drupal fournit un script qui permet de crypter un mot de passe.

password-hash.sh

Ce script se trouve ici : racineDuProjet/scripts/password-hash.sh.
Pour crypter un mot de passe, tapez la commande suivante dans votre console :

racineDuProjet/scripts/password-hash.sh motDePasse

Il ne reste ensuite plus qu'à mettre à jour le mot de passe en base de données avec une requête du type :

UPDATE user SET pass='$S$CpiOFftf4apILxJCsVJGb09ijB11HLGjBDp2XbfofmpiqOa&b2c' where uid='1'

Autres méthodes

  • utiliser Drush avec la commande user-password
  • utiliser directement la méthode user_hash_password($password) dans un script PHP (en ayant charger le bootstrap) :
define('DRUPAL_ROOT', getcwd());
include_once DRUPAL_ROOT . '/includes/password.inc';
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
echo user_hash_password('mod de passe');

Voici comment charger un bloc directement depuis le code PHP (depuis un module ou le fichier page.tpl.php par exemple).

  1. Afficher un bloc Drupal (natif, bloc de contenu par exemple)
$block = module_invoke('block', 'block_view', 'ID_du_bloc'); 
print render($block['content']);

L'ID_du_bloc est disponible  lorsque vous éditez un bloc en backofficeadmin/structure/block/manage/block/D_du_bloc/configure

  1. Afficher un bloc Drupal créé avec Views
$block = module_invoke('views', 'block_view', 'Nom_du_bloc'); 
print render($block['content']);

Le Nom_du_bloc (paramètre Delta) est disponible lorsque vous éditez un bloc en backoffice : admin/structure/block/manage/views/Nom_du_bloc/configure

  1. Afficher un bloc Drupal créé via un module custom
$block = module_invoke('module_name', 'block_view', 'block_delta'); 
print render($block['content']);

Module_name correspond au nom du module, block_delta est disponible lorsque vous éditez un bloc en backoffice : admin/structure/block/manage/views/block_delta/configure

Vous trouverez plus d'information ici.

 

Le module jcarousel permet facilement d’intégrer un carousel dans une page Drupal.
Il existe deux manières pour ajouter un carousel :

  • via views : méthode la plus simple, permettant de sélectionner les données et la mise en forme en back-office
  • via l’API (jcarousel_add($class_name, $settings), méthode plus complexe nécsessitant de mettre les mains dans le code mais offrant un contrôle total du code

Nous allons dans ce tutoriel travailler avec la première solution afin de créer un block grâce à views. Cette méthode permet de configurer un certain nombre de paramètres directement en backoffice : type de défilement, temps de pause etc. En revanche ce mode de fontionnement n’offre pas la possibilité d’ajouter les boutons « play » et « stop » permettant d’arrêter et de reprendre le défilement.

Alors comment faire si vous souhaitez garder la souplesse de views tout en bénéficiant de la customisation offerte par jcarousel_add ? Et bien il va falloir mettre les mains dans le cambouis et modifier le template d’affichage du carousel.

  1. Pré-requis 
  1. Création du carousel et affichage en page d’accueil

Une fois le module activé, rendez-vous sur la page de gestion des vues (admin/structure/views) et créez-en une nouvelle (de type block) en choisissant le format d‘affichage (display format) « jCarousel » :

createBlock

Pour les besoins de ce tutoriel, nous n’allons pas customiser la vue. Enregistrer-là et ajouter ce block nouvellement créé dans une région de votre site (admin/structure/block). Normalement vous obtiendrez quelque chose comme ceci :

carousel

Il est possible de modifier le nombre d’items affichés, de rajouter les numéros pour naviguer d’un slide à un autre via les settings du jCarouel disponible dans la gestion de la vue ; je ne vais pas m’attarder sur ce point dans ce tutoriel :

blocStyleOptions

  1. Ajout des boutons play / stop

Le principe va être le suivant : 

  • Positionner les contrôles html (liens, boutons) dans le template
  • Récupérer l’instance javascript du carousel créé par drupal
  • Attacher les actions aux boutons

Il faut tout d’abord copier le fichier « jcarousel-view.tpl.php » (modules\jcarousel\includes) dans votre thème afin de le surcharger, c’est maintenant ce fichier qui sera utilisé pour afficher votre carousel.

Pour récupérer l’instance de carousel, il faut connaitre sont identifiant, pour cela voici une méthode simple : afficher le code source de votre page et rechercher la clé « "carousels": » qui doit être dans une chaîne javascript commençant par « jQuery.extend(Drupal.settings». Cette clé contient un tableau de carousel (un seul item dans notre cas) dont l’identifiant et du style « jcarousel-dom-1 » :

jquery

Une fois que vous avez cette identifiant, éditez le fichier de template et positionnez vos contrôles HTML où bon vous semble :

<ul class="btn-play-pause">
       <li><a href="javascript:void(0);" class="play" id="btn_play"><span class="hidden"><?php echo t("play"); ?></span></a></li>
       <li><a href="javascript:void(0);" class="pause" id="btn_pause"><span class="hidden"><?php echo t("stop"); ?></span></a></li>
</ul>

Ajoutez ensuite le javascript suivant :

<script type="text/javascript">
            //ajout d’une function de callback sur le carousel
                jQuery.extend(Drupal.settings.jcarousel.carousels[« jcarousel-dom-1 »], {
                               "initCallback": jcarousel_initCallback
                               });

                   //function de callback permettant d’affecter les actions aux liens play / stop
                function jcarousel_initCallback(carousel) {
                               jQuery('#btn_pause').bind('click', function() {
                                               carousel.stopAuto();
                                 });
                               jQuery('#btn_play').bind('click', function() {
                                               carousel.startAuto();
                                 });
                }
</script>

Sauvegardez le fichier, videz les caches, rechargez la page… enjoy 😉

Nous allons voir dans ce tutoriel comment rediriger un utilisateur vers une page spécifique (front-office ou back-office) lors de sa connexion.
Dans l'exemple suivant, nous allons rediriger les administreurs vers le dashboard (backoffice).

  1. Pré-requis
  • Installer le module rules
  • Activer tous les 3 sous-modules
  1. Création de la règle
  • Se rendre sur l'écran de gestion des règles (admin/config/workflow/rules)
  • Ajouter une nouvelle règle  "Redirection dashboard"

rules1 

  • Retourner sur l'écran de gestion des règles (admin/config/workflow/rules) et éditer la règle nouvellement créée
  • Ajouter une condition de type "User has role(s)" 

rules2

  • Sélectionner le profil "administrateur" et sauvagarder

rules3

​Il ne nous reste maintenant plus qu'à configrer l'action à effectuer lorsqu'un utilisateur ayant le rôle "administrateur se connecte".
Pour se faire il est nécessaire de :

  • Retourner sur l'écran de gestion des règles (admin/config/workflow/rules)
  • Cliquer sur "Add action" 
  • Sélectionner une action de type "System >  page redirect" et saisir l'URL vers laquelle rediriger l'utilisateur. Dans notre cas il s'agit de "/#overlay=admin/dashboard" (ici le "#overlay=" est facultatif, il permet l'affichage de la page en overlay si l'option est activée sur votre site)

rules4

  • Sauvegarder

Vous n'avez plus qu'à vous déconnecter et vous reconnecter : vous êtes maintenant redirigé sur le dashboard !

J'espère que ce petit tutoriel vous aura aidé, n'hésitez pas à laisser un commentaire.

 

Drupal propose une gestion de contenu centralisée au niveau du backoffice. Ceci est avantageux dans le sens où, le webmaster peut rapidement et facilement saisir du contenu ; en revanche, pour un contributeur manipulant uniquement 2 ou 3 types de contenu il peut être préférable de disposer d’un écran de gestion par type de contenu. Nous allons voir comment, à l’aide du module admin_views, créer des vues pour simplifier la gestion de contenu.

  1. Pré-requis :
  1. Admin_views :

Une fois ce module installé, la page de gestion de contenu voit apparaître de nouveaux filtres :

En fait, ce module a installé une vue spécifique à la gestion de contenu. Vous pouvez trouver cette vue dans le menu « Structure > Views » :

Vous remarquerez qu’une vue a également été installée pour la gestion des utilisateurs.

Vous allez me dire « jusque-là, rien d’extraordinaire ! ». Effectivement, mais grâce à la souplesse de views, vous allez pouvoir créer vos propres vues et ainsi gérer : les filtres de recherche, mais aussi les colonnes disponibles dans le tableau des résultas de recherche.

  1. Customisation

Nous allons prendre en exemple un type de contenu « Evènement » ayant la structure suivante :

Nous allons maintenant créer une vue spécifique permettant la gestion des évènements (et uniquement de ce type de contenu) en backoffice. Pour ce faire :

  •  Se rendre sur l’écran de gestion des vues : admin/structure/views
  • Modifier la vue « Administration : node » :

  • Créer un nouvel affichage de type « Page » 

  • Modifier le « diplay name » en Events
  • Définir un chemin dans « page setting » : exemple : admin/content/events
  • Enregistrer la vue

A partir de maintenant, vous disposer en backoffice d’une vue accessible via le chemin suivant "http://mondomaine/admin/content/events". Cette vue est, pour le moment, la même que admin/content. Nous allons donc maintenant la modifier afin qu’elle remonte uniquement les contenus de type  « évènement ».

  • Editer la vue nouvellement créée
  • Modifier le filtre (filter criteria) afin de préciser le type de contenu évènement :

  • Ajouter une colonne dans le tableau de résultat afin d’y ajouter la date de l’évènement en ajoutant un champ :

  • Ajouter un filtre sur cette date 

Après toutes ces étapes, vous obtiendrez la vue suivante : 

Cette vue permet donc de gérer (filtrer, lister, modifier et supprimer) les contenus de type « évènement ». Nous allons maintenant rajouter un dernier élément : un lien permettant de créer un évènement directement depuis cette vue :

  • Editer la vue
  • Ajouter un en-tête de type « Global: Unfiltered text »

  • Saisissez le lien vers la page d’ajout « <a href="http://mondomaine/node/add/evenement">Ajouter un Evènement</a> », et voilà le résultat :

  1. Accéder à la gestion des évènements :

Plusieurs solutions sont possibles pour permettre au webmaster d’accéder à cette vue nouvellement créée :

  • Utiliser le module « shortcut » et configurer un lien vers « admin/content/events » :

Vous pouvez ainsi donner un accès direct à toutes vos vues

  • Si vous vous sentez d’humeur à coder, il vous suffit de créer une entrée dans le menu principal de la barre d'administration (tuto à venir)

Et voilà ! Vous êtes maintenant capable de gérer des vues pour administrer vos contenus. N'hésitez pas à laisser un commentaire si vous avez des questions, ou bien tout simplement si cet article vous a plu.