Externe URLs in Menüs

Seiten vom Typ „External URL“ werden von TYPO3 in Menüs standardmäßig nur als interne Links generiert, die dann via Redirect auf die externe Seite verweisen.

Manchmal möchte man aber die Seiten gleich direkt verlinkt haben. Christopher hat dazu ein Snippet online gestellt. Dort wird aber nicht das zwischenzeitlich eingeführte Feld „Protocol“ bzw. „urltype“ berücksichtigt. Daher habe ich das Snippet etwas gepimpt :-)

lib.extUrlMenu = HMENU
lib.extUrlMenu {
    1 = TMENU
    1 {
        wrap = <ul id="externalLinks"> | </ul>

        NO = 1
        NO {
            wrapItemAndSub = <li> | </li>

            doNotLinkIt = 1
            stdWrap.cObject = CASE
            stdWrap.cObject {
                key.field = doktype
                default = TEXT
                default {
                    field = title
                    typolink {
                        parameter.data = field:uid
                    }
                }

                3 < .default
                3 {
                    stdWrap.htmlSpecialChars = 1
                    typolink {
                        parameter {
                            data >
                            cObject = CASE
                            cObject.key.field = urltype
                            cObject.default = TEXT
                            cObject.default.value = http://
                            cObject.1 = TEXT
                            cObject.1.value = http://
                            cObject.4 = TEXT
                            cObject.4.value = https://
                            cObject.2 = TEXT
                            cObject.2.value = ftp://
                            cObject.3 = TEXT
                            cObject.3.value = mailto:
                            cObject.stdWrap.dataWrap = |{field:url}
                        }
                    }
                }
            }
        }
    }
}

Quellen

  1. TMENU with external links

Mehrere Variablen an Fluid cObject-ViewHelper übergeben

Fluid kann vieles, aber manchmal will man doch auf TypoScript zurückgreifen und innerhalb eines Fluid-Templates ein cObject verwenden. An TypoScript können via data-Attribut auch Daten übergeben werden.

<f:cObject typoscriptObjectPath="lib.singleTest" data="{'Hello world'}"></f:cObject>
lib.singleTest = TEXT
lib.singleTest.current = 1

Was aber, wenn man verschiedene Objekte/Array/Strings an TypoScript übergeben möchte?
Eigentlich ganz einfach: die Daten als (neues) Array übergeben und mittels field ansprechen:

<f:cObject typoscriptObjectPath="lib.multipleTest" data="{hello: 'Hello', world: 'world'}"></f:cObject>
lib.multipleTest = COA
lib.multipleTest {
    10 = TEXT
    10.field = hello
    10.noTrimWrap = || |
    20 = TEXT
    20.field = world
}

Update: Gilt auch für Partials

Selbiges gilt auch, um an Partials mehrere Argumente zu übergeben:

<f:render partial="social" arguments="{settings : settings, fbLink:fbLink}"/>