Ich habe mich letzte Woche mit Mehrspaltigkeit in TYPO3 auseinandergesetzt. Ich habe bisher in 4er-Versionen gearbeitet und wollte nun der neuen Version 6 eine Chance geben. Da die Layouts, die ich serviert bekomme, meistens abwechslungsreich sind (2 oder 3 Spalten innerhalb einer Content-Spalte), habe ich bisher immer TemplaVoila genutzt. Die Flexibilität von TV und der Einsatz von FCEs macht TV zu einem mächtigen Templating-Tool in TYPO3.
Gleich nach der Installation von TV (1.8.0) auf einer lokalen TYPO3 6.0.1 Version die folgende Fehlermeldung beim Aufruf des Moduls: „Storage folder not found. Create one immediately“. Dabei habe ich natürlich einen templates-Ordner in fileadmin. Na gut, wenn das Mapping denn klappt. Aber da kommt folgende Fehlermeldung: „File not found“. Ist ja auch kein Wunder: TemplaVoila geht davon aus, dass der Pfad zur Datei in der DB steht, aber seit TYPO3 6.0 wird FAL eingesetzt und da steht „file:74“ in der Datenbank – also eine Referenz auf einen Datensatz in der DB.
Was mich bei sowas am meisten ärgert – TemplaVoila ist gerade im Dezember als „Compatibility Release“ zu Version 6.0 veröffentlicht worden. Wie muss man da testen, damit der Fehler nicht auftaucht?
Dann habe ich mich mit allen anderen Möglichkeiten beschäftigt, die es möglich machen sollen, eine Spalte dynamisch in mehrere zu unterteilen. Als erstes die Extension gridelements. Die neue Version der Extension befindet sich in der Entwicklung und wird im Frühjahr veröffentlicht (Projekt unterstützen: Grid Elements 2.0). Die Anleitung ist ein bisschen dürftig, aber ich habe es geschafft mittels BE Layouts ein zweispaltiges Element anzulegen. Setze ich das Element im BE ein, kann ich keine Inhalte damit einfügen.
Als nächstes hab ich mir FED angeschaut. Es sieht sehr vielversprechend aus – so wie bei TemplaVoila kann der Redakteur die Seitentemplates aussuchen. Es ist auch sehr elegant, dass die Templates mit Fluid geschrieben werden können. Mit fluidcontent kann man Inhaltselemente erstellen, die wie FCEs in TemplaVoila sind. Allerdings funktioniert es nicht, in das neu angelegte zweispaltige Inhaltselement Inhalte einzusetzen.
Also alles auf Anfang. Ein bisschen frustrierend war es schon – habe versucht Hilfe im Forum zu bekommen, leider ohne Erfolg. Schließlich entschied ich mich, den Fehler in TemplaVoila zu beheben. Die böse Zeile Code ist in templavoila/mod2/index.php in Zeile 694 zu finden:
$fileReference = t3lib_div::getFileAbsFileName($toObj->getFileref());
An dieser Stelle wird versucht, den vollständigen Dateipfad zu ermitteln. Der Rückgabewert von $toObj->getFileref() war bisher ein Dateipfad der Form „fileadmin/templates/seite.html“. Nun steht da stattdessen so etwas wie „file:23“, und der Funktionsaufruf schlägt fehl. Also habe ich nach lange Suche und Try-and-Error folgendes daraus gemacht:
$resourceFactory = t3lib_div::makeInstance('TYPO3\CMS\Core\Resource\ResourceFactory'); $fileObject = $resourceFactory->retrieveFileOrFolderObject($toObj->getFileref()); $fileObjectArray = $fileObject->toArray(); $fileReference = t3lib_div::getFileAbsFileName($fileObject->getPublicUrl());
Ich weiß nicht, ob es der einzige und richtige Weg ist, aber die Dokumentation zu den Neuheiten von TYPO3 ist ein wenig dürftig. Es gibt noch eine andere Stelle, an der das eingesetzt werden muss, aber die müsst ihr schon selbst finden und fixen 🙂
Und dann hats geklappt und ich habe erkannt, warum dieser Fehler bisher nicht aufgefallen ist. Wenn bereits TemplateObjects vorhanden sind oder diese bearbeitet und gespeichert sind, dann wird wieder der Pfad in das Feld geschrieben und die Funktion funktioniert wieder. Also eine andere Lösung für alle, die den Code nicht bearbeiten wollen: Schreibt einfach den Pfad statt der Dateireferenz in die DB-Tabelle.