Kategorie: TYPO3

  • Fehlendes Canonical Tag im Header einer TYPO3 Instanz

    Damit sich nicht noch jemand durch das Internet quält und doch nichts findet: Vor Kurzem stand ich vor einem Problem mit einer TYPO3 Instanz, das scheinbar niemand sonst dokumentiert hat. Es ging darum, dass der <link rel="canonical"> Tag im Seitenheader fehlte. Trotz ausgiebiger Recherche war keine Lösung zu finden. Am Ende war die Ursache trivial – aber schwer zu entdecken.

    Das Problem: Kein Canonical Tag

    TYPO3 generiert normalerweise automatisch einen Canonical Tag für jede Seite, sofern die entsprechenden Einstellungen korrekt vorgenommen wurden. In meinem Fall jedoch fehlte dieser Tag bei allen Seiten. Im Seiten-Quellcode war kein <link rel="canonical"> Tag zu sehen. Eine Kontrolle der SEO-Einstellungen und der TypoScript-Konfiguration ergab keine Auffälligkeiten.

    Die Ursache: Einstellung bei der Root-Seite

    Die Ursache lag in den Seiteneigenschaften der Root-Seite des Seitenbaums. Unter der Registerkarte Verhalten war die Option „Als Anfang der Website benutzen“ nicht aktiviert. Diese Einstellung ist entscheidend dafür, dass TYPO3 die Root-Seite als Ausgangspunkt der gesamten Website erkennt. Fehlt diese Aktivierung, weiß TYPO3 nicht, wie es den Canonical Tag korrekt generieren soll.

    Die Lösung: „Als Anfang der Website benutzen“ aktivieren

    Die Lösung war denkbar einfach:

    1. Navigiere im TYPO3 Backend zur Root-Seite des Seitenbaums.
    2. Öffne die Seiteneigenschaften.
    3. Gehe zur Registerkarte Verhalten.
    4. Aktiviere die Option „Als Anfang der Website benutzen“.
    5. Speichere die Änderungen und leere den Cache.

    Nach dieser kleinen Anpassung wurde der <link rel="canonical"> Tag sofort wie gewohnt generiert.

  • Fehler: „Oops, an error occurred!“ nach TYPO3 12.4 und News Extension 11.3.0 Update in Bezug auf den Fluid Viewhelper „includeFile“

    Nach dem Update einer TYPO3-Website auf Version 12.4 und einem gleichzeitigen Update der News Extension auf Version 11.3.0 kann es vorkommen, dass bestehende News-Artikel weder in der Übersichtsliste noch in den Detailansichten angezeigt werden. Stattdessen erscheint die Fehlermeldung „Oops, an error occurred! Code: 202401072011058d9760ff“. AdHoc konnte ich keine Fehlerursache erkennen auch waren bei einer Google Suche keine Lösungen für das Problem verfügbar.

    Ursache des Problems

    Die Ursache für diesen speziellen Fehler liegt in einer Änderung der ViewHelpers in der News Extension. In der Logdatei wird ein Fehler im Zusammenhang mit dem ViewHelper „<n:includeFile>“ angezeigt.
    Error: The ViewHelper "<n:includeFile>" could not be resolved.

    Dieser ViewHelper wurde in den früheren Versionen der News Extension verwendet, ist aber in der Version 11.3.0 nicht mehr vorhanden.

    In der Dokumentation der News Extension Version 10 wird der IncludeFile ViewHelper noch erwähnt, jedoch fehlt er in der Dokumentation der Version 11. Diese Änderung wurde offenbar nicht breit kommuniziert, da ich online keine Informationen darüber finden konnten.

    Lösung des Problems

    Die Lösung für dieses Problem wurde im offiziellen TYPO3 Slack-Kanal gefunden. Ein anderer Benutzer hatte das gleiche Problem geäußert, und der Entwickler der News Extension, Georg Ringer, gab einen entscheidenden Hinweis.

    In den originalen Fluid Templates ab Version 11 der News Extension ist ein neues, funktionierendes Code-Fragment zu finden. Anstelle von:

    <f:if condition="{settings.cssFile}">
    	<n:includeFile path="{settings.cssFile}" />
    </f:if> 

    sollte jetzt folgender Code verwendet werden:

    <f:if condition="{settings.cssFile}">
    	<f:asset.css identifier="ext-news" href="{settings.cssFile}" />
    </f:if>

    Anscheinend hat der Autor der News Extension seinen eigenen, extension-spezifischen ViewHelper zugunsten eines standardmäßigen ViewHelpers mit identischer Funktion aufgegeben und aus der Extension entfernt.

    Bei mir half eine Änderung des Syntax in den News Fluid Templates Dateien Layouts/General.html und Layout/Detail.html aus, damit die News Extension in der neuen TYPO3 Instanz wieder funktionierte.

  • Behebung der TYPO3 PHP-Warnung – PHP Warning: Undefined array key „tx_news_pi1“ – nach dem Update auf PHP 8

    Wenn Sie kürzlich Ihr TYPO3-System auf PHP 8 aktualisiert haben, könnten Sie auf eine hartnäckige PHP-Warnung im TYPO3 Systemlog gestoßen sein, die sich auf den Schlüssel „tx_news_pi1“ bezieht.

    Nach dem Update auf PHP 8 bemerkte ich hunderte von Warnungen im TYPO3 System Log, die alle auf die gleiche Typoscript Condition hinwiesen:

    [request.getQueryParams()['tx_news_pi1']['news'] > 0].

    Nach einiger Recherche stellte sich heraus, dass die Syntax für Conditions in TypoScript geändert wurde.

    Die Lösung liegt in der Anpassung der Typoscript Condition. Anstelle der alten Syntax verwendet man nun die neue Syntax:
    [traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0].

    Diese Änderung beseitigt die PHP-Warnungen.

    In der TYPO3-Dokumentation findet man weitere Informationen zur Implementierung der Symfony Expression Language für TypoScript Conditions, welche die Änderungen in der Syntax erklärt. Der folgende Link führt Sie zur entsprechenden Dokumentation: TYPO3-Dokumentation.

  • Fehler „The requested resource /web/NewsTxNewsM2/ was not found.“ nach dem Update der TYPO3 Extension News

    Nach dem Update der TYPO3 Extension news tritt beim Aufrufen des NEWS Backend-Moduls der Fehler:

    „The requested resource /web/NewsTxNewsM2/ was not found.“

    Erst eine Webrecherche brachte die Lösung für das Problem. Auf der Github Seite der News Extension findet man im Forum den entscheidenden Hinweis:

    „For me, fixed the problem by resaving news configuration in Settings > Configure extension.“

    Darauf muss man erst mal kommen. Man muss die Einstellungen der News Extension neu abspeichern. Änderungen an den Einstellungen sind dazu nicht notwendig.

    Speichern der NEWS Einstellungen

    Danach lässt sich das Backend der News Extension wieder ohne Fehler öffnen.

  • TYPO3 Cli bringt die Fehlermeldung „The APCu backend cannot be used because apcu is disabled on CLI.“

    Auf einem Staging Server für das Update von TYPO3 9 auf TYPO3 10 trat bei dem Ausführen von TYPO3 Cli Befehlen der Fehler „The APCu backend cannot be used because apcu is disabled on CLI.“ auf.

    Auf https://forge.typo3.org/issues/82621 fand ich für mich die Lösung für das Problem.

    Um APCu auf der PHP Cli zu aktivieren muss man auf Debian Systemen die Datei /etc/php/7.1/cli/conf.d/20-apcu.ini bearbeiten und die Zeile apc.enable_cli=on hinzufügen.

    Danach konnten die TYPO3 Cli Kommandos erfolgreich ausgeführt werden.

  • Im TYPO3 Backend fehlen nach einem Update auf TYPO3 9.5 die Adminwerkzeuge

    Bei einem Versionsupdate von TYPO3 8 auf TYPO3 9 kann es vorkommen, dass nach dem Update im Backend die Adminwerkzeuge fehlen, obwohl der Benutzer „Adminstatus“ besitzt. Unter anderem fehlt der wichtige Menüpunkt / das Icon „Erweiterungen“.

    Fehlende Menüpunkte / Icons unter der Kategorie „Adminwerkzeuge“.

    Auf Stackoverflow.com fand ich die Lösung für das Problem : TYPO3 admin backend modules are missing.
    Die 2. Antwort brachte mich auf die richtige Fährte.

    Aus welchem Grund auch immer, fehlte dem aus TYPO3 8 nach TYPO3 9 migrierten Admin-User die „System Maintainers“-Berechtigungen. Mit den „System Maintainers“- Rechten wird das Installtool von den bisherigen TYPO3 überflüssig. Die Installtool-Funktionalitäten wandern bei Admin-Usern mit „System Maintainers“-Rechten in das normale TYPO3 Backend.

    Um dem Admin-User die „System Maintainers“-Berechtigungen zu geben, muss man noch einmal das Install-Tool bemühen. Unter dem Menüpunkt Settings –> Manage System Maintainers kann man die TYPO3 User auswählen die „System Maintainer“ sein sollen.

    „System Maintainers“- Verwaltung im TYPO3 Installtool
  • TYPO3 Extension Repository kann nicht mehr aktualisiert werden. Fehler: An exception occurred while executing; INSERT INTO tx_extensionmanager_domain_model_extension …….incorrect string value:

    Beim Versuch bei einer TYPO3 Installation die Extension Repository zu aktualisieren trat folgender Fehler auf:

    An exception occurred while executing; INSERT INTO `tx_extensionmanager_domain_model_extension ……. Incorrect string value: ‚\xC4\x85gol)‘ for column `DBNAME`.`tx_extensionmanager_domain_model_extension`.`update_comment` at row 8

    Dieser Fehler trat auf einem neuen Debian 10 Server mit alten TYPO3 Installationen auf. Bei Debian 9 funktionierte das Update der Repository noch ohne Probleme.

    Incorrect string value: ‚\xC4\x85gol)&#039“ deutet auf ein Zeichensatz Problem hin. Bei einer Netzrecherche fand ich gleichartige Problem die nicht nur auf TYPO3 bezogen waren. Dort wurde vorgeschlagen den Zeichensatz der betreffenden Tabelle auf utf8mb4 zu konvertieren.
    Glücklicherweise löste dies das Problem mit dem fehlgeschlagenen Repository Update in TYPO3. Anschließend musste noch die betreffende Tabelle geleert werden.

    Lösung:
    ALTER TABLE tx_extensionmanager_domain_model_extension CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    TRUNCATE table tx_extensionmanager_domain_model_extension;

  • Fehler: „Oops, an error occurred!“ beim Updaten der TYPO3 Extension „Dynamic Content Elements (DCE)

    Problem: Nach dem Update der TYPO3 Extension „Dynamic Content Elements (DCE)

    tritt im Backend die Fehlermeldung „Oops, an error occurred!“ auf.

    Lösung: Dieses Problem lässt sich leicht beheben, indem man im Installtool von TYPO3 die Extension Autoload Informationen mit dem Befehl „Create autoload information for extension“ neu aufbaut:

    Danach funktioniert TYPO3 wieder ohne Probleme.

    Wenn man ein DCE Update plant, öffnet man das Installtool am besten vor dem DCE Update in einem anderen Browserfenster. Dann ist die Lösung nur ein Klick weit entfernt.

    Wenn man Shellzugriff auf die TYPO3 Installation kann man alternativ auch den Ordner „autoload“ im Ordner typo3conf löschen.

  • TYPO3 8.7 form_legacy Wizard ausblenden / Code anzeigen / Form definition anzeigen / Hide Form Wizard

    Bei der form_legacy Extension in TYPO3 8.7 kann man nicht wie bei der Form Extension in TYPO3 7 zwischen Form Code Definition und Wizard / WYGIWYS Editor / Assistent umschalten. Es wird standardmäßig nur der Wizard angezeigt. Um wieder Zugriff auf den Code der Form Konfiguration zu erhalten muss man das User TSConfig des aktuellen Benutzers anpassen.

    Folgender Typoscriptbefehl blendet den Formwizard aus:

    setup.default.tx_form.showWizardByDefault = 0

    Quellen: 

     

     

     

  • TYPO3 8.7 Update der DCE RTE Flexform Konfiguration bei DCE Elementen aus TYPO3 7.6

    Problem:

    Durch den Wechsel des TYPO3 HTML Editors auf den CKEditor tritt bei einen DCE Inhaltselement mit einem RTE Element ein Problem auf, dass beim Speichern jedes Mal zusätzliche Leerzeilen zur Ausgabe hinzugefügt werden.

    Beispiel der DCE HTML Ausgabe eines RTE Steuerelements mit alter Flexform Config (TYPO3 7.6) nach mehrmaligen speichern:

    p><strong>Modernisieren Sie jetzt!&nbsp;</strong></p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>

    Um dieses Problem zu beheben, muss man bei der TYPO3 8.7 DCE Definition das RTE Flexform Config updaten.

    DCE RTE Flexform Konfig in TYPO3 7.6
    <config>
        <type>text</type>
        <rows>5</rows>
        <cols>30</cols>
        <eval>trim,required</eval>
    </config>
    <defaultExtras>richtext[]:rte_transform[mode=ts_css]</defaultExtras>

    DCE RTE Flexform Konfig in TYPO3 8.7

    <config>
        <type>text</type>
        <rows>5</rows>
        <cols>30</cols>
        <eval>trim,required</eval>
        <enableRichtext>1</enableRichtext>
        <richtextConfiguration>default</richtextConfiguration>
    </config>

    Um das Update für alle DCE RTE Elemente in der Datenbank auf einmal zu erledigen, kann man dies direkt mit folgender SQL-Abfrage tun:

    USE dbname;
    update tx_dce_domain_model_dcefield set configuration=
    '<config>
        <type>text</type>
        <rows>5</rows>
        <cols>30</cols>
        <eval>trim,required</eval>
        <enableRichtext>1</enableRichtext>
        <richtextConfiguration>default</richtextConfiguration>
    </config>'
    where configuration like '%rte_transform%';