RTE Linkattribute – die Reihenfolge entscheidet

Das kann einen zur Verzweiflung bringen: Die gesetzten Attribute sehen im Editor gut aus, sind dann jedoch unmittelbar nach dem Speichern verschwunden. So geschehen z.B. beim Einfärben eines Links. Manchmal ging es und dann wiederum nicht. An der Konfiguration konnte es kaum liegen, denn sonst wäre das Setzen der Linkfarbe überhaupt nicht möglich gewesen. Da es aber gelegentlich dann doch ging wurden die möglichen Ursachen soweit eingegrenzt bis der kleine aber feine Unterschied dann doch sichtbar wurde. Knackpunkt war ein weiteres Attribut. Sobald der Link auf fett gesetzt wurde trat dieses Phänomen gelegentlich auf. Das Ganze hängt von der Reihenfolge ab. Zuerst den Link setzen, dann die Farbe, zuletzt auf Fett – so klappte es sicher. Vertauscht man die letzten beiden Schritte ist der „Fehler“ reproduzierbar.

Automatische Veränderungen im Inhalt durch RTE-Editor unterbinden

Mit dem RTE-Editor hat man in der Regel große Freiheiten bei der Erstellung der Inhalte. Oft werden dann aber auch im Rahmen von z.B. Links Zusatzfunktionen bzw. weitere Angaben benötigt. Der RTE-Editor hat jedoch die Eigenschaft genau diese Links wieder abzuändern und die Dinge die er nicht kennt aus dem Link herauszulöschen. Mit einer einfachen Anweisung lässt sich dies jedoch verhindern:

<a href="javascript:void(0)" data-htmlarea-external="1" rtekeep="1">Mein Link</a>

Hier sorgt der letzte Parameter rtekeep=“1″ dafür das der RTE diesen Link in Ruhe lässt und man so seine Zusatzangaben dauerhaft unterbringt.

Plötzlich Internal Server Error 500 bei TYPO3-Installation

Schon fast ein Klassiker unter den TYPO3-Fehlern ist ein Internal Server Error 500 der bei einer bestehenden TYPO3 Installation scheinbar plötzlich auftritt. Diese Meldung erscheint aber nur bei Aufrufen im Frontend, nicht jedoch innerhalb des Backends oder des Install-Bereichs.

Das kann zwar verschiedene Ursachen haben, jedoch liegt der Fehler manchmal auch an einer bestimmten Kleinigkeit: Beim Installieren neuer Extensions benötigen diese oft auch die Einbindung eines statischen Templates. Beleibt dieser entsprechende Klick aus, kommte es zum o.g. Fehler. In diesem Fall einfach wieder ins Backend, das erforderliche Statische Template einbinden und schon läuft die Website wieder.

Rechte nur für Dateien oder Ordner ändern

Wenn innerhalb einer bestehenden Verzeichnisstruktur auf einem Webserver die Rechte für mehrere Ordner oder Dateien geändert werden sollen, ist eine der Möglichkeiten die Anwendung von FTP-Programmen. Am Beispiel von Transmit auf dem Mac gibt es hier die Option das z.B. bei der Rechteänderung für ein Verzeichnis die Option „auf Enthaltene anwenden“ aktiviert werden kann. Nachteil: Alle enthaltenen Dateien und Ordner erhalten dann die gleichen Rechte. Eine Unterscheidung zwischen Ordner und Dateien findet nicht statt. Dazu dauert es oft auch extrem lange bis die FTP-Programme sich hier durch alle Elemente durchgearbeitet haben.

Wesentlich besser ist hier die SSH-Variante. Da dies jedoch noch nicht ausreichend getestet ist gilt wie immer auch hier: Zuerst Datensicherung und Anwendung auf eigene Gefahr.

find . -type f -exec chmod 644 {} \;

Diese Anweisung ändert im aktuellen Verzeichnis und allen enthaltenen Verzeichnissen nur die Dateirechte auf 644. Ordner bleiben davon unberührt.

find . -type d -exec chmod 755 {} \;

Die zweite Anweisung wirkt sich nur auf die Rechte von Verzeichnissen aus und setzt diese auf 755. Hier werden die Dateien nicht geändert. Auch hier gilt das für das aktuelle Verzeichnis und die enthaltenen Ordner.

Datumsformatierung über Objekt

Ein kurzer und effizienter weg um die Datumsformatierungen über PHP in den Griff zu bekommen ist das Objekt DateTime. Einfach in der Anwendung erzeugt es den erforderlichen Timestamp und gibt über die strftime-Parameter die entsprechenden Formatierungen aus.

Beispiel:

$date = new DateTime($res["zeitpunkt"]);
strftime("%d %B", $date->getTimestamp());

RealURL – 404 Fehler obwohl die Seite existiert.

Gerade wenn Veränderungen an der Baumstruktur vorgenommen werden oder auch Umbenennungen der Seiten kann es vorkommen das die Seite über die sprechenden URLs nicht mehr erreichbar sind. Das Ergebnis ist ein 404-Fehler. Ein Blick in das Info-Modul und dort im Bereich des ID-to-path mappings zeigt da einen undvollständigen Eintrag. Scheinbar klappt hier das Update des RealURL-Caches nicht mehr.

Nach vielen Blicken in die Foren und verschiedenen fehlgeschlagenen Versuchen gab es die Lösung über die realurl_conf.php

               'pagePath' => array(
                    'type' => 'user',
                    'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
                    'spaceCharacter' => '-',
                    'languageGetVar' => 'L',
                    'expireDays' => 7,
                    'rootpage_id' => 2,
                    'firstHitPathCache' => 1,
                    'autoUpdatePathCache' => '1',
                ),

Nachdem ich die letzte Zeile

‚autoUpdatePathCache‘ => ‚1‘,

hinzugefügt hatte, füllte sich der Cache wieder so wie er sollte, die 404-Fehler traten ebenfalls nicht mehr auf.

TypoScript als Content-Element einbinden

Ein ziemlich geniales Plugin für die Einbindung von TypoScript-Code als Content-Element ist typoscript2ce. Im Seiten-Template wird der generierte Value am besten in einer temp-Variable abgespeichert. Die Variable wird dann im Plugin eingetragen – fertig.

TypoScript – mehrzeilige Eingaben für Value

Wenn in TypoScript Variablen mit Werten über Value gefüllt werden ist das eigentlich keine große Kunst. Mit einer Befehlsfolge ähnlich der nachfolgenden ist das gleich erledigt:

temp.variable = TEXT
temp.variable.value = Einzeiliger, fortlaufender Text

Der Wert wird an der entsprechenden Stelle ausgegeben, jedoch alles in einer Zeile. Bei mehrzeiligen Eingaben, die auch Zeilenschaltungen an vorgegebenen Stellen beinhalten sollten muss der Wert dann ähnlich der nachfolgenden Struktur eingegeben werden:

temp.variable.value (
Hier werden Inhalte in mehrere
Zeilen geschrieben unter
Beibehaltung der Umbrüche
)

Zu beachten sind hier zwei Dinge: Zum einen darf nach der öffnenden und und vor der schließenden Klammer nichts stehen. Zum anderen darf zwischen value und der öffnenden Klammer kein Gleichheitszeichen stehen. Letzteres wird oft mit der einzeiligen Version verwechselt und daher gerne mal schnell übersehen.

Extension Builder – Relationen nur mit neuen Datensätzen

Mit dem Extension Builder erzeugte Relationen ermöglichen im Backend zu Beginn nur das verknüpfen mit Datensätzen die bei der Verknüpfung gleichzeitig neu erstellt werden. Bestehende Datensätze können so nicht verbunden werden. Mit einer Änderung in der TCA-Datei der entsprechenden Tabelle (Parent) geht dies wieder:

Hierzu muss der Abschnitt des Relationsfeldes im Beispiel

'config' => array(
    'type' => 'inline',
    'foreign_table' => 'tx_productoverview_domain_model_category',
    'foreign_field' => 'product',
    'maxitems'      => 9999,
    'appearance' => array(
      'collapseAll' => 0,
      'levelLinksPosition' => 'top',
      'showSynchronizationLink' => 1,
      'showPossibleLocalizationRecords' => 1,
      'showAllLocalizationLink' => 1
    ),

geändert werden zu

 
  'config' => array(
    'type' => 'select',
    'foreign_table' => 'tx_productoverview_domain_model_category',
    'maxitems'      => 9999,
  ),

Extension Builder – Änderungen werden nur teilweise übernommen

Mit dem Extension Builder lassen sich schnell die ersten Schritte zum Erstellen der TYPO3-Extensions durchführen. Oft zeigt sich jedoch bei den ersten Tests der Erweiterung dass z.B. die Struktur der Datenbanktabelle angepasst werden muss. Auch Änderungen an der Konfiguration der bestehenden Datenbanktabellen sind hier an der Tagesordnung.

Im konkreten Fall wurde über den Extension Builder eine Datenbankstruktur mit vier Tabellen abgebildet. Eine fünfte Tabelle wurde notwendig und wurde hinzugefügt. Nur ließen sich keine neuen Datensätze erstellen da beim Hinzufügen neuer Datensätze diese Tabelle nicht in der entsprechenden Auswahl möglicher Tabellen erschien. TCA-Konfigurationsdatei, ext_tables, etc. alles schien normal und vollständig. Auch das Löschen des Konfigurationscache hatte nichts gebracht. In so einem Fall kommt man als Einsteiger hier schnell an seine Grenzen. Eher der Zufall brachte die Lösung:

Das Deaktivieren und erneutes Aktivieren der entsprechenden Extension im Extension Manager brachte die Lösung. Dadurch werden scheinbar entsprechende Konfigurationen noch mal neu geschrieben. Im Anschluss an diese Aktion war alles wie es sein sollte.