Artikel kopieren in Drupal – unveröffentlicht und mit aktuellem Datum
Autor
Michael ZengerDatum
8 August 2025Ein typischer Ablauf in der Redaktion: Man möchte einen neuen Artikel anlegen, nimmt sich ein bestehendes Beispiel und erstellt mit dem Replicate-Modul eine Kopie. Das funktioniert das wunderbar – fast.
Denn was dabei oft stört: Die Kopie übernimmt alle Eigenschaften des Originals – einschließlich dem Veröffentlichungsstatus. Das bedeutet, der neue Artikel geht sofort live, bis man den Haken manuell entfernt. Außerdem bleibt auch das Erstellungsdatum unverändert.
Das lässt sich mit einem kleinen Custom-Modul verbessern.
Voraussetzung: Das Replicate-Modul ist aktiv
Falls noch nicht geschehen: Installiere "Replicate":
composer require 'drupal/replicate:^1.3'
Damit du im Drupal-Backend das Modul konfigurieren kannst benötigst du noch "Replicate UI":
composer require 'drupal/replicate_ui:^1.2'
Nach der Installation wird das Modul aktiviert:
drush en replicate replicate_ui
Anschließend kannst du im Backend unter /admin/config/content/replicate die Replikation aktivieren – oft genügt die Auswahl „Content“.

Eigenes Drupal-Modul erstellen
Erstelle ein Modul mit dem Namen custom_replicate_status
. Die beiden benötigten Dateien legst du z. B. hier ab:
web/modules/custom/custom_replicate_status/custom_replicate_status.info.yml
web/modules/custom/custom_replicate_status/custom_replicate_status.module
Inhalt von custom_replicate_status.info.yml
:
name: 'Custom Replicate Status'
type: module
description: 'Sets copied articles to unpublished by default using Replicate module.'
package: Custom
core_version_requirement: ^9 || ^10 || ^11
dependencies:
- node
Inhalt von custom_replicate_status.
module
:
<?php
use Drupal\node\NodeInterface;
use Drupal\Core\Entity\EntityInterface;
/**
* Implements hook_entity_presave().
*/
function custom_replicate_status_entity_presave(EntityInterface $entity) {
if ($entity instanceof NodeInterface && in_array($entity->bundle(), ['article']) && $entity->isNew()) {
$entity->setUnpublished();
}
}
Diese einfache Funktion prüft, ob ein neuer Artikel des Typs article
erstellt wird – und setzt ihn standardmäßig auf „nicht veröffentlicht“. Weitere Inhaltstypen lassen sich leicht ergänzen.
Optional: Erstellungsdatum aktualisieren
Oft ist es praktisch, gleich noch das aktuelle Datum setzen. Das kannst du mit drei weiteren Zeilen lösen:
<?php
use Drupal\node\NodeInterface;
use Drupal\Core\Entity\EntityInterface;
/**
* Implements hook_entity_presave().
*/
function custom_replicate_status_entity_presave(EntityInterface $entity) {
if ($entity instanceof NodeInterface && in_array($entity->bundle(), ['article']) && $entity->isNew()) {
$entity->setUnpublished();
// Aktuelles Datum setzen
$current_time = \Drupal::time()->getRequestTime();
$entity->set('created', $current_time);
$entity->set('changed', $current_time);
}
}
Nun musst du nur noch dein Modul aktivieren:
drush en custom_replicate_status
Fertig.
Mit wenigen Zeilen Code wird das Kopieren von Artikeln deutlich komfortabler für die redaktionelle Pflege.
Viel Erfolg beim Nachbauen!
Falls du weitere Unterstützung benötigst oder Hilfe bei individuellen Anpassungen suchst, melde dich gerne bei mir.