Drupal - Ajouter Scheduler à un type d'entité custom

Scheduler est un module drupal qui permet, pour un contenu, de définir une date de publication et/ou une date de dépublication.

Par défaut, il ne s'interface qu'avec les noeuds (Node), mais depuis la version 2.x il est possible de l'interfacer avec des type entités custom, attention : uniquement si elle possède des bundle, cela ne fonctionnera pas pour un type d'entité sans bundle. (Issue drupal sur le sujet : https://www.drupal.org/project/scheduler/issues/3355087)

Si c'est le cas, alors il est très facile de définir que votre type d'entité doit être « schedulable », il suffit de créer un plugin dans le dossier src/Plugin/Scheduler de votre module.

Dans mon cas mon type d'entité s'appelle Annonce (id : annonce) j'ai donc créé la classe /modules/custom/mon_module/src/Plugin/Scheduler/AnnonceScheduler.php avec le contenu suivant : 

<?php

namespace Drupal\mon_module\Plugin\Scheduler;

use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\scheduler\SchedulerPluginBase;

/**
 * Plugin for Annonce entity type.
 *
 * @package Drupal\Scheduler\Plugin\Scheduler
 *
 * @SchedulerPlugin(
 *  id = "annonce_scheduler",
 *  label = @Translation("Annonce Scheduler Plugin"),
 *  description = @Translation("Provides support for scheduling Annonce entities"),
 *  entityType = "annonce",
 *  dependency = "mon_module",
 * )
 */
class AnnonceScheduler extends SchedulerPluginBase implements ContainerFactoryPluginInterface {}

Videz votre cache, et vous pourrez alors modifier les paramètres directement sur la configuration du bundle de votre type d'entité : 

Image
Drupal scheduler

 

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...