inspiredminds/contao-news-sync
von inspiredminds
Projekt Webseite unter Contao News Sync
Mit dieser Extension können automatisch Nachrichtenartikel zwischen verschiedenen Contao Installationen synchronisiert werden. Die Synchronisationsrichtung kann dabei beliebig festgelegt werden (etwa A nach B, B nach A oder beide Richtungen). Die Extension kann auch dazu verwendet werden, Nachrichtenartikel einmalig aus einer Contao Installation in eine andere Contao Installation zu importieren, etwa für den Relaunch einer Website. Da die Extension die Contao Versionen 3.5 und 4.4+ unterstützt, können damit auch Nachrichten aus älteren Contao Versionen in die neueste Contao Version übertragen werden.
Um diese Erweiterung zu installieren, muss zuerst die composer.json
der eigenen Contao Installation modifiziert werden.
Dabei sind zwei Anpassungen notwendig: das private Repository hinzufügen und die Abhängigkeit hinzufügen.
Um das Repository hinzuzufügen, muss folgendes in der composer.json
eingefügt werden:
{
"repositories": [
{
"type": "composer",
"url": "https://token:<YOUR_TOKEN>@packdis.inspiredminds.at/r"
}
]
}
<YOUR_TOKEN>
muss mit dem Repository Token ersetzt werden, welches von inspiredminds geschickt wurde.
Um die Abhängigkeit hinzuzufügen, muss folgendes in der composer.json
eingefügt werden:
{
"require": {
"inspiredminds/contao-news-sync": "^3.0"
}
}
{
"name": "contao/managed-edition",
"type": "project",
"description": "Contao Open Source CMS",
"license": "LGPL-3.0-or-later",
"authors": [
{
"name": "Leo Feyer",
"homepage": "https://github.com/leofeyer"
}
],
"require": {
"php": "^7.1",
"contao/conflicts": "@dev",
"contao/manager-bundle": "4.9.*",
"inspiredminds/contao-news-sync": "^3.0"
},
"conflict": {
"contao-components/installer": "<1.3"
},
"extra": {
"contao-component-dir": "assets",
"symfony": {
"require": "^4.2"
}
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"scripts": {
"post-install-cmd": [
"Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
],
"post-update-cmd": [
"Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
]
},
"repositories": [
{
"type": "composer",
"url": "https://token:<YOUR_TOKEN>@packdis.inspiredminds.at/r"
}
]
}
Nachdem diese Änderungen gemacht wurden, kann nun ein composer update
auf der Kommandozeile oder eine
Paketaktualisierung im Contao Manager durchgeführt werden. Danach wie gewohnt das Contao Install Tool aufrufen, um die
Datenbank zu aktualisieren.
Die Installation unter Contao 3 setzt die Verwendung der Composer Paketverwaltung voraus. Ansonsten ist die Vorgehensweise
gleich. Die von der Composer Paketverwaltung verwendete composer.json
befindet sich im composer/
Unterordner der
Contao 3 Installation. Als Versionsangabe muss "^1.0"
verwendet werden.
Falls die Composer Paketverwaltung in Contao 3 noch nicht eingesetzt wird, kann diese natürlich jederzeit installiert werden. Falls die Composer Paketverwaltung nur für diese Extension, und nur einmalig gebraucht wird (eben etwa um alle Nachrichten einmalig in eine andere Contao Installation zu übertragen), kann folgende Anleitung benutzt werden:
Zuerst muss die composer
Erweiterung installiert werden. In der Erweiterungsverwaltung unter Erweiterung installieren
nach composer suchen. Die Installation von Version 0.16.6 mit Weiter mehrmals bestätigen.
Nach erfolgreicher Installation der Erweiterung wird automatisch auf die neue Paketverwaltung im Backend weitergeleitet. Dort bestätigt man nun die Installation von Composer.
Danach würde die Composer Paketverwaltung eine Migration der bestehenden Extensions vom alten Contao Extension Repository auf die neue Paketverwaltung durchführen. Diese Migration ist allerdings nicht notwendig für die einmalige Benutzung der News Sync Extension. Daher kann die Migration mit Migration überspringen (Nur wenn du weißt was du tust) übersprungen werden.
In der Paketverwaltung sollte man nun rechts oben unter Einstellungen die Einstellung Minimale Stabilität auf Stabil ändern und speichern.
Danach kann man direkt in den Einstellungen rechts oben auf den Expertenmodus gehen, wo man die composer.json
der Paketverwaltung
editiert. Hier kann nun die composer.json
wie im Punkt Installation beschrieben angepasst werden. Danach
die Änderungen speichern. Insgesamt würde die composer.json
dann so aussehen:
{
"name": "local/website",
"description": "A local website project",
"type": "project",
"license": "proprietary",
"require": {
"contao-community-alliance/composer-client": "~0.14",
"inspiredminds/contao-news-sync": "^1.0"
},
"prefer-stable": true,
"minimum-stability": "stable",
"config": {
"preferred-install": "dist",
"cache-dir": "cache",
"component-dir": "../assets/components"
},
"repositories": [
{
"type": "composer",
"url": "https://legacy-packages-via.contao-community-alliance.org"
},
{
"type": "artifact",
"url": "packages"
},
{
"type": "composer",
"url": "https://token:<YOUR_TOKEN>@packdis.inspiredminds.at/r"
}
],
"extra": {
"contao": {
"migrated": "skipped"
}
}
}
Wenn man die nachfolgende composer update
Operation über das Backend durchführen möchte, statt über die Kommandozeile,
dann empfiehlt es sich unter System » Einstellungen » Composer-Einstellungen den
Detached Mode
einzustellen.
Die genauen Angaben zum PHP CLI Pfad variieren je nach Serverumgebung und eingesetzter PHP Version und können daher hier
nicht festgelegt werden. Mögliche Angaben zum PHP Pfad je nach Hoster bekommt man im
Wiki der Composer Erweiterung
oder auch im Wiki des Contao Managers. Auch die Angabe zum memory_limit
Parameter muss individuell eingestellt werden. Je nach Serverumgebung ist es am besten den Parameter auf -1
zu setzen,
oder auf 4G
, oder gar ganz zu entfernen.
Die Composer Erweiterung lädt automatisch die neueste composer.phar
. Allerdings handelt es sich dabei um eine Entwicklerversion,
die vermutlich nicht mit der Extension kompatibel sein wird. Daher muss diese Datei manuell ersetzt werden. Die neueste
1.x
Version des Composers erhält man unter getcomposer.org/download/.
Die bestehende composer/composer.phar
im Contao Installationsverzeichnis ersetzt man dann mit der heruntergeladenen Datei.
Nun kann die Paketaktualisierung durchgeführt werden, womit die News Sync Extension tatsächlich installiert wird. Dies ist der problematischste Punkt, denn diese Operation braucht viel Arbeitsspeicher. Die Paketaktualisierung kann direkt über das Backend oder auf der Kommandozeile angestoßen werden.
Backend
Hat man die entsprechenden Composer-Einstellungen zuvor getroffen, kann die Paketaktualisierung in der Paketverwaltung mit einem Klick auf Pakete Aktualisieren angestoßen werden. Die Paketaktualisierung muss, bei der ersten Benutzung, insgesamt drei mal durchgeführt werden.
Danach ist die Extension installiert. Im Anschluss bietet die Paketverwaltung gleich direkt an, die Datenbank-Updates durchführen zu lassen. Alternativ kann man dies auch wie gewohnt im Contao Install Tool durchführen lassen.
Kommandozeile
Um die Paketaktualisierung auf der Kommandozeile durchzuführen, begibt man sich auf der Konsole in den composer/
Unterordner
der Contao Installation. Das auszuführende Kommando lautet:
php composer.phar update --optimize-autoloader
Im angegebenen Kommando muss php
mit dem Pfad zum passenden PHP CLI ersetzt werden. Dies hängt von der jeweiligen Serverumgebung
ab. Siehe dazu auch der Punkt Composer-Einstellungen.
Das Kommando muss insgesamt drei mal ausgeführt werden:
$ php composer.phar update --optimize-autoloader
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 27 installs, 0 updates, 0 removals
- Installing contao-community-alliance/composer-plugin (2.4.3): Loading from cache
- Installing swiftmailer/swiftmailer (v5.4.12): Loading from cache
- Installing matthiasmullie/path-converter (1.1.3): Loading from cache
- Installing matthiasmullie/minify (1.3.63): Loading from cache
- Installing contao-components/compass (0.12.2.1): Loading from cache
- Installing true/punycode (1.1.0): Loading from cache
- Installing tecnick.com/tcpdf (6.3.5): Loading from cache
- Installing simplepie/simplepie (1.5.5): Loading from cache
- Installing phpspec/php-diff (v1.1.0): Loading from cache
- Installing oyejorge/less.php (v1.7.0.14): Loading from cache
- Installing michelf/php-markdown (1.9.0): Loading from cache
- Installing leafo/scssphp (v0.8.4): Loading from cache
[ContaoCommunityAlliance\Composer\Plugin\DuplicateContaoException]
Warning: Contao core 3.5.40 was about to get installed but 3.5.40 has been found in project root, to recover from this problem please restart the operation
$ php composer.phar update --optimize-autoloader
[ContaoCommunityAlliance\Composer\Plugin\ConfigUpdateException]
legacy packages repository was added to root composer.json
$ php composer.phar update --optimize-autoloader
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 14 installs, 0 updates, 11 removals
- Removing true/punycode (1.1.0)
- Removing tecnick.com/tcpdf (6.3.5)
- Removing swiftmailer/swiftmailer (v5.4.12)
- Removing simplepie/simplepie (1.5.5)
- Removing phpspec/php-diff (v1.1.0)
- Removing oyejorge/less.php (v1.7.0.14)
- Removing michelf/php-markdown (1.9.0)
- Removing matthiasmullie/path-converter (1.1.3)
- Removing matthiasmullie/minify (1.3.63)
- Removing leafo/scssphp (v0.8.4)
- Removing contao-components/compass (0.12.2.1)
- Installing contao-community-alliance/composer-client (0.17.0): Loading from cache
- removed 114 files
- created 1 links
- Installing symfony/polyfill-mbstring (v1.17.0): Loading from cache
- Installing paragonie/random_compat (v9.99.99): Loading from cache
- Installing symfony/polyfill-php70 (v1.17.0): Loading from cache
- Installing symfony/http-foundation (v3.4.40): Loading from cache
- Installing symfony/polyfill-ctype (v1.17.0): Loading from cache
- Installing symfony/event-dispatcher (v2.8.52): Loading from cache
- Installing ramsey/uuid (3.9.3): Loading from cache
- Installing pimple/pimple (v1.1.1): Loading from cache
- Installing contao-community-alliance/dependency-container (1.8.3): Loading from cache
- created 1 links
- Installing contao-community-alliance/event-dispatcher (1.3.0): Loading from cache
- created 1 links
- Installing richardhj/contao-simple-ajax (v1.2.1): Loading from cache
- removed 2 files
- created 3 links
- Installing codefog/contao-haste (4.24.6): Loading from cache
- created 1 links
- Installing inspiredminds/contao-news-sync (1.8.4): Loading from cache
- created 1 links
Package richardhj/contao-simple-ajax is abandoned, you should avoid using it. Use symfony/routing instead.
Writing lock file
Generating optimized autoload files
4 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Runonce created with 1 updates
Danach muss wie gewohnt das Contao Install Tool aufgerufen werden, um die Datenbank zu aktualisieren.
Die Extension muss in allen Contao Installationen installiert werden, die in die Synchronisation der Nachrichten involviert sein sollen. Nach der Installation stehen zusätzliche Einstellungen in den Nachrichtenarchiven unter dem Punkt Synchronisation zur Verfügung.
Um die Nachrichten eines Nachrichtenarchivs als Quelle für die Synchronisation zur Verfügung zu stellen, muss die Einstellung Quelle für Synchronisation aktiviert werden.
Um Nachrichten in einem Nachrichtenarchiv von einer Quelle holen zu lassen muss die Einstellung Ziel für Synchronisation aktiviert werden. Danach stehen zusätzliche Einstellungen zur Verfügung. Unter Quell-URL muss zunächst die URL eingetragen werden, unter der die andere Contao Installation erreichbar ist. Speichert man die Einstellungen danach, stehen unter News Archive alle Nachrichtenarchive zur Auswahl, die auf der Quell-Installation für die Synchronisation freigegeben.
codefog/contao-news_categories
Extension installiert, kann die Synchronisation auf bestimmte Kategorien beschränkt werden.11 Dies funktioniert derzeit noch nur mit Version 2.x
der news_categories
Extension.
Die Aktualisierung der Nachrichten kann auf der Ziel-Installation auf drei verschiedene Arten ausgelöst werden.
vendor/bin/contao-console contao_news_sync:import
Die Nachrichten und Inhaltselemente aller Nachrichtenarchive, die als Quelle für die Synchronisierung freigegeben wurden, sind öffentlich über die API der News Sync Extension erreichbar.