Planète

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Views - Changer le titre d'une vue en fonction du nombre de résultats

Utile dans le cadre d'une vue affichant des résultats d'une recherche via Search API :

  1. function MONMODULE_views_post_render(\Drupal\views\ViewExecutable $view) {
  2. if($view->storage->id() === 'NOM_MACHINE_VUE' && $view->current_display === 'NOM_MACHINE_AFFICHAGE') {
  3. $view->setTitle($view->getTitle() . ' (' . count($view->result) . ')');
  4. }
  5. }

 

Modifier la position des méta données sur le formulaire de saisie d'un contenu avec Drupal 8

Les méta données liées à un contenu (paramètres de menu, options de publications, paramètres des chemins d'urls, etc.) sont par défaut affichées, dans les formulaires d'ajout et d'édition, dans un panneau latéral. Ceci a l'avantage de donner une visibilité immédiate sur ces options tout en rédigeant son contenu. Mais il est des cas d'usages où la position latérale de ces informations nuisent à l'ergonomie générale, car réduisant l'espace disponible pour les formulaires de saisie des contenus. Ceci peut être le cas notamment, si vous utilisez le module Field Group pour structurer et regrouper les informations à saisir. Nulle besoin ici d'un expert Drupal. Découvrons comment nous pouvons rendre la position de ces métadonnées paramétrables en fonction des besoins et de l'ergonomie générale du projet Drupal 8.

Par liber_t
Ines WALLON

Automatiser le deploiement de drupal avec gitlab

Prérequis à mettre en place sur votre serveur

1) Avoir drush d'installé sur le serveur de production

2) Créer une clef ssh pour l'utilisateur apache et la rajouter sur votre serveur gitlab

3) Editer le virtualhost de drupal

Par Kgaut
Adhérent
Kevin Gautreau

Drupal - afficher en live le contenu du watchdog avec drush

Parfois on se retrouve avec un gros White Screen Of Death sur son site, et impossible de se connecter.

Dans ce cas là il est pratique de pouvoir afficher en live le contenu du watchdog, c'est possible avec Drush et la commande watchdog-show :

drush @alias watchdog-show --tail --full --count=50

--tail affichera les nouvelles entrées du watchdog en direct

--full pour afficher le détail des erreurs

--count=50 permettra d'afficher les 50 lignes les plus récentes du watchdog.

2017-10-31-16-13-09-Screenshot-01.jpg

(Deux fois dans la journée que je recherche cette commande, au moins je saurai maintenant ou la retrouver...)

Modifier de la configuration directement sur un site Drupal 8 en production

La gestion de la configuration native à Drupal 8 permet de très facilement passer des modifications ou des ajouts de la configuration depuis une instance de site (un environnement de développement par exemple) vers une autre instance de site (l'environnement de production). Ces exports et imports de la configuration d'un site sont réalisés d'un seul tenant : c'est à dire que c'est toute la configuration d'un site qui est mise à jour. Mais il existe des cas valides où certaines configurations peuvent et doivent être modifiées directement en production. Découvrons comment gérer ces cas particuliers avec le module Configuration split.

DrupalCamp Lannion 27-29 octobre 2017

Le DrupalCamp se tiendra très prochainement, dans moins d'une semaine, les 27, 28 et 29 octobre 2017. C'est une occasion unique, pour qui travaille avec Drupal, de venir rencontrer ses pairs, d'échanger et de discuter, mais aussi de venir écouter quelques conférences pour le moins alléchantes. Et ce n'est pas parce qu'il se tient au bout du monde, à Lannion, que c'est une raison de ne pas venir. Bien au contraire, partez à l'aventure, explorez les tréfonds de l'inconnu, découvrez la magnifique Bretagne et Drupal n'aura plus aucun secret pour vous. Alors je vous y vois ?

Par ftorregrosa
Adhérent
Florent Torregrosa

Retours sur la DrupalCon Vienna 2017

J'ai pu assister à la Drupalcon Vienna 2017. Voici mes retours par rapport aux sessions et Bof auxquelles j'ai pu assister ou co-présentées.

Cette année, la Drupalcon a accueillie 1670 participants.

Une note sur les salles de bofs, elles étaient très bien pour les discussions (des chaises en cercles), mais pas de table, ni de vidéoprojecteur, donc pour les présentations c'étaient un peu compliquées.

Tags: 

Filtrer des contenus par année avec Views sur Drupal 8

Il n'est pas rare de devoir proposer de filtrer certains contenus en fonction de dates, et notamment en fonction de l'année. Comment filtrer des contenus depuis une vue selon les années basées sur un champ date ? Nous disposons d'une solution immédiate en utilisant les modules Search API couplé à Facets. Mais si on ne dispose pas de ces deux modules pour d'autres raisons, cela peut être dommage de les installer juste pour cela. On peut arriver à nos fins assez rapidement avec une option native à Views, les arguments contextuels. Découvrons en quelques images comment y arriver.

Par Artusamak
Julien Dubois

Rendez-vous au Drupalcamp Lannion à la fin du mois

Rendez-vous au Drupalcamp Lannion à la fin du mois

Artusamak
lun 16/10/2017 - 17:46

Nous tentons de ne jamais manquer une occasion de soutenir la communauté Drupal française, c'est toujours un moment de plaisir et de partage. C'est également un bon prétexte pour nous retrouver au sein de l'équipe et de voyager un peu. Alors si vous aimez ou êtes curieux de Drupal et serez du côté de Lannion du 27 au 29 octobre 2017, venez nous retrouver. L'événement est gratuit pour y participer et vous pourrez profiter d'un super repas pour 15 € si vous réservez dès maintenant.

N'attendez plus !

Logo du DCLannion

 

 

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Formulaire - « ajouter un élément » et « supprimer un élément »

Voici comment dans un formulaire custom D8, avoir un ensemble de champ "multiples" dans un formulaire de config par exemple.

drupal8-formulaire-add-more.jpg

Dans mon exemple je n'ai que le champ « titre », mais c'est simplement pour alléger le snippet.

Le code en question :

config('monmodule.homepage');
    $pomoted_items = $config->get('promoted', []);
    $number_promoted = $form_state->getValue('number_promoted', count($pomoted_items));
    $removed = $form_state->getValue('removed_promoted', []);

    $form['number_promoted'] = [
      '#type' => 'value',
      '#value' => $number_promoted,
    ];
    $form['removed'] = [
      '#type' => 'value',
      '#value' => $removed,
    ];
    $form['promoted'] = [
      '#type' => 'fieldset',
      '#title' => t("À la une"),
      '#tree' => TRUE,
    ];
    for ($i = 1; $i  'fieldset',
        '#title' => t("À la une #@i", ['@i' => $i]),
      ];
      $form['promoted'][$i]['title'] = [
        '#type' => 'textfield',
        '#title' => $this->t("Titre"),
        '#default_value' => $item['title'],
      ];
      $form['promoted'][$i]['remove_' . $i] = array(
        '#type' => 'submit',
        '#value' => t("Supprimer l'élément #@i", ['@i' => $i]),
        '#submit' => array('::removeItem'),
        '#attributes' => [
          'class' => ['button--danger'],
          'data-toRemove' => $i,
        ]
      );
    }
    $form['promoted']['add_item'] = array(
      '#type' => 'submit',
      '#value' => t('Ajouter un autre élément'),
      '#submit' => array('::addPromotedItem'),
    );

    return parent::buildForm($form, $form_state);
  }

  public function addPromotedItem(array &$form, FormStateInterface $form_state) {
    $form_state->setValue('number_promoted', $form_state->getValue('number_promoted') + 1);
    $form_state->setRebuild();
  }

  public function removeItem(array &$form, FormStateInterface $form_state) {
    $removed = $form_state->getValue('removed_promoted', []);
    $removed[] = $form_state->getTriggeringElement()['#attributes']['data-toRemove'];
    $form_state->setValue('removed_promoted', $removed);
    $form_state->setRebuild();
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    parent::submitForm($form, $form_state);
    $parsed = [];
    $promoted = $form_state->getValue('promoted');
    foreach ($promoted as $promoted_item) {
      if(is_array($promoted_item)) {
        $parsed[] = $promoted_item;
      }
    }
    $this->config('monmodule.homepage')->set('promoted', $parsed)->save();
  }
}

 

 
Par Mixalis44
Adhérent
Mickael Zafiriou
Développeur Drupal depuis 2013.

DrupalCamp 2017 à Lannion

Et c'est r'parti pour un DrupalCamp. Après Nantes nous voici conviés, pour ce rendez-vous 2017, à Lannion.

 

Par Mixalis44
Adhérent
Mickael Zafiriou
Développeur Drupal depuis 2013.

Les thèmes avec Twig

Présentation du fonctionnement des thèmes customs que Drupal
8 met à disposition.

De la déclaration en php en passant par le template Twig, du
rendu à la surcharge, cet article essaiera d'aborder
la majeure partie des points concernant les thèmes.

Par Mixalis44
Adhérent
Mickael Zafiriou
Développeur Drupal depuis 2013.

Promotion des autres blogs Drupaliste

Pour mon premier billet de blog, je vais faire la promotion des blogs de développeurs Drupal. 
Ces blogs m'ont inspirés et m'ont dépannés dans certains projets professionnels.

Par Mixalis44
Adhérent
Mickael Zafiriou
Développeur Drupal depuis 2013.

Et c'est r'parti

Et c'est r'parti pour un DrupalCamp. Après Nantes nous voici conviés, pour ce rendez-vous 2017, à Lannion.

 

Par Kgaut
Adhérent
Kevin Gautreau

Pushover - Envoyer des notifications push depuis Drupal 8

Pour d'autres raisons j'ai utilisé le service de Pushover, qui permet d'envoyer des notifications push vers son téléphone mobile. Dans le principe, vous installer l'application sur votre téléphone / tablette (android ou apple) et via une api vous pourrez envoyer une notifications vers un, ou l'ensemble de vos devices.

J'ai aussi créé un module pour intégrer le service et ainsi pouvoir envoyer une notification push depuis son site Drupal 8. Quelle utilité ? À vous de voir, je l'ai personnellement utilisé pour recevoir une notification push en cas de nouveau commentaire ou bien d'alerte critique sur le site.

Le module est sur Github : https://github.com/kgaut/drupal-pushover, on peut l'installer via composer :

# Ajout du dépot
composer config repositories.drupal-pushover vcs https://github.com/kgaut/drupal-pushover
# Téléchargement du module
composer require drupal/pushover

Une fois installé on le configure via le formulaire dans Configuration / Services Web / Pushover Configuration

pushover-drupal-configuration.jpg

Le code pour déclencher une notification est le suivant :

\Drupal::service('pushover.sender')->sendNotification($title, $message, $url = NULL, $url_title = NULL);

Un exemple d'intégration pour envoyer une notification lors d'un nouveau commentaire :

/**
 * Implements hook_HOOK_insert().
 *
 * Send Pushover notification on new comment.
 *
 * @param \Drupal\comment\Entity\Comment $comment
 */
function kgaut_comment_insert(\Drupal\comment\Entity\Comment $comment) {
  $node = $comment->getCommentedEntity();
  $author = $comment->getAuthorName();
  $title = t('Nouveau commentaire sur Kgaut.NET');
  $description = t('@name à posté un nouveau commentaire sur « @post_title »', [
    '@name' => $author,
    '@post_title' => $node->label(),
  ]);
  $url = $node->url('canonical',['absolute' => TRUE]);
  \Drupal::service('pushover.sender')->sendNotification($title, $description, $url, t('Voir le post'));
}

Et voila le résultat :

pushover-notification-small.png

Bon évidement, on doit aussi pouvoir trouver des usages utiles :)

Ça n'est pas du drupal, mais j'ai aussi ajouté une notification quand quelqu'un se connecte en ssh sur mon serveur, je partagerai peut-être le script en question un de ces 4 !

Pages