Drupalcamp Lannion 2017 : le pouvoir de la communauté
Compte-rendu du Drupalcamp Lannion 2017, un événement qui a tenu toutes ses promesses.
Compte-rendu du Drupalcamp Lannion 2017, un événement qui a tenu toutes ses promesses.
Entity Staging est un module qui permet exporter des types d'entités (contenus, commentaires, users, blocks...).
Ce module est encore en développement, mais je lui promet un avenir prométeur
Après avoir passé 3 jours génial au DrupalCamp de Lannion, j'ai décidé de passer mon site en "full Composer".
Fini l'utilisation de la commande drush dl, Fini les modules contrib dans gitlab.
Il peut être parfois intéréssant de relancer un hook, surtout quand on à ce genre d'erreur
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
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.
(Deux fois dans la journée que je recherche cette commande, au moins je saurai maintenant ou la retrouver...)
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.
Rendez-vous au Drupalcamp Lannion à la fin du mois
admin
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 !
J'aurais le plaisir de vous présenter ma conférence intitulé "La dette technique d'un site sous Drupal 7 : état des lieux" dans le cadre du Drupal Camp de Lannion le vendredi 22 septembre.
Retour d'expérience après 6 ans de développement sous Drupal 7.
Après chaque livraison de site, il arrive que l'on cumule ce que l'on appelle la "dette technique".
J'aurais le plaisir de vous présenter ma conférence intitulé "La dette technique d'un site sous Drupal 7 : état des lieux" dans le cadre du Drupal Camp de Lannion le vendredi 22 septembre.
Retour d'expérience après 6 ans de développement sous Drupal 7.
Après chaque livraison de site, il arrive que l'on cumule ce que l'on appelle la "dette technique".
Voici comment dans un formulaire custom D8, avoir un ensemble de champ "multiples" dans un formulaire de config par exemple.
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(); } }
Et c'est r'parti pour un DrupalCamp. Après Nantes nous voici conviés, pour ce rendez-vous 2017, à Lannion.
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.
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.
Et c'est r'parti pour un DrupalCamp. Après Nantes nous voici conviés, pour ce rendez-vous 2017, à Lannion.
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
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 :
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 !