Vous avez sûrement vous aussi remarqué qu'il y avait un problème de compatibilité entre les modules Workflows et Scheduler de Drupal 8. Voici un moyen de forcer l'utilisation des deux modules ensemble.

En effet lorsque Scheduler tente de modifier l'état d'un noeud, si les modules Workflows et Content Moderation sont activés et mis en place, les processus de publication bloqueront le changement d'état par Scheduler, n'ayant pas le bon état de modération permettant de changer l'état de publication. Il faut donc le lui donner afin de permettre la sauvegarde du noeud avec ce nouvel état et ce nouveau status.

Publication d'un noeud

Pour cela, dans le fichier SchedulerManager du module, vous devez rajouter ces lignes dans la fonction publish afin de lui attribuer l'état 'publish'.

// mon-drupal/modules/scheduler/src/SchedulerManager.php => fonction publish() => après '$result = TRUE;'.

$node->setPublished(NODE_PUBLISHED);
$node->moderation_state->value = 'published';
$node->save();

Dépublication d'un noeud

Ensuite vous devez appliquer l'état 'archived' lors de la dépublication.

// mon-drupal/modules/scheduler/src/SchedulerManager.php => fonction unpublish() => après '$result = TRUE;'.

$node->setPublished(NODE_NOT_PUBLISHED);
$node->moderation_state->value = 'draft';
$node->save();

À propos de l'auteure

Noémie Kerroux, Développeuse web et mobile

Noémie Kerroux

Développeuse web et mobile
« Une développeuse ambitieuse et passionnée avec un fort intérêt pour le développement fonctionnel, j'aime relever les défis pour en apprendre davantage, et notamment participer à des concours, que ce soit en informatique ou en musique. »

Languages

  • HTML
  • CSS
  • Javascript
  • jQuery
  • PHP
  • Java
  • SQL

Technologies

  • Wordpress
  • Drupal
  • React-native
  • Laravel
  • Ionic