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 😉

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.