Einleitung
In diesem Beitrag geht es darum, was beachten werden muss, wenn auf einem Contao System auf einem Entwicklungsserver, der nicht auf dem gleichen Stand wie der Liveserver ist, die Artikel und neue Inhalte gepflegt werden und diese dann auf dem Liveserver übertragen werden müssen.
Hier geht es um SQL Datenbankabfragen und wie man die richtigen Page- und Article Ids herausbekommt.
Contao und seine ID-Systematik
Wer viel mit Contao zu tun hat, wird bemerken, dass Arbeiten im Backend, egal was man auch tut, geloggt und mit der jeweiligen ID versehen wird (die letzten Änderungen kann unter anderem im Backend auf der Startseite oder /contao/main.php eingesehen werden).
Ändert man beispielweise das Seitenlayout, in dem man eine weitere CSS Datei hinzufügt – wird in der Datenbank in der Tabelle tl_layout diese Änderung natürlich gespeichert. Hat man in seinem Seitenlayout eine Default Seite definiert, wird die ID dieser „Seitenlayoutseite“ genommen. Das darf nicht mit den IDs oder pids anderer Tabellen verwechselt werden, denn die IDs der Tabellen auf die komplette Datenbank bezogen sind nicht einzigartig.
Problematik bei asynchronen Entwicklungs- und Liveumgebung
Wenn es nun Seiten und Artikel gibt, die nicht auf der Entwicklungsumgebung vorhanden sind, so fehlen die Page- und Article IDs. Dies hat zu Folge, dass neu gepflegte Inhalte nicht einfach per Datenbank Import in die Liveumgebung eingespielt werden können (da ansonsten die Inhalte nicht mehr vorhanden sind, die es auf dem Liveserver gab, aber nicht auf dem Entwicklungsserver).
Wie können wir nun die Inhalte auch auf die Liveumgebung bekommen?
Wir haben dafür zwei Möglichkeiten:
- alle Artikel und Inhalte händisch neu einpflegen
- SQL Inserts ändern
Wenn ihr euch für die SQL Variante entschieden habt, müsst ihr Folgendes beachten: ihr müsst erst einmal ermitteln, welche Seite bearbeitet wurde und welche ID diese hat. Fehlt beispielsweise eine Seite, so können sich die Seiten IDs vom Dev und Live unterscheiden.
In diesem Beispiel hat die Startseite die ID 6. Auf der Liveumgebung war dies allerdings die ID 7.
Somit mussten alle neuen Contao Artikel, die auf der Startseite hinzugefügt wurden, im SQL Insert-Statement die ID angepasst werden.
INSERT INTO `tl_page` (`id`, `pid`, …) VALUES(1, 0, …);
Dort muss der Wert der ID, die beispielsweise durch das Hovern der Artikelseite gefunden werden kann , auf die richtige ID angepasst werden.
Die gleichen Schritte müssen nun noch für die Tabellen tl_content und tl_article wiederholt werden.
- Herausfinden der Seiten ID des Entwcklungs- und Liveservers
- SQL Statement auf die Seiten ID (des Liveservers) anpassen
- SQL Statements in Livedatenbank einspielen
Bei der Tabelle tl_content ist noch zu beachten, dass die ID mit NULL angegeben wird. Da die Tabelle automatisch inkrementiert wird, wird das Contao System selbst die ID vergeben.