Planète

Par anavarre

Présentation : Optimiser les performances Drupal par le cache

En janvier dernier, lors d'un vote sur les sujets que les membres de la communauté lyonnaise voulaient voir traiter dans les prochains meetups, le sujet de l'optimisation des performances Drupal a comme très souvent refait son apparition. En revanche, l'angle demandé était un peu moins habituel car assez spécifique. Comment optimiser les performances Drupal, donc, mais "par le cache" uniquement. Sujet assez dense et technique, mais qui est vraiment intéressant tant il est vaste et complexe.

Par anavarre

Savez-vous vous servir de drupalcode.org ?

Sur chaque page de projet Drupal, plusieurs informations extrêmement importantes et/ou pratiques existent. L'une d'entre elles vous aura peut-être échappée et concerne le dépôt git du projet que vous pouvez manipuler en ligne de plusieurs façons. Vous y avez accès très facilement, en suivant le lien Repository viewer depuis le bloc Development dans la barre latérale de droite.

Par anavarre

Faut-il apprendre Drupal 8 maintenant ?

La question peut se poser car si l'on en croit la roadmap de développement, nous devrions pouvoir avoir une version stable à la fin de l'été 2013, pour autant que les bugs critiques aient été réglés. Autant dire que lorsque vous voudrez commencer un site dessus ou répondre à une demande client, il vaudra mieux être prêt vu l'éténdue des changements (c'est un euphémisme).

Par anavarre

Bilan 2013 et perspectives 2014

L'année 2013 aura littéralement été une année en demi-teinte pour DrupalFacile. Les 6 premiers mois de l'année ont été intenses avec des vidéos postées régulièrement et même un record de traffic battu en mars (6924 visiteurs uniques). Hélas, depuis avant l'été, le site est au point mort et DrupalFacile reçoit régulièrement des encouragements et des demandes de vidéos qui sont précieusement consignées !

Par anavarre

Sauvegardez vos sites Drupal avec NodeSquirrel

Si vous suivez de près l'actualité Drupal, cela ne vous aura pas échappé. NodeSquirrel vient récemment d'ouvrir ses portes après une longue beta pour se placer comme LE spécialiste de la sauvegarde hors-site de vos sites Drupal. Il faut dire que l'équipe qui propose ce service est la même que celle derrière le module Backup and Migrate, ce qui lui donne une crédibilité certaine quand on connaît la popularité du module et à quel point il fonctionne bien.

Par anavarre

Bilan 2012 et perspectives 2013

Voilà l'année 2013 qui commence et DrupalFacile qui fête quasiment ses deux ans et demi. Comme chaque année, c'est le moment de vous dévoiler quelques statistiques sur le site et vous allez voir que les choses progressent plutôt bien, preuve que la demande d'informations et d'aide sur Drupal croît constamment :

Par anavarre

Les modules sur lesquels parier dans le futur

Récemment, je vous ai donné un rapide aperçu des nouveautés et challenges que Drupal 8 allait introduire. Je vous expliquais entre autres que bon nombre de modules allaient vraisemblablement disparaître. Cela va des modules stables sous Drupal 6 qui n'ont jamais eu de version stable pour Drupal 7 et n'en auront donc apparemment jamais sous Drupal 8, mais aussi des modules qui ne franchiront tout simplement pas le pas entre D7 et D8, pour quelque raison que ce soit.

Développer son propre plugin Drupal Crumbs







Le module Drupal Crumbs permet de maitriser son fil d’Ariane (Breadcrumb) selon des critères très complets (views, token, taxonomy, entity reference, etc). Son système de plugins lui permet de supporter toute entité créée sur votre site Drupal. Découvrons comment implémenter notre propre plugin Crumbs pour supporter une entité sur mesure ou encore fournie par un module contribué.

Thème 
Fil d'ariane
Modules
Drupal 7

Par Artusamak
Julien Dubois

Drupal et Scrum depuis les tranchées - Préparer la sprint définition

Drupal et Scrum depuis les tranchées - Préparer la sprint définition

Nous avons vu comment se déroule la sprint définition, voici maintenant quelques conseils pour faire en sorte que votre sprint définition se passe encore mieux grâce à de la préparation. Par ici pour les gens pressés.

Le succès d'une bonne sprint définition réside dans la qualité des stories qui constituent le backlog du produit. Les critères qui définissent une bonne story sont : sa taille (volume implicite de développement / configuration), la liste de ses critères d'acceptation (ils sont précis et facilement reproductibles), sa priorité (est-ce indispensable, bien d'avoir ou facultatif).
Réfléchir à ces éléments va donc prendre du temps, lorsque vous allez accompagner votre client, au tout début de la dernière semaine d'un sprint faites le point avec lui sur l'état de l'art de la priorisation et du niveau de définition des stories éligibles pour le prochaine sprint.
N'oubliez pas que votre client n'est pas un développeur web (sauf accident industriel), il ne sait pas ce qu'un module contrib peut faire clé en main. Vous avez un rôle de conseil à jouer pour l'aider à identifier ce qu'est une bonne taille de story et les bons critères d'acceptation qui l'accompagnent. L'une des clés à lui transmettre c'est de bien comprendre comment vous permettre d'itérer en se concentrant sur le découpage des fonctionalités en sous-groupes indispensable / important / facultatif.

Exemple : "je souhaite implémenter une fonctionnalité de recherche à facettes" on va d'abord se concentrer sur les données à indexer, les données à afficher puis on montrera au client le rendu de base pour ensuite se mettre d'accord sur les facettes à ajuster, les comportements spécifiques de filtres, la mise en page etc.

On préfèrera multiplier les stories de taille intermédiaire plutôt que les grosses stories pour la simple et bonne raison que plus vous aurez de fonctionnalités de taille limitée, plus il sera simple de mesurer vos progrès, d'ajuster vos priorités et de coller à votre vélocité.

Identifier les dépendances entre les stories est également important, cela évite à l'équipe de devoir complètement retrier le backlog à cause d'interdépendances non identifiées. Orienter les sprints sur des thèmes fonctionnels facilitera cette organisation, il n'y a rien de pire que des blocs fonctionnels démarrés dans tous les sens mais où rien n'est terminé. Scrum vous encourage à terminer des choses quitte à y revenir plus tard quand les besoins l'imposent plutôt que d'être concentrés sur 15 ou 20 fonctionnalités. J'ajouterai également que le mieux est l'ennemi du bien, à vouloir trop bien faire on fini par ne jamais faire.

TL;DR

Si on récapitule ce dont il faut s'assurer pour bien préparer sa sprint définition :

  • Rappeler tôt au client qu'il faut préparer le backlog
  • Aider le client à dimensionner et découper les stories en petits morceaux
  • Identifier les dépendances
  • Donner un thème aux sprints
Par juliendubreuil
julien dubreuil
Depuis 2009 maintenant, je développe avec le CMS/CMF Drupal. J’étais à la recherche d’un framework capable de remplacer un projet et je n’ai jamais arrêté de m’en servir depuis ce moment.

Drupal Commerce, ajouter un pane custom dans votre checkout

Drupal Commerce creation d'un pane de checkout

Comme nous avons pu le voir dans l’article précédent, il est simple de configurer le checkout de Drupal Commerce de façon à créer l’expérience utilisateur que vous désirez.

Dans cet article nous allons voir comment avec du code, ajouter et modifier des panes. Pour rappel, les panes sont les éléments qui composent les différentes pages du checkout. On y retrouve par exemple, le pane de paiement, d’adresse ou encore de choix de solution de transport.

Histoire d’illustrer cela, je vous propose de créer un module Drupal afin d’ajouter un pane permettant à vos clients de choisir parmi plusieurs emballages cadeaux. Ce simple module est accessible sur Github pour plus de compréhension.

Déclaration de notre nouveau Pane

La première chose à faire consiste à déclarer au système notre nouveau pane en utilisant le

hook_commerce_checkout_pane_info()

sandbox.module

1
2
3
4
5
6
7
8
9
function sandbox_commerce_checkout_pane_info() {
  $panes['paper_gift'] = array(
    'title' => t('Paper gifts'),
    'base' => 'paper_gift_pane',
    'page' => 'checkout',
  );

  return $panes;
}

Notre pane sera alors reconnu par Drupal et disponible dans le checkout. Dès à présent, vous pouvez activer le module et voir le pane apparaitre sur la page d’administration du checkout.

Comme à la manière des hooks de Drupal, le code qui génère l’affichage des panes va faire de l’introspection dans le code, de façon à chercher toutes les fonctions qui commenceront par la “base” que vous avez définie dans le hook_commerce_checkout_pane_info().

Ainsi le code sera à la recherche des fonctions suivantes :

  • BASE_settings_form()
  • BASE_checkout_form()
  • BASE_checkout_form_validate()
  • BASE_checkout_form_submit()
  • BASE_review()

Implémentation du formulaire d’administration du Pane

L’intérêt du pane est d’être affiché sur une page du checkout, néanmoins vous pouvez créer un formulaire de configuration pour celui-ci. Pour y accéder, rendez-vous sur l’interface d’administration du checkout. Notez qu’il n’y a pas de table dans laquelle les informations seront stockées, il vous faudra utiliser les méthodes variable_get() et variable_set() pour sauvegarder vos réglages.

sandbox.module

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * Pane: settings form callback.
 */
function paper_gift_pane_settings_form($checkout_pane) {
  $form['paper_gifts'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Ship this item in a gift box'),
    '#default_value' => variable_get('paper_gifts', array()),
    '#options' => paper_gift_pane_default_paper_gifts(),
  );

  return $form;
}

/**
 * Defines a list of default paper gifts to use.
 */
function paper_gift_pane_default_paper_gifts() {
  return array(
    'boy' => t('Boys'),
    'girl' => t('Girls'),
    'christmas' => t('Christmas'),
    'birthday' => t('Birthday'),
    'none' => t('None'),
  );
}

Dans le code ci-dessus, j’ai créé un formulaire d’administration et ajouté un champ texte, permettant au webmaster de modifier le texte qui sera affiché à l’utilisateur.

Création du Pane

Un pane n’est ni plus, ni moins qu’un formulaire dans le formulaire de checkout. Comme à l’habitude, vous y retrouverez le form, le form_validate et le form_submit.

Form

Le form contiendra ce qui sera affiché à l’utilisateur. Dans le cas de notre exemple, l’utilisateur pourra choisir entre plusieurs papiers cadeaux ou pas d’emballage.

sandbox.module

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * Pane: form callback.
 */
function paper_gift_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {
  $paper_gifts = array();
  $default_paper_gifts = paper_gift_pane_default_paper_gifts();

  foreach ($default_paper_gifts as $name => $title) {
    $image = array(
      'path' => drupal_get_path('module', 'sandbox') . '/images/' . $name . '.jpg',
      'title' => $title,
      'alt' => $title,
    );
    $paper_gifts[$name] = theme('image', $image);
  }

  $pane_form['paper_gift'] = array(
    '#type' => 'radios',
    '#default_value' => 'none',
    '#title' => t('Select your paper gift'),
    '#description' => t('Your items will be shipped in a gift box.'),
    '#options' => $paper_gifts,
    '#attributes' => array('class' => array('paper-gift-pane-selection')),
  );

  $pane_form['paper_gift']['#attached']['css'] = array(
    drupal_get_path('module', 'sandbox') . '/css/sandbox.css',
  );

  return $pane_form;
}

Form validate

Le form_validate permet d’effectuer des opérations de validation sur les champs saisis par l’utilisateur.

sandbox.module

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * Pane: form validation callback.
 */
function paper_gift_pane_checkout_form_validate($form, &$form_state, $checkout_pane, $order) {
  // Validate the given value or set to none if null.
  if (!empty($form_state['values'][$checkout_pane['pane_id']])) {
    $pane_values = $form_state['values'][$checkout_pane['pane_id']];

    if (empty($pane_values['paper_gift'])) {
      $pane_values['paper_gift'] = 'none';
    }
  }
  return TRUE;
}

Ici, on regarde simplement s’il y a une valeur, sinon on définit que l’utilisateur ne veut pas d’emballage.

Form submit

La sauvegarde des informations intervient dans le form_submit une fois que l’on a passé la validation.

sandbox.module

1
2
3
4
5
6
7
8
9
10
11
/**
 * Pane: form submission callback.
 */
function paper_gift_pane_checkout_form_submit($form, &$form_state, $checkout_pane, $order) {
  if (!empty($form_state['values'][$checkout_pane['pane_id']])) {
    $pane_values = $form_state['values'][$checkout_pane['pane_id']];
    if (!empty($pane_values['paper_gift'])) {
      $order->data['paper_gift'] = $pane_values['paper_gift'];
    }
  }
}

Remarquez que vous avez accès à l’objet $order et que vous pouvez faire ce que vous en voulez. Pour l’exercice j’aurais pu créer un nouveau line item, mais pour faire simple le choix de l’utilisateur résidera comme simple information dans la commande.

Form review

Une fois l’information attachée à la commande, il ne nous reste plus qu’à la faire paraitre sur le pane de review afin que l’utilisateur puisse la voir.

Pour cela il suffit d’implémenter le form_review

sandbox.module

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * Pane: Review
 */
function paper_gift_pane_review($form, $form_state, $checkout_pane, $order) {
  if ($order->data['paper_gift'] && $order->data['paper_gift']  != 'none') {
    $content['paper_gift'] = array(
      '#type' => 'item',
      '#markup' => t('Items in your order will be wrapped with the %paper paper gift', array('%paper' => $order->data['paper_gift'])),
    );
    return drupal_render($content);
  }
}

Modification d’un Pane existant

Comme mentionné précédemment, les panes ne sont que des forms et comme tout form vous avez la possibilité de les alterer via un hook_form_alter() ou encore mieux un hook_form_ID_alter().

Dans le cas ou vous voudriez modifier les paramètres d’un pane, vous implémentez la fonction hook_commerce_checkout_pane_info_alter()

Le mot de la fin

Au final, ce n’était pas si compliqué que cela ? En plus du fait d’avoir maintenant un pane pour offrir un emballage papier cadeau à vos clients, vous savez maintenant qu’il y a 3 grandes étapes dans la vie d’un pane. Le formulaire de settings pour l’admin, le formulaire destiné aux clients et le formulaire de review. Je serais curieux de savoir pourquoi vous avez besoin d’ajouter un pane dans votre checkout…
Comme mentionné au début de ce post, le code est accéssible sur Github.

Par hellosct1

Magazine Programmez Spécial Drupal

Le magazine 'Programmez', de l'été (juillet/août) 2014, numéro 176 a publié un supplément sous la forme d'un cahier spécial sur le CMS Drupa.l

programmez176.jpg

Le sommaire couvre de nombreux sujets, sous différents regards. Ainsi, vous trouverez de nombreux articles utiles comme :

  • Silicon Valley
  • Les Actus
  • Développeur du mois
  • Dossier sur l'inforamtique quantique
  • Coding For Fun
  • dossier sur les mobiles
  • etc.

Pour ma part, j'ai signé l'article suivant :

Bien démarrer avec Drupal

Commencer avec un nouveau CMS n'est jamais évident. Cependant la version 7 de Drupal a été améliorée pour mieux appréhender les projets et répondre aux attentes du web dynamique. Avec l'approche de la version 8, il est impératif de ne plus commencer de nouveaux projets en Drupal 6, même si celui-ci est disponible. il est temps de passer à Drupal 7

Consulter le magazine Programmez 176 en ligne

Par Artusamak
Julien Dubois

CMI : ... à la pratique

CMI : ... à la pratique

Nous avons précédemment vu la théorie à propos de CMI. C’est maintenant le moment de voir comment s’en servir dans des conditions réelles.

Afin de faire nos tests, je vous propose de monter deux Drupal 8 en parallèle. Appelons les Drupal-Prod et Drupal-Dev. Pour se faire, il suffit d’installer un Drupal 8 d’un côté, de prendre sa base de données et de l’injecter dans un second site.

Pour le moment, allons sur l’instance dite “dev” et faisons un petit changement rapide. Par exemple, allons changer le slogan du site.

Allez maintenant dans Configuration > Configuration Management > Onglet Full import/export > Export et cliquez sur le bouton export. Vous allez obtenir un fichier config.tar.gz

Gardez bien ce fichier au chaud, et allez faire un tour sur le 2ème site.

Sur la page Configuration > Configuration Management > Onglet Full import/export > Import, allez chercher votre config.tar.gz et uploadez le.

Si tout se passe bien, vous allez donc voir la page suivante vous indiquant qu’un élément a été modifié.

Cliquez sur le lien “View differences” et Drupal va vous montrer votre changement sous forme de “diff” directement.

Il suffit maintenant de valider les changements en soumettant le formulaire.
Et voilà, vos changements sont maintenant présents sur votre deuxième site.

Jusqu’ici, on aurait pu se contenter de transférer la base de données de “dev” sur “prod” et nous aurions eu le même résultat.
Néanmoins, n’oubliez pas une chose. Nous transférons ici uniquement de la configuration, et non du contenu. Cela signifie que le site de “prod” peut continuer à être alimenté en contenu, pendant que vous allez transférer la nouvelle configuration en production.

Utiliser CMI au sein d'une équipe

Le point important ici est: comment utiliser ce système afin de collaborer à plusieurs ?

Tout d’abord, il faut savoir que, par défaut, Drupal stocke les fichiers de configuration (les fameux fichiers « yaml ») dans un répertoire situé dans /sites/default/config/ avec une clé de hash. Cela doit ressembler à quelque chose du genre :

sites/default/files/config_1yrma6v3CrXoB35-RirGI9HNjvq1YBRNEHhezKiV6xdE6d4RiG6yrTu4el6LwKci1nuqjKtptA/staging

Néanmoins, et fort heureusement, ceci est facilement modifiable. En effet, cette clé est stockée dans votre settings.php, sous la forme :

$config_directories['staging'] = 'sites/default/files/config_1yrma6v3CrXoB35-RirGI9HNjvq1YBRNEHhezKiV6xdE6d4RiG6yrTu4el6LwKci1nuqjKtptA/staging’;

Il suffit donc de changer cette clé ici pour avoir quelque chose de plus « lisible », ou même de placer ce répertoire en dehors du webroot (bonne pratique de sécurité).

Pour notre test, changeons donc les deux clés du settings.php en :

$config_directories['active'] = 'sites/default/files/config_active';
$config_directories['staging'] = 'sites/default/files/config_staging';

Et maintenant, comment collaborer ?
C’est une chose relativement simple, à condition que chacun suive la même procédure.

Pour illustrer ceci, nous allons utiliser l’export/import de configuration via drush.

Les commandes importantes sont :

config-export (cex)   Export config from the active directory.
config-import (cim)   Import config from a config directory.

Pour commencer, lançons un export sur le site de production.

files git:(8.x) drush cex
The current contents of your export directory (sites/default/files/config_staging) will be deleted. (y/n): y
Configuration successfully exported to sites/default/files/config_staging.[success]

Puis commitez cette configuration initiale dans votre dépôt de code (git, svn …)

Chacun des développeurs va maintenant mettre à jour son dépôt local, puis importer la configuration.

A partir de ce moment, nous allons pouvoir chacun faire nos modifications en local, avant d’exporter à nouveau la configuration via drush, puis de commiter les changements.

L’agrégation des changements va se faire grâce à notre système de versionning de code.

Une fois la configuration d’une partie du site effectuée, la production sera alors mise à jour, la configuration à nouveau importée, et les changements seronts alors présent en production.
Tout simplement.

La solution repose donc, pour l’instant, sur un mélange entre ce qu’offre CMI et les fonctionnalités du gestionnaire de code (on ne le dira jamais assez, même si vous travaillez seul, c’est indispensable).

Personnellement, je ne pense pas que cela va beaucoup changer d’ici à la sortie de Drupal 8. Il va sûrement falloir se tourner vers la contrib afin de voir des solutions tierces, reposant sur ce qu’offre CMI, afin de réaliser ceci sans s’appuyer sur un gestionnaire de versionning de code.

Si vous souhaitez aller encore plus loin, nous ne pouvons que vous recommander la lecture de l'article produit par Nuvole : Packaging and reusing configuration in Drupal 8 [en]

Par Mantalo Conseil
Benjamin Grapeloux
Agence web, Agence de Communication et Marketing en Dordogne (Aquitaine)

Nouveau site vitrine pour La Chanteracoise

La Chanteracoise passe la vitesse supérieure

Pour Sylvain Boucher aussi, les sites Internet formatés par les sociétés commerciales du Web ont démontré leur limite. Enfermée dans un contrat de service qui ne lui laissait d'autres choix que celui d'attendre son terme, La Chanteracoise attendait patiemment le moment de pouvoir se libérer... c'est chose faite :

  • Le nouveau site est en ligne,
  • Il permet une gestion autonome du contenu,
  • L'investissement consacré au développement du site étant réalisé, le seul coût annuel sera désormais celui de l'hébergement !

Dans la continuité de notre accompagnement marketing

L'ensemble des missions parallèlement consacrées à la stratégie marketing pour permettre à La Chanteracoise de développer son activité, a été mis à profit dans la structure du nouveau site.

La segmentation des gammes et des différents circuits de distribution qui référencent la marque a pu contribuer à la structure très cohérente du contenu. Les univers graphiques des gammes cohabitent également en parfaite harmonie pour porter la pertinence des packaging et des visuels produits.

Une formation à la gestion du contenu

L'équipe commerciale est désormais formée à toutes les interventions récurrentes qui permettront à La Chanteracoise d'enrichir et d'actualiser les pages de son site Internet. À partir d'une arborescence préalablement posée et des vocabulaires de taxonomie précisément définis par l'agence pour optimiser la navigation sur le site, le service marketing de La Chanteracoise a pu intégrer très simplement ses textes de présentation et d'information.

Pour renforcer le positionnement de la marque

Site web de la Biscotterie La Chanteracoise, adaptable pour tout support mobile et fixeComme très souvent lors de la création ou de la refonte du site Internet d'une entreprise commerciale, l'objectif est multiple :

  • toucher sur la toile les publics que cherche à prospecter la marque,
  • impacter le marché par l'attractivité et l'amplitude des gammes de produits,
  • lier une relation professionnelle avec les réseaux de distribution et centrale de référencement,
  • communiquer ses valeurs et son engagement auprès des clients finaux,
  • contribuer au développement des ventes et des parts de marché.

Convaincu par les résultats très significatifs constatés à la suite des premières actions préconisées par notre agence, Sylvain nous a naturellement confié son projet Web en connaissance de cause.

Drupal pour voir plus loin

À celles et ceux qui imaginent que la puissance de Drupal implique un back office très complexe, la facilité et la rapidité avec lesquelles l'équipe de La Chanteracoise s'est appropriée les outils de publication démontrent qu'il n'en est rien ! Il appartient à l'agence de se mettre un minimum à la place de son client pour :

  • configurer un espace d'administration qui soit à la fois fonctionnel et agréable,
  • faire en sorte que la gestion du contenu soit un plaisir,
  • adapter les accès, les rôles et les droits des utilisateurs aux besoins avérés d'interventions récurrentes sur le contenu.

Côté public, la richesse et la diversité de Drupal et de ses nombreux modules ouvrent la voie toute grande à une ergonomie très favorable pour l'interactivité entre les contenus, l'accessiblité et la navigation mobile.

Bon, assez parlé de communication ! Envie de faire croustiller vos petits déjeuners et vos goûters gourmands ? Direction la-chanteracoise.fr !

Par juliendubreuil
julien dubreuil
Depuis 2009 maintenant, je développe avec le CMS/CMF Drupal. J’étais à la recherche d’un framework capable de remplacer un projet et je n’ai jamais arrêté de m’en servir depuis ce moment.

Drupal Commerce, maitriser votre checkout

Drupal Commerce configuration du checkout

Une des demandes récurrentes de la part des utilisateurs de Drupal Commerce est la possibilité de personnaliser le checkout. Que ce soit pour changer les étapes du checkout, ou pour recueillir des données supplémentaires, l’API de Drupal Commerce permet de répondre à ce besoin facilement.

Drupal Commerce vient avec deux concepts concernant le checkout, les Pages et les panes. Les “pages” permettent l’affichage et la configuration des différentes pages du checkout, comme par exemple la page de paiement, de livraison ou encore comme la page de résumé de commande. Ces pages contiennent des “panes”, permettant d’interagir avec le client, comme illustre la saisie de l’adresse ou du numéro de carte de crédit dans le checkout.

Attention toutefois, lorsque vous rallongez votre checkout, vous complexifiez le processus d’achat et augmentez les risques de perte de clients. Incontestablement, la bonne pratique est d’avoir le checkout le plus simple et court possible, néanmoins il existe certains cas où il faut déroger à la règle.

Ordonner les étapes de votre checkout

La façon la plus simple d’ordonner les étapes de votre checkout consiste à vous rendre sur l’interface d’administration de votre site dans la rubrique checkout settings de la section store > configuration

Cette page d’administration regroupe toutes les pages de votre checkout ainsi que les panes contenus dans chaque page. Drag’n dropable, vous pouvez déplacer un pane d’une page à une autre de façon à créer l’expérience utilisateur de votre choix.

Par défaut le checkout est découpé en 4 pages:
* Checkout : la page “Checkout”, est la première étape, elle permet la collecte des informations de base.
* Review order: la page “Review order” permet d’afficher un résumé de la commande avant la validation et la soumission du paiement.
* Payement : cette page, nommée “Payment”, est uniquement utilisée lorsque qu’une méthode de paiement est dite off-site.
* Checkout complete: la page “Checkout complete”, permet d’afficher une confirmation de commande au client.

Drupal Commerce checkout configurationDrupal Commerce checkout configuration

Ajouter des pages à votre checkout

Comme bien souvent, il existe deux façons de faire avec Drupal ou Drupal Commerce pour arriver à vos fins. Soit vous utilisez un module contrib, soit vous faites un peu de code custom.

Si vous souhaitez passer par un module, il vous faudra utiliser Drupal Commerce Checkout Pages qui vous permettra d’ajouter des pages depuis l’interface d’administration de votre site.

L’autre façon, consiste à utiliser l’API de Drupal Commerce en implémentant le hook_commerce_checkout_page_info() dans un module custom. Une fois créée votre page sera accessible dans l’interface d’administration. C’est de cette manière que sont créées les pages de Drupal Commerce. Pour plus d’information, rendez-vous dans le fichier commerce_checkout.api.php du sous module checkout.

Ajouter des panes à votre checkout

De la même manière que précédemment, il est possible de faire la même chose avec les panes.

Coté module vous pouvez vous baser sur Commerce extra panes afin d’afficher une ou plusieurs nodes dans votre checkout en guise d’information.

Coté code, il vous faudra implémenter le hook_commerce_checkout_pane_info() de façon à déclarer votre nouveau pane. Notez ensuite, que vous devrez créer vos callbacks, afin d’afficher les informations désirées.
Pour plus d’information, rendez-vous dans le fichier commerce_checkout.api.php du sous module checkout.

Le mot de la fin

Comme à l’accoutumée, il est simple de personnaliser le checkout de Drupal commerce que ce soit avec un module ou un peu de code custom. Encore une fois, attention de penser à l’expérience utilisateur de vos clients quand vous complexifiez le checkout.

Par Artusamak
Julien Dubois

Drupal et Scrum depuis les tranchées - La sprint définition

Drupal et Scrum depuis les tranchées - La sprint définition

Vous avez pu lire dans le billet précedent comment passer de la vision aux stories. Voyons maintenant comment gérer ce qu'il va se passer au démarrage du premier sprint et de tous ceux qui suivront : la sprint définition.

Pour les plus pressés d'entre vous qui ne veulent pas profiter du fun de l'article, direction le TL;DR.

A quoi sert la sprint définition ?

Le but de l'exercice est que l'équipe constitue la liste de ce qu'elle va avoir à faire au cours du sprint. Pour cela, le product owner passe en revue la liste des stories du backlog produit de la plus prioritaire à la moins prioritaire. Pour chaque story, l'équipe va passer en revue les critères d'acceptation et identifier les taches qui en découlent. L'exercice va donner lieu à des échanges entre le product owner et les membres de l'équipe, et cette dernière va débattre de la faisabilité technique, des pistes possibles pour réaliser le besoin.
Ayez toujours à l'esprit les capacités de Drupal dans vos échanges car la maîtrise de l'outil vous épargnera de gaspiller votre temps en développements futiles.
La sprint définition est le moment durant lequel l'équipe doit comprendre chaque pixel du projet. Toutes les questions doivent être posées au cours de ce rituel car ça n'est pas une fois que l'implémentation démarrera qu'il faudra qu'elle se demande à quoi servent certains boutons / portions d'une page.

Les choix d'implémentation

Lorsque les stories sont passées en revue, l'équipe a le droit de rajouter des stories techniques, de débattre des priorités si elle pense que certaines choses doivent se faire avant d'autres. L'une des forces de l'agilité étant le principe d'itérations, le groupe est fortement invité à proposer toutes les pistes qui lui viendront à l'esprit afin de produire le plus de valeur ajoutée en un minimum de temps. L'écosystème des modules Drupal est très bon à ce petit jeu là, nous ne pouvons que vous encourager à vous en servir afin de proposer au product owner plusieurs options et de lui expliquer clairement ce qui serait faisable / non faisable comparé à sa demande initiale. Le but étant de toujours aller au plus vite à un premier résultat pas toujours parfait mais qui fait le travail et en se donnant la possbilité de choisir par la suite si le résultat constaté est satisfaisant ou si du temps supplémentaire doit être investi pour l'affiner.

Dimensionner les stories

Une fois que l'équipe n'a plus de questions sur le périmètre de la story fonctionnelle et qu'elle pense avoir son plan de bataille pour l'implémentation (pas besoin de noter tous les détails, vous pouvez vous limiter aux options / pistes possibles pour le développement) le jeu du poker planning démarre. Que vos espoirs de devenir millionnaire en jouant aux cartes dans des saloons retombent car il n'en est rien :  le concept est le suivant, tous les équipiers relisent les taches listées et réfléchissent à une taille à donner à cette story.
On ne va pas mesurer le temps que cela prend de faire la réalisation (un junior et un senior ne prendraient probablement pas autant de temps) mais on va estimer l'effort que cela implique. Pour se faire, on utilise une unité abstraite, les points de complexité.
Pour éviter les dilemmes on s'inspire de la suite de Fibonnacci, ce qui donne la liste de valeurs possibles suivante : 1, 2, 3, 5, 8, 13 puis on lui ajoute les valeurs 20, 40, 100, ? et "PAUSE" pour permettre à chacun d'indiquer que quelque chose est très gros, impossible à mesurer au vue de ses connaissances ou qu'il a besoin d'une pause avant d'y arriver.

Lorsque vous allez choisir la complexité d'une story, sa valeur absolue a peu d'importance. Ce qui va compter c'est que ce que vous allez estimer à 5 représente toujours la même chose. La story la plus difficile à estimer reste la première car on travail par la suite par comparaison. "Cette story pour laquelle nous votons 3 est-elle vraiment aussi complexe que la #651 pour laquelle on avait déjà voté 3 et qui nécessitait une gestion des droits fines en plus ?".
De la même façon l'effort doit être pris en compte. Si on évalue par exemple la création d'un type de contenu à 1, si l'un d'entre eux a 70 champs, peut être allons nous évaluer l'effort à 2 ou 3.


Partager les points de vue

L'estimation de la taille des stories se fait en simultané pour chacun des coéquipiers, tous ont devant eux un jeu de cartes d'estimations (d'où le nom de planning poker) et l'abattage des estimations doit se faire au même moment une fois que tout le monde a pris le temps de trouver son estimation (et poser les dernières questions si nécessaire). L'abattage révèle souvent des surprises (et des fous rires !) et suscite des échanges. "Pourquoi as-tu voté 2 ? C'est super compliqué de faire la couche d'abstraction, rappelles toi du projet Superfish !", "Wow, 5, vraiment ? On utilise Views Megarow et c'est parti, ça nous prendra peu de temps de construire cette interface".
Les points de vue seront donc confrontés, permettant de faire émerger des choses compliquées dont tout le monde n'avait pas conscience ou en apportant de la réassurance via la découverte de techniques / savoir-faire acquis par le passé et oubliés par certains.
Lorsque les votes sont vraiment différents (2 VS 8 par exemple) il y a une période d'échanges pour comprendre la source d'un tel écart, puis l'équipe revote jusqu'à ce que les estimations soient proches (et on prendra toujours la plus pessimiste par principe). Il est important de noter que passée une certaine taille, la faisabilité d'une story devient un risque. Si la complexité de plusieurs stories est supérieure ou égale à 8 il faut probablement envisager de découper les stories en plusieurs stories de taille inférieure afin de toujours s'assurer que vous livrez quelque chose. Si les estimations chiffrées posent problème, vous pouvez changer d'unité, XS, S, M, L, XL, XXL etc (ou libre à vous d'inventer la votre)

Une fois qu'une story est dimensionnée elle rejoint le backlog de sprint et on passe à la suivante. L'exercice se répète jusqu'à ce que l'équipe estime avoir suffisamment de travail pour la durée du sprint. Et ce choix est très important, en effet, l'équipe s'engage à livrer tout ce qu'elle a intégré à son backlog de sprint. Si des choses ne sont pas terminées à la fin de l'itération il faudra en trouver la cause pour que ça ne se reproduise pas. C'est donc une promesse faite, vis à vis du product owner mais aussi vis à vis de soi même. La capacité de l'équipe à respecter ses engagements déterminera sa vélocité. Le fait de livrer toutes les 2 semaines rend le projet excitant car on mesure les progrès d'un sprint à l'autre.

Vous l'aurez compris, les journées de sprint définition sont des journées qui sont bien remplies, alors préparez-vous en ramenant le jus de fruit, les croissants et des barres de céréales et en faisant une bonne nuit de sommeil la veille. Gardez l'exercice fun, veillez à ce que tout le monde donne sont avis et votre sprint se déroulera bien.

TL;DR

  • Au cours de la sprint définition l'équipe s'approprie le projet / la vision
  • C'est pendant la sprint définition que les questions se posent, une fois passée il est trop tard et on rentre dans l'implémentation
  • L'univers contrib de Drupal permet de faire beaucoup de choses pour un faible investissement
  • Profitez des itérations pour proposer une base fonctionnelle non parfaite mais satisfaisante puis demandez-vous s'il faut aller plus loin
  • Utilisez le planning poker pour quantifier l'effort nécessaire à la réalisation des stories
  • Apprenez à estimer par comparaison
  • Echangez afin de vous assurer que vous êtes tous sur la même longueur d'onde
  • Respectez vos engagements lorsque vous constituez votre backlog de sprint
  • Multipliez les petites stories plutôt que d'en avoir de très grosses.
  • Assurez-vous de toujours livrer quelque chose.
Par Mantalo Conseil
Benjamin Grapeloux
Agence web, Agence de Communication et Marketing en Dordogne (Aquitaine)

Immobilier Horizon en ligne

Un site classieux pour une offre de qualité

À partir de la charte graphique préalablement créée par P3RFACTION pour Immobilier Horizon, et sur la base d'un cahier des charges que nous avons élaboré avec Nicolas Goscimski, fondateur de Immoblier Horizon, nous nous sommes attachés à produire ce site puissant, fonctionnel, et visuellement très harmonieux.

Des fonctionnalités sur mesure

Les expériences de navigation sur la plupart des sites de transaction immobilière démontrent la difficulté de trouver un bien à partir de critères personnels ou géographiques spécifiques. L'enjeu était de répondre à cette problématique en offrant aux visiteurs du site un moteur de recherche plus intelligent que la moyenne... Mission accomplie !

L'image est mise en avant

S'agissant d'apprécier l'intérêt d'un bien immobilier, la qualité des photographies était une préoccupation réelle. Côté client, Immobilier Horizon fait appel à un de ses partenaires très professionnnel. Côté site internet, des vues adaptées à l'activité immobilière permettent au visiteur de naviguer très agréablement dans l'exploration du catalogue et des fiches descriptives des biens.

Une réalisation Mantalo Conseil

Merci à Nicolas Goscimski et à Laurence Datrier pour leur confiance accordée. Cette collaboration très positive qui a porté sur toutes les étapes de la création (conception, fonctionnalités, rédaction du contenu corporate, ...), s'est avérée aussi agréable qu'efficace. 

Avec la technologie Drupal

Un fois encore, Drupal s'est révélée comme la technologie qui permet de pousser aussi loin de nécessaire les conditions d'une utilisation fonctionnelle et ergonomique, tant pour les utilisateurs du service que pour les administrateurs du site.

Vous vous dites que la création d'un site internet réussi passe par une démarche globale et professionnelle ? C'est également notre avis... Contactez-nous !

Par Mantalo Conseil
Benjamin Grapeloux
Agence web, Agence de Communication et Marketing en Dordogne (Aquitaine)

Généralités sur la gestion de contenus Drupal MantaloTonic

Avant de rédiger un contenu Drupal MantaloTonic : 7 étapes

  1. Se documenter sur l’environnement du thème à aborder 
  2. Identifier le type de contenu approprié
  3. Définir les objectifs
  4. Définir les cibles
  5. Élaborer le plan (idées à développer) en posant les titres
  6. Rédiger les titres et paragraphes
  7. Illustrer

Un usage spécifique à chaque type de contenu Drupal MantaloTonic

Il existe différents types de contenus, adaptés à chaque type d'information du site :

  • page : contenus de fonds, assez longs, peu évolutifs et sans mentions de date de publication ou d'auteur.
  • article : contenu court, évolutif et ou dynamique sans mentions de date de publication ou d'auteur. Un article est associé à une catégorie d'articles ou peut servir d'article de redirection pour le slider (grande image défilante) de la page d'accueil.
  • billet de blog : contenu d'actualité, dont l'auteur et la date de publication sont affichés publiquement.
  • équipe : contenu relatif aux membres de votre structure (collaborateurs, agents immobiliers, professeurs…)
  • client : contenu relatif aux clients de votre structure
  • partenaires : contenu relatif aux partenaires de votre structure
  • produits : relatif à la présentation de produits (site vitrine ou marketing)
  • biens : contenu spécifique aux agences immobilières pour décrire les biens immobiliers,
  • slider : contenu spécifique au slider (grande image défilante) de la page d'accueil (si ce type de contenu n'existe pas, utiliser un article ou une page pour créer un slider)

Chaque type de contenu correspond à un usage.

Accès 

Par  le menu : "Contenu"

Trier et retrouver des contenus

  • Il est possible de trier le contenu en sélectionnant des items et cliquer sur “Appliquer / Filtrer”
  • Annuler le tri en cliquant sur “Réinitialiser”

Agir sur des contenus existants

La liste de contenus propose différentes actions : 

  • en cliquant sur le titre du contenu → affiche le contenu côté “public” du site.
  • modifier → pour modifier le contenu dans l’administration
  • supprimer → pour supprimer définitivement le contenu
  • cloner → pour dupliquer un contenu dans l’administration (cf rubrique ci-dessous)

Publier un contenu

  • Par défaut, un contenu créé ou cloné possède le statut “non publié” c’est à dire qu’il n’est pas visible pour les internautes.
  • Publier un contenu en cliquant sur “publier” dans les “Options de publication” de l’encadré du pied de page.

Cloner un contenu

Pour créer un contenu à partir d’un contenu existant (s’en servir de trame/modèle)

  • Ouvrir un contenu existant
  • cliquer sur “Cloner un contenu”
  • Par défaut, le nom donné à un contenu cloné est “Clone de…”. Donner un nouveau titre au contenu
  • “Enregistrer”

Tags: 

Retrouvez dans notre dossier Administrer un site Drupal MantaloTonic la gestion des différents types de contenu sous Drupal MantaloTonic.

Pages