Zum Inhalt springen

strlen in typoscirpt??

Erstellt am 27. Februar 2012 · 3 Antworten · letzte Antwort am 27. Februar 2012

Tags: Frage

sxbxstxxn ·

Hallo,

für eine mit JQUERY ausgeführte TAB Variante hole ich die Seitentitel der unterseiten mit folgendem Typoscript Code. Das funktioniert! Das Problem was ich habe ist, dass der Titel abhängig von seiner Länge eine andere CSS Klasse bekommen soll, damit das ganze auf den Tab passt. Also z.B. wenn Länge des Titels > 15, dann class="long". Wie aber frage ich im Typoscript die Länge ab??

lib.TABS = COA

lib.TABS.10 = CONTENT
lib.TABS.10 {
    table = pages
    select {
        orderBy = sorting
        #languageField = sys_language_uid
    }
    renderObj = COA
    renderObj {   
        5 = TEXT
        5.value = <a href="&#35;     
        7 = COA
        7 {
            5 = LOAD_REGISTER
            5 {
                tabs1.cObject = TEXT
                tabs1.cObject.data = register:tabs
                tabs1.cObject.wrap = |+1
                tabs.cObject = TEXT
                tabs.cObject.data = register:tabs1
                tabs.prioriCalc = 1
            }
            10 = TEXT
            10.value = tab-
            15 = TEXT
            15.dataWrap = {register:tabs}
        }
        8 = TEXT
        8.value = ">
        10 = TEXT
        10.field = title
        12 = TEXT
        12.value = </a>
    }
}
sxbxstxxn ·

Das hätte auf jeden Fall geholfen, Danke dafür... 🙂
Ich bin mitlerweile aber durch eine andere Quelle auf folgende Lösung gestoßen (ich ziehe es immer vor, möglichst wenig extensions zu installieren)

lib.TABS.10 = CONTENT
lib.TABS.10 {
    table = pages
    select {
        orderBy = sorting
        selectFields = `title`, LENGTH(`title`) AS `titleLength`
    }

    renderObj = COA
    renderObj {  
        5 = TEXT
        5.value = <a href="&#35;      
        7 = COA
        7 {
            5 = LOAD_REGISTER
            5 {
                tabs1.cObject = TEXT
                tabs1.cObject.data = register:tabs
                tabs1.cObject.wrap = |+1
                tabs.cObject = TEXT
                tabs.cObject.data = register:tabs1
                tabs.prioriCalc = 1
            }
            10 = TEXT
            10.value = tab-
            15 = TEXT
            15.dataWrap = {register:tabs}
        }
        8 = TEXT
        8.value = " class="
        8.if.isGreaterThan.field = titleLength
        8.if.value = 20
        9 = TEXT
        9.value = long
        9.if.isGreaterThan.field = titleLength
        9.if.value = 20
        10 = TEXT
        10.value = ">
        11 = TEXT
        11.field = title
        12 = TEXT
        12.value = </a>
    }
}
jousch ·

Auch so ist es möglich 🙂

Diese Extension erweitert jedenfalls rein die stdWrap Funktion. Sollte man nur strlen benötigen, so kann man die Codeteile rausholen und nur das Benötigte einsetzen.

Danke fürs Posten der Lösung!