Gesprengte Ketten – Goodbye NextGen Gallery

Done!

Jetzt wird es wieder einmal technisch, theoretisch und trocken. Also wer „Bilder“ oder einen „Bericht“ erwartet, kann gleich das „X“ drücken.

Vor einigen Jahren wechselte ich von meinem eigens entwickelten CMS-System auf WordPress. Der Grund war einfach der angefallene Programmieraufwand. Wieso sollte ich mir über Dinge den Kopf zerbrechen und nachprogrammieren, wenn das schon Leute vor mir getan haben. Direkt nach dem durchgezogenen „Plattformwechsel“ suchte ich nach einer Lösung im Bereich der Bildergalerie. Bilder sind nun mal das mit das Herzstück meiner Anwesenheit hier.

Da die damalige WordPress Medienbibliothek aber mehr schlecht als recht gewesen war, bzw. eine Galerieoption überhaupt nicht geboten wurde, musste eine externe Lösung her. So kam es, dass ich am Ende bei „NextGenGallery“ landete. Damals war die Galerie noch in der Hand von „Photocrati“, mittlerweile von „Imagely“. Alternativen schien es damals kaum zu geben. Fast jeder WordPress-Blog – so schien es zumindest – hatte das Plugin im Einsatz.

Über die Jahre entwickelte sich WordPress jedoch stetig weiter und so auch deren Medienverwaltung. Mittlerweile sind wir eben an dem Punkt angekommen, wo sich auch Galerien super erstellen und verwalten lassen. Schon vor ein paar Monaten machte ich mir deshalb über eine mögliche Migration Gedanken, zog diese aber nie durch.

Nun war es soweit. Rund 106 Galerien mit insgesamt 5892 Bildern. Jetzt laufen alle meine Bildgalerien auf dem WordPress Standard.

Wieso zurück zum Standard

Ich bin beruflich bekanntlich IT-Projektleiter und bin nicht nur vom ersten Treffen bis zur letztendlichen Einführung und Schulung verantwortlich, sondern eben auch für die Entwicklung/Programmierung der individuelle Kundenanpassungen. Wenn man sich außerhalb eines Standards des eigesetzten Produkts bewegt, kann das kurzfristig gut gehen, muss es aber auf lange Sicht nicht unbedingt. Irgendwann kommt ein Update und die Probleme fangen an. Das Ganze zu supporten, Fehleranalysen zu betreiben und Anpassungen vorzunehmen, kann dabei zu einem zeitintensiven Prozess führen.

Genau dieser Fall trat in der Vergangenheit im Bezug auf „NGG“ öfter ein. Schon vor einem Jahr mistete ich meine WordPress-Plugins aus. In den letzten 12 Monaten kam es dann immer häufiger zu Problemen bei den Bildergalerien. Plötzlich lief nach einem WordPressupdate die Lightbox nicht mehr oder ganze Galerien wurden nicht mehr in den Artikeln angezeigt. Zwar kamen u.a. auch Updates von NGG, aber erst das 3. oder 4. Update behoben diese Probleme. Ärgerlich! Zumal im Supportforum ich nicht der Einzige mit diesem Problem gewesen war.

Jetzt könnte man natürlich ganz populistisch die Schuld bei Anderen, insbesonders bei WordPress, suchen.

Daran hat doch WordPress schuld! Hätten Sie einfach nicht die Tag-Informationen ändern müssen!

Das ist natürlich die einfachste Lösung in einer komplexen Welt *hmm, kommt mir gerade bekannt vor*. Richtig ist, WordPress nahm Änderungen bei den Bilderntags vor und somit wurde die jQuery-Lightbox unter bestimmten Umständen ausgeschlossen bzw. blockiert. Dem Hauptentwickler steht es mMn. zu, solche Änderungen ins Leben zu rufen. Alle Anderen müssen da eben nachziehen. Die Kompatibilität blieb ja erhalten, nur eben nicht unter allen bzw. bestimmten Voraussetzungen und Pluginkonstellationen. Zeit zum wechseln!

Ebenso fand ich, dass NGG immer überladener und dadurch träge wurde. Ich bin war Bezahlmitglied für die PRO-Version. Was war da nicht alles dabei… Webshop für die Bilder, zick Templates und und und. Viel Schrott, den ich nicht benötigte. Eigentlich bezahlte ich nur wegen einem bestimmten Vorschautemplate. Irgendwann haben sie es wohl mal selber gemerkt und haben eine Zwischenstufe, die sogenannte PLUS-Variante, errichtet. Dort fielen Module wie eCommerce etc. heraus.

Und wie macht man das jetzt?

DAS ist natürlich DIE Frage. Vorweg sei gesagt, ich biete hier keine Anleitung an. Zu „heikel“ ist das Thema. Um jedoch ehrlich zu sein, am Ende bin ich den „harten“ Weg gegangen und hab alles händisch migriert. Trotzdem möchte ich Euch drei Optionen kurz vorstellen bzw. erläutern.

Wichtig! Egal wie Ihr die Migration angehen wollt, immer zuvor ein FullBackup anfertigen! Sichert also Euer WordPress auf dem Webspace, sowie – ganz wichtig – auch die Datenbank!

 

A) NGG-Escape Script

Schon in der Vergangenheit wollten einige Benutzer NGG den Rücken kehren. Einer davon schrieb ein eigenes kleines Script. Den Downloadlink zu gitHub findet Ihr hier. Das Script hörte sich zunächst gut an. In den Pluginordner kopieren und starten. Danach werden die Galerien selbstständig migriert. Recherchiert man allerdings etwas genauer, könnte das Script zum Problem werden.

Benutzer berichteten davon, dass das Script nicht sauber durchläuft und öfter mal neu angetriggert werden musste. Ob dabei was untergeht oder vergessen wird… man weiss es nicht, da keine Protokollfunktion gegeben ist.

Nach der Migration müssen die Galerien zudem händisch nachbearbeitet werden, da die Links der Bilder auf eine Anhangseite und nicht auf die Mediendateien verweisen. Ein NoGo für mich, da dadurch keine Lightbox anspringt.

Habt Ihr wie ich mehrere Galerien in einem Artikel? Ja? Ist ebenfalls ein Problem! Es wird nur eine Galerie pro Artikel konvertiert. Somit müsst Ihr als Lösung die anderen Galerien händisch in temporäre Artikel verpacken, damit diese konvertiert werden können. Viel Spass!

Das Script ist zudem mittlerweile nicht mehr sehr aktuell. WordPress hat einiges an Änderungen vorgenommen und ob das Script noch zu 100% läuft, weiss ich nicht. Die Summe aller „Problemchen“ war mir am Ende zu viel um es zu testen. Wer mag, darf es natürlich gerne versuchen und berichten.

B) Hardcore auf SQL-Ebene

Ich hab mir die SQL-Struktur der NGG-Tabellen sowie die der WPMB angesehen. Klar, als ITler schaut man da wohl automatisch rein *lach*. Die relevanten Tabellen für die NGG lauten:

  • ngg_gallery
  • ngg_pictures
  • ngg_album

Die Mediabibliothek von WP ist da etwas komplexer aufgebaut. Hierzu ein kleines Bild, wie die Logik von WP diesbezüglich aufgebaut ist.

Quelle: https://codex.wordpress.org/Database_Description
Quelle: https://codex.wordpress.org/Database_Description

Sieht jetzt vielleicht etwas verwirrend aus, ist aber überhaupt nicht so schwer. Zumindest wenn man nur rein die Bilder in die Medienbibliothek bringen möchte. Ohne Metas, ohne Strukturverschiebungen und ohne das bilden von Galerien. Die relevanten Bildinformationen erhält man aus der Tabellen „ngg_pictures“ und „ngg_gallery“. In die Tabelle „wp_posts“ müssen diese Informationen nur noch sauber übertragen werden. Relevant sind hierbei folgende Spalteninformationen:

  • guid: URL des Bildes. Die URL habt Ihr, da NGG die Bilder in der „gallery“-Strukur auf dem Webspace sichert
  • post_type: Hier muss zwingend „attachment“ gewählt werden, damit WP weiss, es handelt sich um eine Mediendatei für die Bibliothek
  • post_mime_type: Bekommt ihr ebenfalls aus den NGG-Tabellen. In der Regel steht hier „image/jpeg“

Sonstige Parameter wie „post_status“, „comment_status“ oder „post_date“ sind selbsterklärend und können somit ebenfalls befüllt werden.

Wie könnte so ein SQL-Script aussehen? Nun gut, zunächst ist es wichtig, die Bilder der NGG-Galerie zusammenzusuchen und die richtigen Strukturen zusammenzubauen, da die Pfade nicht einfach so in der Datenbank stehen. Wir benötigen die Bildinformationen und die Galerie-Informationen für den Pfad. Ich möchte das mal an einem Beispiel durchgehen.

Dazu suche ich mir jetzt mal ein beliebiges Bild aus der Tabelle „ngg_pictures“ heraus. Wenn alle Bilder migriert werden sollen, muss man einfach die „WHERE“-Klausel anpassen.

2016-08-30 10_47_30-Program Manager

Jetzt erstellen wir eine Abfrage mit allen relevanten Tabelleninformationen. Das Statement könnte dabei so aussehen:

SELECT
a.filename,
a.imagedate,
b.path,
b.title as GalerieName,
CONCAT(b.path,’/‘,a.filename) as newPath,
‚attachment‘ as ImageType,
‚image/jpeg‘ as MimeType
FROM `hw_ngg_pictures` as a,
`hw_ngg_gallery` as b
WHERE a.galleryid = ‚6‘
AND a.galleryid = b.gid
AND a.pid = ’21‘

Als Ergebnis erhalten wir folgendes:

2016-08-30 11_08_10-Cortana

  • GalerieName: Könnte man als Bildunterschrift migrieren
  • newPath: Die zusammengesetzte URL (path + filename) für die WPMB
  • ImageType: Hard codiert, da es sowieso als attachment deklariert sein muss
  • MimeType: Hard codiert, da ich nur jpeg’s habe.

Damit hätten wir alle grundlegende Informationen aus den beiden Tabellen „ngg_gallery“ und „ngg_pictures“ zusammengeführt. Der Prefix der beiden Tabellen lautet bei mir „hw_“ dieses müsstet Ihr halt auf euren gewählten Prefix anpassen.

Wie würde ich nun weiter vorgehen?

  1. Das SQL-Statement in der WHERE-Klausel anpassen, damit alle Bilder abgeholt werden
    SELECT
    a.filename,
    a.imagedate,
    b.path,
    b.title as GalerieName,
    CONCAT(b.path,’/‘,a.filename) as newPath,
    ‚attachment‘ as ImageType,
    ‚image/jpeg‘ as MimeType
    FROM `hw_ngg_pictures` as a,
    `hw_ngg_gallery` as b
    AND a.galleryid = b.gid ORDER BY b.gid ASC
  2. Das Ergebnis in einer NEUE Tabelle schreiben. Stichwort wäre hier „INSERT TO SELECT“
    INSERT INTO hw_nggtowp_tmp (filename,imagedate,path,GalerieName,newPath,ImageType,MimeType
    SELECT
    a.filename,
    a.imagedate,
    b.path,
    b.title as GalerieName,
    CONCAT(b.path,’/‘,a.filename) as newPath,
    ‚attachment‘ as ImageType,
    ‚image/jpeg‘ as MimeType
    FROM `hw_ngg_pictures` as a,
    `hw_ngg_gallery` as b
    AND a.galleryid = b.gid ORDER BY b.gid ASC
  3. Die Anzahl der Einträge der Temptabelle mit derer aus „ngg_pictures“ vergleichen. Die müssen identisch sein!
  4. Ein „UPDATE“ der wp_posts mit den Einträgen aus der Temptabelle durchführen.
  5. Thats it!

Was hätte ich am Ende damit erreicht? Die Bilder der NGG-Galerie werden in der WordPress Medienbibliothek angezeigt. Ist doch klasse! Nun gut…

  1. Da ich das original Uploaddatum migriere, sind die Bilder auch in den jeweiligen Datis zu finden und nicht etwa am Beginn der Medienbibliothek
  2. Ihr müsst trotzdem in alle Artikel gehen, oder das SQL noch weiter aufbohren.  Schließlich existieren noch a) die NGG-Galerien und b) sind die Bilder noch zu keiner WP-Galerie zusammengefügt
  3. Die alte Struktur von NGG wurde auf Filesystemebene übernommen, da ich die URL nicht geändert haben. Somit würde der „gallery“-Ordner ebenfalls bestehen bleiben. Weiss nicht ob das sinnvoll ist, so eine Altlast weiterhin mit sich zu schleppen, wenn man sowieso von NGG weg möchte

C) Sauber über den manuellen Weg

Wie zu Beginn erwähnt, bin ich den zähen Weg gegangen und hab es händisch gemacht. Bedeutet, ich habe alle aktuell 82 Artikel geöffnet, die Bilder der jeweiligen Galerie über ein FTP-Programm aus dem Galerie-Ordner von NGG heruntergeladen und manuell wieder in die WordPress Medienbibliothek übertragen. Danach eine Galerie erstellt und in den Artikel eingefügt. Das Ganze dauerte insgesamt gute 5 Std. und ist nicht gerade abwechselnd und motivierend.

Macht wirklich Galerie für Galerie, ansonsten kommt Ihr durcheinander. Zudem habe ich bereits migrierte NGG-Galerien auf dem Webspace mit einerm „M_“ versehen. Somit sah ich auch auf Ordnerebene, welche der Galerien ich bereits migriert hatte.

Kopiert zudem nicht den kompletten Galerieordner, da dieser auch die Tempfiles beinhaltet. Geht in den Ordner der jeweiligen Galerie und kopiert die reinen Bilddateien herunter.

Wie Ihr seht, ich bin einige Optionen durchgegangen und habe mich dann doch am Ende für den manuellen Weg entschieden. Es bedeutet zwar arbeit, aber es läuft sauber und man hat die Fussfessel am Ende endlich abgelegt!

Nun?!

Bin ich weg von NGG. Genieße den Vorteil, dass nun auch im WordPress-Reader (App und Website) meine Bilder angezeigt werden können, nehme den Geschwindigkeitszuwachs mit, erfreue mich über weniger Featureüberladungen und spare mir Geld.

Mit der Lightbox die ich aktuell im Einsatz habe, bin ich noch nicht zu 100% zufrieden. Entweder teste ich dort mal noch andere oder entwickel meine eigene Lightbox nach meinen Wünschen. Mal sehen.

Ich hoffe, ich konnte dem ein oder anderen ein paar Denkanstöße für die eigene Entscheidungsfindung mitgeben.

 

 

 

Blog via E-Mail abonnieren

Gib Deine E-Mail-Adresse an, um diesen Blog zu abonnieren und Benachrichtigungen über neue Beiträge via E-Mail zu erhalten.

Schließe dich 20 anderen Abonnenten an

dasFLOSEN Verfasst von:

Meine Name ist Florian Schickling, der sogenannte "ich"-Part von "dasFLOSEN" und Autor sowie Knipser meines Blogs dasflosen.de. Grundsätzlich bin ich einfach gerne unterwegs, verbringe viel Zeit in der Natur und versuche schöne Momente und Eindrücke mit einer Systemkamera von Olympus festzuhalten. Jeder Ausflug hat seine eigene Geschichte zu erzählen und da ich selbst das alleinige Betrachten von Bildern langweilig finde, kam mir die Idee mit dem Niederschreiben. Dieser soll nicht nur unterhalten, Eindrücke schildern und Bildmaterial liefern, sondern zugleich auch als Informationsquelle für mich, für die Interessierten unter Euch oder für die Nachwelt dienen.

Ein Kommentar

  1. […] habe ich unter WordPress schon einige Plugins kommen und gehen sehen. Zuletzt habe ich u.a. mein Galerie-Plugin beerdigt und bin zurückgekehrt zum WordPress […]

Kommentar verfassen