it-swarm.com.de

Zeigen Sie den Inhaltsmoderationsstatus des Knotens in einer Ansicht an

Wie kann ich den aktuellen Moderationsstatus für den Knoten in einer Ansicht anzeigen und danach filtern?

5
Mrstate

In Drupal 8.5 ist dies viel einfacher geworden.

Voraussetzungen:

1) Aktivieren Sie content_moderation (wodurch Workflows aktiviert werden).

2) Richten Sie einen Workflow mit Inhaltsmoderationszuständen ein.

3) Erstellen Sie eine neue Ansicht mit der Basistabelle "Inhaltsrevisionen". Dies ist wichtig, da der Hauptinhalt sofort auf "Inhalt" basiert, der sich auf die Standardversion bezieht. Wir wollen die neueste Version sehen. Ich habe diesen Fehler zuerst gemacht, als ich die Standard-Inhaltsansicht verwendet und eine Beziehung zu Inhalt: Moderationsstatus hinzugefügt habe. Dies ist der Moderationsstatus der Standardrevision, den wir nicht sehen möchten. Wir möchten den Moderationsstatus der letzten Revision sehen.

4a) Fügen Sie unter "Filterkriterien" den Filter "Ist neueste Version" hinzu.

(enter image description here

5) Um den Moderationsstatus anzuzeigen, wählen Sie unter "Felder" "Inhaltsrevision: Moderationsstatus".

(enter image description here

6) Um nach Moderationsstatus zu filtern, fügen Sie unter "Filterkriterien" den Filter "Inhaltsrevision: Moderationsstatus" hinzu und legen Sie ihn offen.

7) Speichern Sie Ihre Ansicht.

8) Sie müssen Ihren Inhalt so aktualisieren, dass er Moderationszustände aufweist. Dies kann durch erneutes Speichern erfolgen.

Zum Beispiel könnten Sie ausführen:

  $article_nids = \Drupal::entityQuery('node')
    ->condition('type', 'article')
    ->execute();

  $articles = \Drupal::entityTypeManager()->getStorage('node')->loadMultiple($article_nids);
  foreach ($articles as $article) {
    $article->save();
  }

Jetzt sollte Ihre Ansicht Moderationszustände anzeigen.

Es sieht aus wie Drupal 8.5 fügt auch eine Unteraufgabe zur Route system.admin_content hinzu, die einen Link zu einer Seite anzeigt, auf der moderierter Inhalt angezeigt wird.

Wenn Sie diese Unteraufgaben deaktivieren möchten:

/**
 * Implements hook_menu_local_tasks_alter().
 */
function mymodule_menu_local_tasks_alter(&$data, $route_name) {
  if ($route_name == 'system.admin_content') {
    if (!empty($data['tabs'][1]['content_moderation.content'])) {
      unset($data['tabs'][1]['content_moderation.content']);
    }
    if (!empty($data['tabs'][1]['content_moderation.moderated_content'])) {
      unset($data['tabs'][1]['content_moderation.moderated_content']);
    }
  }
}
5
oknate