Module Drupal 8 - Weight pour trier les contenus

Le module weight permet d'ajouter un attribut de "poids" au contenu qui peut être utilisé dans les listing pour les ordonner comme l'on veut.

La version 8 s'intègre très bien avec views et permet d'avoir un réordonnancent en backoffice sur un listing de contenu. (ce qui pouvait être obtenu sous drupal 7 avec la combinaison weight + draggable views)

Installation du module

"À l'ancienne" en téléchargeant la dernière version sur drupal.org : https://www.drupal.org/project/weight

ou via composer avec composer require drupal/weight.

La version 8.x-3.0 du module est sortie, mais à ce jour elle nécessite 3 patches pour fonctionner correctement :

Si vous utilisez composer pour gérer vos modules, voici la section à ajouter à votre fichier composer.json pour patcher le module automatiquement :

  // Dans la section "extra"      
  "patches": {
            "drupal/weight": {
                "Strict warning: Non-static method ": "https://www.drupal.org/files/issues/weight-non-static-method-2671844-3.patch",
                "Views widget assumes that weight field name is named 'field_weight'": "https://www.drupal.org/files/issues/weight-views-field-name-2687953-0.patch",
                "Weight selector missing": "https://www.drupal.org/files/issues/weight-show-selector-2671840-4.patch"
            }
        }

Plus d'informations sur la gestion des patchs via composer ici.

Configuration du tri

Première chose à faire, ajouter un champ de type "Poids" au type de contenu / entité que l'on souhaite trier :

Vous pourrez ensuite configurer le range qui par défaut est de 20 (donc possibilité de trier de -20 à +20) vous pouvez l'augmenter si vous avez beaucoup de contenu.

Maintenant nous allons utiliser créer une vue d'administration pour pouvoir "drag'n'droper" les contenus pour en changer le poids.

Il faut utiliser le format "Tableau" et bien penser à limiter au type de contenu que l'on souhaite trier :

Ajoutons aux champs, le champs "poids" que nous avons créé, afin d'avoir la petite flèche multidimensionnelle pour réordonner. Attention il faut bien prendre l'élément "Selector" si l'on sélectionne l'autre, alors on aura juste une cellule dans le tableau nous indiquant le poids du contenu, ce n'est pas ce que l'on veut ici :

Deuxième chose à faire, ajouter un critère de tri sur ce champ :

Évidement il faudra trier par poids croissant (un contenu avec un poids de -10 doit être placé avant celui qui a un poids de 10).

Réordonnez les critères de tri pour mettre le tri par poids en premier :

Enregistrez votre vue et rendez-vous sur la page crée, vous pouvez maintenant réordonner vos contenus comme vous le souhaiter, en pensant bien à enregistrer.

Enfin, pensez bien à modifier vos vues front pour prendre en compte le critère de tri maintenant existant (de la même façon que nous l'avons créé dans la vue backoffice.)

Ajouter un commentaire