Update von Typo3 6.2 auf Typo3 8.7

Aus Debacher-Wiki
Wechseln zu: Navigation, Suche

Beim Update sind folgende Punkte die Haupt-Probleme:

  • TemplaVoila muss durch Gridelements ersetzt werden
  • tt_news muss durch news ersetzt werden
  • simulatestatic wird durch RealURL ersetzt

Keine dieser Veränderungen kann ich wirklich begrüßen, aber was bleibt mir über. Zum Glück gibt es eine Reihe von kleinen Helfern und ein paar Einstellungen, die die Umstellung erleichtern.

Grundlagen

Die bisherigen Typo3-Seiten unter 6.2 laufen auf einem Server mit PHP 5.6. Mit dieser PHP-Version läuft Typo3 8.7 nicht mehr. Im Zuge der Aktualisierung der Systeme ziehen die Seiten auf einen neuen Server mit PHP 7.0 um. Auf dem PHP 7.0 laufen aber nicht alle alten Extensions einwandfrei. An manchen Stellen des Updates muss man etwas in Nebel stochern.

Im ersten Schritt kopiere ich also das komplette Projekt-Verzeichnis auf den neuen Server, verlinke mit der aktuellsten 6.2er Version und richte die Datenbank ein. Schon das installieren der Datenbank kann bei umfangreichen Projekten Zeit kosten.

chown -R www-data.www-data httpdocs

nicht vergessen, zumindest wenn der Webserver unter einem anderen Benutzer läuft, als bisher.

Oft läuft die neuerstellte Kopie nicht sofort, dann per Installtool (http://<meine domain>/typo3/install/) einfach alle Caches löschen und nach Fehlern suchen. Danach sollten Front- und Backend ganz normal erreichbar sein.

Danach wird dann das kopierte System ordentlich aufgeräumt, um soviel Ballast wie möglich zu entfernen, dazu kann man im Install-Tool gleich einige Tabellen leeren.

Danach dann die Liste der Erweiterungen aktualisieren, auch wenn es immer etwas dauert. Alle Extension aktualisieren, soweit notwendig, bei TemplaVoila aber auf keinen Fall über 1.9.x hinaus gehen.

Hinweis: Ganz cool sind auch die Hinweise unter https://bstar.de/2016/04/08/typo3-easy-upgrade-of-pibase-extension-to-typo3-6-2-or-7-6/ mit denen manche Extensions aktualisiert werden können.

Extensions installieren

Nun neu die folgenden Extensions installieren:

  • Gridelements in der alten Version 3.4.0
  • sf_tv2fluidge
  • news in der alten Version 3.2.7
  • news_ttnewsimport in der aktuellen Version

Im Erweiterungsmanager auf die Konfiguration von TemplaVoila und dort das klassische Seiten Modul wieder aktivieren.

Dann habe ich mir eine kleine Distribution erstellt, die die notwendigen Dateien und Seiteninhalte mitbringt. Diese Distribution muss noch zusätzlich hochgeladen und installiert werden: http://debacher.de/downloads/nettemplate_1.2.4.zip

Das Problem ist nämlich, dass die Extension sf_tv2fluidge nur mit Typo3 6.2 zusammen arbeitet und es für spätere Versionen ja auch kein TemplaVoila mehr gibt. Die Umstellung der TemplaVoila Elemente muss also unter 6.2 erfolgen.

Die News-Umstellung kann im Prinzip auch mit einer höheren Version erfolgen, die Extension news_ttnewsimport ist kompatibel mit 6.2.4 - 8.99.99

TV-Elemente konvertieren

Der folgende Screenshot zeigt den neuen Menüpunkt, den sf_tv2fluidge erstellt hat und die beiden Sysordner, die meine Extension eingerichtet hat. In dem Sysordner Backend-Layouts befinden sich die Elemente, die man für die Umstellung benötigt. Später integriere ich die Ordner noch besser in den Seitenbaum

Typo3-update87-1.png

Ich folgen dann einfach den Schritten aus der Dokumentation https://github.com/derhansen/sf_tv2fluidge.

Wenn das Tool Checkboxen anbietet, dann belasse ich alles bei den Voreinstellungen.

Typo3-update87-2.png

Bei einigen FCE-Elemente mit 2 Spalten gibt es das Problem, dass bei meinen TV-Templates trotzdem irgendwie drei Spalten vorhanden sind. Da muss ich wissen, dass dann die rechte Spalte nicht benutzt wurde. Dann klappt die Zuordnung.

Typo3-update87-3.png

Das muss man jetzt für jedes der FCE einzeln vornehmen.

Nun muss im root-Template der Bereich

 # wir setzten templavoila ein
 10 = USER
 10.userFunc = tx_templavoila_pi1->main_page
 10.disableExplosivePreview = 1

ersetzt werden durch:

 10 = FLUIDTEMPLATE
 10 {
   partialRootPath = {$resDir}/Private/Partials
   layoutRootPath = {$resDir}/Private/Layouts

   variables {
     inhaltLinks < styles.content.get
     inhaltLinks.select.where = colPos = 1
     inhaltLinks.slide = -1
     hauptInhalt < styles.content.get
     hauptInhalt.select.where = colPos = 0
     inhaltRechts < styles.content.get
     inhaltRechts.select.where = colPos = 2
     inhaltRechts.slide = -1
   } # Ende variables

   #file = {$resDir}/Private/Templates/zweispaltig.html

   file.stdWrap.cObject = CASE
   file.stdWrap.cObject {
 
     key.data = levelfield:-1, backend_layout_next_level, slide
     key.override.field = backend_layout
     #  key.data = pagelayout
 
     default = TEXT
     default.value =  {$resDir}/Private/Templates/einspaltig.html
 
     1 < .default
     2 < .default
     2.value =  {$resDir}/Private/Templates/zweispaltig.html
     3 < .default
     3.value =  {$resDir}/Private/Templates/dreispaltig.html
   }  
 } # Ende FLUIDTEMPLATE

und unter Konstanten hinzugefügt werden:

resDir = fileadmin/nettemplate/Resources

Weiter muss das eigene Typoscript-Template für die Gridelemnts aktiviert werden und das für die Extension.

Typo3-update87-4.png

Jetzt noch tt_news deaktivieren, im Root-Template die Zeilen für simulatestatic auskommentieren und alle Caches löschen, danach sollte die Website wieder erscheinen, wobei natürlich alles Elemente fehlen, die von TemplaVoila Template aus angesprungen wurden. Die muss man jeweils über die Partials anspringen und daher ggf. die Bezeichner korrigieren.

news importieren

Zuerst im Erweiterungsmanager in die Konfiguration des neuen News-Systems und dort im Reiter backend modules das Häkchen bei Show importer setzen.

Typo3-update87-5.png

Außerdem muss man das dort angegeben Verzeichnis anlegen:

cd fileadmin
mkdir news_import
chown www-data.www-data news_import/


Danach gibt es neben News Administration noch den Menüpunkt News Importer, den man dann aufrufen kann.

Dann kann man damit die Kategorien und die Datensätze importieren. Sie landen dabei auf der gleichen Seite, auf der auch vorher die Datensätze von tt_news gespeichert waren.

Danach muss man dann natürlich noch auf allen Seiten, bei denen bisher das Plugin von tt_news integriert war stattdessen das von news einbinden. Danach sollten auch die News wieder verfügbar sein.

Nun

  • die nicht mehr aktuellen oder aktualisierbaren Extensions löschen.
  • Anschließend die Datenbank bereinigen
  • Möglichst alle temporären Dateien löschen
  • Den Referenz-Index verwalten


template-Namen anpassen

ggf. ändern

Update auf Typo3 7.6

Wenn alles so weit gut gelaufen ist, dann kann man den Link auf die Sourcen umhängen, so dass Version 7.6 benutzt wird. Danach kann man sich in der Regel nicht mehr im Backend anmelden, sondern muss das InstallTool starten.

http://<meine domain>/typo3/install/

Hier erst einmal unter Clean Up wieder etwas aufräumen. Dann unter Important actions alle möglichen Caches leeren und vor allem die nicht mehr funktionsfähigen Extensions entfernen lassen (Check for broken extensions).

Danach kann man dann den Upgrade Wizard durchgehen.

Lediglich das compatibility6 Modul habe ich nicht installieren lassen.


Danach dann im Backend anmelden, die Sprache aktualisieren und den News-Importer deaktivieren und Deinstallieren.

tt_news und der Importer können dann über den Erweiterungsmanager auch entfernt werden. Auch TemplaVoila und sf_tv2fluidge kann man jetzt ganz entfernen. Danach alle Erweiterungen aktualisieren, die das anbieten.


Update auf 8.7

Im letzten Schritt erfolgt dann die Aktualisierung auf 8.7. Zuerst wird wieder der Link auf die Sourcen umgehängt und danach das InstallTool aufgerufen.

Hier müssen zuerst ein paar Verzeichnisse neu angelegt werden, das kann der Installer aber. Er meckert dann über die Datenbank bzw. deren character set.

ALTER DATABASE <datenbankname> CHARACTER SET utf8 COLLATE utf8_general_ci;

Hinweis, wenn der Datenbankname besondere Zeichen enthält, z.B. ein Minuszeichen, dann muss der Name in Anführungsstriche gesetzt werden und zwar in die von `LinksOben nach RechtsUnten`.

Danach kommen dann wieder die relativ vielen Punkte des Upgrade Wizard.

  • Im Backend dann gridelements händisch aktualisieren, solange es nicht im TER vorhanden ist.
  • Auch ansonsten einmal die Aktualisierungen durchgehen.
  • Im Typoscript letzte Reste der alten Extensions entfernen
  • CSS-Style Content und Fluid-Content sinnvoll einrichten
  • RealURL aktivieren
  • Die neue Standardextension rte_ckeditor aktivieren.
  • Die Sitemap neu einrichten
  • Die Suche neu konfigurieren
  • News Einstellungen anpassen

Piwik

Eine Extension für Piwik gibt es natürlich noch nicht. Es geht aber auch ohne:

page.headerData.199 = TEXT
 page.headerData.199.value (  
 
 <!-- Piwik -->
 <script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["setCookieDomain", "*.<meine-domain>.de"]);
  _paq.push(["setDomains", ["*.<meine-domain>.de","*.<meine-domain2>.de"]]);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//<mein-server>.de/piwik/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '42']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
 </script>
 <noscript><p><img src="https://piwik.<mein-server>.de/piwik/piwik.php?idsite=42" style="border:0;" alt="" /></p></noscript>
 <!-- End Piwik Code -->
 )

Fehlermeldungen bei Links

In einigen alten Projekten tauchten Links in der Form

<link ../?id=567

auf. Mit dieser Art von Inhalt kann Typo3 nich umgehen. Im Frontend gibt es im Text eine Fehlermeldung

Oops, an error occurred! Code: 201706070815060406f4db

Im Backend lässt sich das Element dann auch nicht bearbeiten.

Oops, an error occurred!
File ../?id=567 is not valid (".." and "//" is not allowed in path).

More information regarding this error might be available online.

Das Element lässt sich anscheinend nur direkt in der Datenbank verwalten:

SELECT * FROM `tt_content` WHERE bodytext like "%<link ..%"

Hier kann man das mit dem neuen System überschreiben:

<a href="t3://page?uid=567

Kommt das gleiche Ziel mehrfach vor, so lässt sich das relativ bequem ändern.

UPDATE `tt_content` set bodytext='
<a href="t3://page?uid=567"' where bodytext="
<link ../?id=567 - internal-link>Zurück zum Episodenindex</link>"

Weiteres

Für die Anpassung älterer Extensions habe ich unter https://bstar.de/2016/04/08/typo3-easy-upgrade-of-pibase-extension-to-typo3-6-2-or-7-6/ einige nützliche Hinweise gefunden.


Bei manchen Projekten ist eine Suchmaske vorhanden, die auf die alte Suchfunktion verlinkt. Der Name des Suchfeldes hat sich verändert von

name="sword"

zu

name="tx_indexedsearch[sword]"

Ich habe mal wieder eine schöne Fehlermeldung kennen gelernt:

The requested page didn't have a proper connection to the tree-root!

()

Keine der Seiten konnte nach dem Update auf 7.6 angezeigt werden.

Ursache war eine Zeile in der Konfigurationsdatei:

        'addRootLineFields' => 'subtitle,tx_templavoila_ds,tx_templavoila_to,tx_templavoila_next_ds,tx_templavoila_next_to,...

musste ich im Abschnitt FE entfernen.

Noch zu tun

Mir fehlen jetzt aber alle bisherigen Extensions für Gallerien. Da muss ich mich wohl noch etwas umsehen. z.B.

Wie ist das mit dem Lightbox-Effekt für News?