it-swarm.com.de

Synchronisieren Sie Inhalte zwischen zwei Drupal Sites)

Ich habe zwei Drupal 7 Websites mit einer sehr ähnlichen Struktur (Ansichten, Inhaltstypen usw.), aber mit einem anderen Thema und einigen anderen Änderungen.

Ich brauche alle Knoten bestimmter Inhaltstypen, die in Site A erstellt wurden, um auf Site B kopiert zu werden. Wenn dies möglich ist, sollte dies automatisch oder durch Ausführen eines Skripts funktionieren. Beispielsweise würde die Synchronisierung als geplanter Cron-Job ausgeführt.

Ich brauche nicht beide Sites, um in derselben Datenbank ausgeführt zu werden, sie müssen eine eigene separate Datenbank haben, nur dieselben Knoten für bestimmte Inhaltstypen.

Ich habe nachgeforscht und sehe, dass ich Node Export, Feeds und sogar einen Drush-Befehl (ne-export/ne-import)) verwenden kann. Ich bin mir noch nicht sicher, wie Setze alle Teile zusammen. Hat das schon jemand gemacht?

4
jpatiaga

Für Drupal 8) können Sie das Modul Content Synchronization verwenden. Auf der Projektseite:

Das Inhaltssynchronisationsmodul bietet einen Mechanismus zum Exportieren einzelner Inhaltselemente oder aller Inhaltselemente aus einer Umgebung und zum mühelosen Verschieben in eine andere.

1
Chris Godwin

Die folgende Methode wird offiziell nicht empfohlen. Wenn Sie jedoch verstehen, was Sie tun und welche Konsequenzen dies hat, können die Vorteile die Nachteile überwiegen.

Siehe Tabellen über Instanzen hinweg teilen (nicht empfohlen)

Ich verwende dieses Setup, um ein Netzwerk von Websites für einen meiner Kunden auszuführen, bei dem der Inhalt über Websites hinweg identisch ist, die Präsentation (einschließlich Ansichten, Modulen, Variablen, Blockplatzierung) jedoch unterschiedlich ist. Mein spezielles Setup ist Drupal 6, aber es könnte leicht für Drupal 7) angepasst werden.

Der erste Schritt besteht darin, jede der Sites so zu konfigurieren, dass sie von derselben Datenbank (unter Verwendung von Tabellenpräfixen) und derselben Codebasis (unter Verwendung der Multisite-Funktionalität von Drupal) (*) ausgeführt werden. Sobald alle Sites auf derselben Datenbank und Codebasis ausgeführt werden, können Sie in Ihrer Einstellungsdatei ein Array $ db_prefix erstellen.

In meinem Setup teilt jede Site standardmäßig alle Tabellen mit der Standard-Site:

$db_prefix['default'] = 'default_';

Und die folgenden Tabellen sind pro Standort eindeutig (auch dies ist D6, D7 wäre etwas anders):

$db_prefix = array(
    "sessions" => "site1_",
    "authmap" => "site1_",
    "variable" => "site1_",
    "system" => "site1_",
    "role" => "site1_",
    "menu_custom" => "site1_",
    "menu_links" => "site1_",
    "menu_router" => "site1_",
    "cache" => "site1_",
    "cache_block" => "site1_",
    "cache_form" => "site1_",
    "cache_menu" => "site1_",
    "cache_page" => "site1_",
    "cache_update" => "site1_",
    "cache_views" => "site1_",
    "cache_views_data" => "site1_",
    "views_display" => "site1_",
    "views_object_cache" => "site1_",
    "views_view" => "site1_",
    "blocks" => "site1_",
    "blocks_roles" => "site1_",
);

Ich betreibe diese Websites seit einigen Jahren in Produktion. Die Editoren melden sich nur bei der "Standard" -Site an (definiert in/sites/all) und alle Inhalte (Knoten) werden dort verwaltet. Änderungen an Knoten werden sofort und ohne Eingriff auf alle "Slave" -Sites wirksam (außer für das vorhandene Caching).

Dies ist definitiv eine erweiterte Option und hat ihre Nachteile (ein Upgrade zwischen Hauptversionen von Drupal ist fast unmöglich), aber wenn Sie sich wohl fühlen und verstehen, was Sie tun, kann es eine großartige Lösung sein .

(*) Solange sich alle Sites auf demselben Server befinden oder Zugriff auf denselben Datenbankserver haben, müssen Sie ihn vermutlich nicht als Multisite einrichten. Aber um sicherzustellen, dass es keine Unterschiede in den Kerndateien gibt, würde ich es trotzdem empfehlen.

0
Adam Balsam

Schauen Sie sich das Modul deploy an. Es wurde entwickelt, um Entwicklern das einfache Bereitstellen von Drupal -Inhalten von einer Site zu einer anderen. Deploy verwaltet automatisch Abhängigkeiten zwischen Objekten (wie Knotenreferenzen). Es wurde entwickelt, um eine umfangreiche API zu haben, die einfach sein kann erweitert, um in einer Vielzahl von Situationen verwendet zu werden.

0
user842

Erstens ist keine Codierung oder direkte Datenbankinteraktion erforderlich.

Einfache Lösung:

  1. Erstellen Sie eine Ansicht der Knoten, die Sie exportieren möchten, mit https://www.drupal.org/project/views_rss

  2. Richten Sie den periodischen Knotenimport mit https://www.drupal.org/project/feeds ein

0
laniol

Probieren Sie das Modul Drupal Sync aus. Dieses Modul befindet sich noch in der Entwicklung, aber ich habe es mit Erfolg zwischen 3 Websites getestet.

Das vorliegende Modul ermöglicht das Synchronisieren von Inhalten zwischen mehreren Websites. Unterstützte Entitätstypen: Knoten und Taxonomie, Menüelemente. Bei der Erstellung des Moduls wurden viele Haken verwendet. Es ermöglicht die Erweiterung der Synchronisationsfunktion durch die Entwicklung zusätzlicher Module.

0
jbfelix