Zum Inhalt springen

~/CodeBlog.at

TYPO3: Open-Graph-Daten von jh_opengraphprotocol zu EXT:seo migrieren

·3 Min. Lesezeit

Veröffentlicht
Überarbeitet

Was ist neu: SQL korrigiert, damit vorhandene OG-Daten nicht überschrieben werden, Reihenfolge als Schritte und Twitter-Felder ergänzt.

Kurz & knapp

EXT:jh_opengraphprotocol gibt es nur bis TYPO3 8.7, ab TYPO3 9 übernimmt die Core-Extension seo die Open-Graph-Felder. Die Daten wandern per SQL von tx_jhopengraphprotocol_ogtitle, …_ogdescription und …_ogfalimages nach og_title, og_description und og_image – plus fieldname in sys_file_reference. Wichtig: nur Seiten mit alten Werten anfassen und bereits gepflegte EXT:seo-Felder nicht überschreiben.

Getestet mit: Migrationen bei mehreren TYPO3-Upgrades, SQL getestet mit MariaDB 11

Inhalt
  1. Vorbereitung
  2. Migration per SQL
  3. Aufräumen

Bei einigen TYPO3-Upgrades der letzten Jahre war die Extension jh_opengraphprotocol (öffnet in neuem Tab) für die Open-Graph-Tags im Einsatz. Die gibt es in der aktuellsten Version (1.3.2) aber nur bis TYPO3 8.7. Ist jedoch kein Problem, denn ab TYPO3 9 ist die SEO-Extension (öffnet in neuem Tab) im Core dabei – mit eigenen Feldern für Open Graph.

Hier eine kurze Anleitung, um die Daten aus der alten Extension in die Felder von EXT:seo zu übernehmen.

Inhalt jh_opengraphprotocol EXT:seo
og:title tx_jhopengraphprotocol_ogtitle og_title
og:description tx_jhopengraphprotocol_ogdescription og_description
og:image tx_jhopengraphprotocol_ogfalimages og_image
og:type tx_jhopengraphprotocol_ogtype – (kein Feld)

Vorbereitung

  1. Backup der Datenbank erstellen.
  2. EXT:seo aktivieren und die Datenbank aktualisieren (Install Tool → Maintenance → Analyze Database Structure), damit die Felder og_title, og_description und og_image existieren.
  3. jh_opengraphprotocol noch nicht entfernen – und vor allem die alten Spalten noch nicht löschen. Sonst sind die Daten weg.

Migration per SQL

1) og:title – nur Seiten mit altem Titel, ohne bereits gepflegten EXT:seo-Titel:

UPDATE pages
SET og_title = tx_jhopengraphprotocol_ogtitle
WHERE tx_jhopengraphprotocol_ogtitle <> ''
  AND (og_title IS NULL OR og_title = '');

2) og:description – nach demselben Muster:

UPDATE pages
SET og_description = tx_jhopengraphprotocol_ogdescription
WHERE tx_jhopengraphprotocol_ogdescription <> ''
  AND (og_description IS NULL OR og_description = '');

3) og:image – hier sind zwei Tabellen beteiligt. Die Bilder selbst hängen als Referenzen in sys_file_reference, in pages steht nur deren Anzahl. Zuerst die Referenzen umbiegen – nur für Seiten, die in EXT:seo noch kein Bild haben:

UPDATE sys_file_reference r
JOIN pages p ON p.uid = r.uid_foreign
SET r.fieldname = 'og_image'
WHERE r.tablenames = 'pages'
  AND r.fieldname = 'tx_jhopengraphprotocol_ogfalimages'
  AND p.og_image = 0;

Danach die Anzahl in pages übernehmen:

UPDATE pages
SET og_image = tx_jhopengraphprotocol_ogfalimages
WHERE tx_jhopengraphprotocol_ogfalimages > 0
  AND og_image = 0;

Die Reihenfolge ist wichtig: Erst die Referenzen, dann die Anzahl – sonst greift die Bedingung og_image = 0 beim ersten Statement nicht mehr.

Die Extension hat außerdem noch das ältere Feld tx_jhopengraphprotocol_ogimage, in dem Bilder als Dateipfad statt als FAL-Referenz gespeichert sind. Das migriere ich nicht automatisch – solche Bilder lieber im Backend neu zuweisen.

Aufräumen

Wenn die Open-Graph-Daten im Backend unter Seiteneigenschaften → Social Media passen:

  1. jh_opengraphprotocol samt TypoScript entfernen.
  2. Im Install Tool unter Analyze Database Structure die alten Spalten tx_jhopengraphprotocol_* löschen.
  3. Im Frontend den Quelltext prüfen: Die og:-Meta-Tags kommen jetzt von EXT:seo.

Für den og:type gibt es in der Core-Extension allerdings kein Feld. Dafür bringt EXT:seo zusätzlich eigene Felder für Twitter/X mit (twitter_title, twitter_description, twitter_image, twitter_card) – die alte Extension hatte so etwas nicht.

Häufige Fragen

Bis zu welcher TYPO3-Version gibt es jh_opengraphprotocol?

Die letzte Version 1.3.2 vom Juli 2018 unterstützt TYPO3 7.6 bis 8.7.

Welche Felder bietet EXT:seo für Open Graph?

In der Seiteneigenschaften-Registerkarte „Social Media“: og_title, og_description und og_image, dazu die Twitter-/X-Felder twitter_title, twitter_description, twitter_image und twitter_card.

Was passiert mit og:type?

Dafür gibt es in EXT:seo kein eigenes Feld. Wer og:type braucht, setzt es z. B. per TypoScript oder über die MetaTag-API.

Wann muss ich die Migration ausführen?

Bevor die alte Extension entfernt und die Datenbank bereinigt wird – danach sind die alten Spalten und damit die Daten weg.

Quellen & weiterführende Links

  1. EXT:jh_opengraphprotocol (öffnet in neuem Tab) – TYPO3 Extension Repository
  2. EXT:seo – Dokumentation (öffnet in neuem Tab) – TYPO3 Dokumentation
  3. seo/Configuration/TCA/Overrides/pages.php (öffnet in neuem Tab) – TYPO3 Core auf GitHub

Geschrieben von

Christoph Schwob (öffnet in neuem Tab)

Ich bin Christoph Schwob, halbkreativer Entwickler aus Österreich und arbeite seit über 10 Jahren an und mit TYPO3. Hier sammle ich Lösungen, Code-Snippets und Notizen rund um TYPO3, macOS, Server, Homelab und alles andere.

Suche

Tippe einen Suchbegriff ein.