Hab das heute nochmal genauer geprüft. Den Schritt im UpdateWizard gibt es dafür. Das Problem entsteht aber trotzdem, wenn das Feld urltype vorher auf "auto" (0) stand. Dann gibt es später kein Protokoll in dem Linkfeld (url). Das sollte also entweder im UpgradeWizard Schritt oder später bei der Linkgenerierung besser gelöst werden. Wahrscheinlich ist letzteres besser. Bis dahin hilft hoffentlich meine Query dem einen oder anderen weiter.
Ärger mit Seitentyp "Externe Url" nach Update auf TYPO3 9.5
Heute mal einen schnellen Beitrag aus der Rubrik »Ärger nach TYPO3-Update«. Ärger primär deswegen, welche der Problem erst ziemlich am Ende des Updates aufgefallen ist: Wenn Ihr Seiten vom Typ »Externe Url« in Eurer TYPO3-Installation verwendet, müsst Ihr denen beim Update auf TYPO3 9.5 besondere Aufmerksamkeit schenken. Es gibt dort nämlich ein Feld urltype welches in TYPO3 9.5 im Backend nicht mehr angezeigt wird. In der Datenbank ist es aber noch vorhanden. Bei einem Datenbank Compare wird es auch nicht zum Löschen vorgemerkt.
Nun verhält es sicher aber so, dass bei der Linkerzeugung für Menüs dieses Feld nicht mehr berücksichtigt wird. Der Eintrag in dem Feld url wird einfach nur an eure Domain angehängt. Dieser Link ist dann natürlich kaputt. Das Protokoll muss in die url mit rein, dann wird der Link auch korrekt gebaut. Aus meiner Sicht fehlt dafür ein Schritt im UpgradeWizard. Bis dahin hilft diese kleine Datenbankanweisung.
UPDATE pages SET url = CONCAT('https://', url) WHERE doktype = 3 AND urltype = 4 AND url != '' AND url NOT LIKE 'https://%';
Ich prüfe hier ob bei der Url das Protokoll mit angegeben ist. Ob ich https:// oder etwas anderes vor die url schreibe ist abhängig von dem Wert im Feld urltype. Wenn ihr andere Varianten habt, müsst ihr die Query entsprechend anpassen. Hier eine Liste welcher Wert für was genutzt wurde: 1 = http:// 4 = https:// 2 = ftp:// 3 = mailto: Mit einer kleinen SELECT Anweisung findet ihr die bei euch verwendeten Varianten.
SELECT COUNT(*), urltype FROM pages WHERE doktype = 3 GROUP BY urltype;
Ich hoffe die kleine Info zwischendurch hilft dem einen oder anderen.