TYPO3 parseFunc: FAL-Title für Filelinks im RTE

Der File Abstraction Layer ist toll, aber warum werden die FAL-Titel der Dateien, die im RTE verlinkt werden, nicht benutzt wenn man im Link-Wizard keinen Titel angibt?

Dieses kleine Typoscript Snippet schafft Abhilfe:

# Erweitert die parseFunc_RTE
# Dateilinks nutzen den Datei-Titel aus dem FAL
# wenn kein Titel im Element-Browser angegeben wurde
# parameters:allParams "file:uid target class title"
lib.parseFunc_RTE.tags.link.typolink.title.cObject = TEXT
lib.parseFunc_RTE.tags.link.typolink.title.cObject {

	# wenn parameters nicht mit "file:" anfängt wird der title nicht gesetzt
	if {
		value = file
		equals.cObject = TEXT
		equals.cObject.data = parameters:allParams
		equals.cObject.split {
			token = :
			cObjNum = 1 || 2
			1.current = 1
		}
	}
	
	# Konstruktion eines Strings der Form "file:uid:title" für die data-Property
	data.cObject = COA
	data.cObject {
		10 = TEXT
		10.value = file:
		
		20 = TEXT
		20.data = parameters:allParams
		20.split {
			token = :
			cObjNum = 1 || 2
			2.current = 1
			2.split {
				token.char = 32
				cObjNum = 1 || 2 |*| 3
				1.current = 1
			}
		}
		
		30 = TEXT
		30.value = :title
	}
}

Wenn der Titel im Link-Wizard gesetzt wird hat dieser Vorrang denn die parameter-Property überschreibt die title-Property bei typolink.

2 Kommentare

  • Du scheint die Mechanik von split besser verstanden zu haben als ich. Leider sind die Erklärungen in der TSref hierzu mehr als dürftig. Könntest Du etwas zur Funktion von cObjNum sagen und was der Optionsplit bewirkt, den Du dort als Parameter verwendest? Ich habe kürzlich noch versucht bei einem Split die Ausgabe in Dreiergruppen abzuteilen, was mir nicht gelungen ist. Sieht so aus, als wenn das mit Deiner Rangehensweise möglich wäre.

  • Hi Jörg,

    mit dem Optionsplit lege ich fest wie welche cObjNum die einzelnen Teile nach dem Splitten bekommen.
    Die so definierten cObjNums (z. B. 1,2,3) kann ich dann im folgenden als Properties mit Data Type stdWrap nutzen, sie also wrappen, weiter splitten oder was auch immer.

    Wenn keine der cObject-Properties auf current = 1 gesetzt wird werden alle ausgegeben siehe Beispiel:

    lib.test = TEXT
    lib.test {
      value = a,b,c,d,e,f
      split {
        token = ,
        cObjNum = 1||2||3
        1.noTrimWrap = |1:| |
        2.noTrimWrap = |2:| |
        3.noTrimWrap = |3:| |
      }
    }
    
    Ausgabe: 1:a 2:b 3:c 3:d 3:e 3:f

    Sobald man current bei einem Element setzt werden nur die Elemente mit current = 1 ausgegeben.

    lib.test = TEXT
    lib.test {
      value = a,b,c,d,e,f
      split {
        token = ,
        cObjNum = 1||2||3
        1.current = 1
        1.noTrimWrap = |1:| |
        2.current = 1
        2.noTrimWrap = |2:| |
        3.required = 1
        3.noTrimWrap = |3:| |
      }
    }
    
    Ausgabe: 1:a 2:b

    Hier ist übrigens noch eine super Erklärung für optionSplits falls Du sie brauchst:
    http://www.web-werkstatt.eu/blog/optionsplit-typoscript.html.

Schreibe einen Kommentar zu Steffen Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.