Aktuelle Informationen rund um TYPO3

Archiv zur KategorieTypoScript

Flexible Inhaltselemente kategorisieren

Besonders komfortabel bei der Arbeit mit TemplaVoila! ist der Einsatz von Flexiblen Inhaltselementen (FCE). Jeder, der mal eine TYPO3 Webseite mit sehr viele verschiedenen FCEs gebaut hat, kennt jedoch das Problem, dass die Liste der FCEs beim Anlegen eines Inhaltselements sehr lang wird und die Bedienung dadurch etwas umständlich. Deswegen bietet es sich an, die FCEs nach ihrer Art in Tabs zu kategorisieren. Dies kann man wie folgt in TYPO3 umsetzen.

Der Ausgangspunkt ist dabei der “newContentElement”-Wizard von TemplaVoila. Erreichbar ist dieser in der Seiten-TS-Config:

  1. tmp.wizards < templavoila.wizards.newContentElement.wizardItems
  2. templavoila.wizards.newContentElement.wizardItems >

Benutzt wird das temporäre Objekt um die Anpassungen an das ursprüngliche Objekt zu übergeben.

  1. templavoila {
  2.   wizards.newContentElement {
  3.     wizardItems {
  4.       # Tab: "Typical page content"
  5.       common < tmp.wizards.common
  6.       # shorten tab label (width is limited)
  7.       common.header = Typisch
  8.  
  9.       # Tab: "Special elements" + "Form elements"
  10.       special < tmp.wizards.common
  11.       special.header = Speziell
  12.       special.elements {
  13.         # move form elements
  14.         mailform < tmp.wizards.forms.elements.mailform
  15.         search < tmp.wizards.forms.elements.search
  16.         login < tmp.wizards.forms.elements.login
  17.       }
  18.       special.show := addToList(mailform,search,login)
  19.  
  20.       #new custom tab
  21.       grids.header = Grids
  22.       grids.elements {
  23.         # already created TemplateObject
  24.         2cols50-50 {
  25.           title = 2 Spalten 50-50
  26.           description = 2spaltiges Container-Element, Breite 50%-50%
  27.           # path to TO icon may vary
  28.           icon = ../../../../typo3/../uploads/tx_templavoila/2-col-50-50.gif
  29.           # define ContentType
  30.           tt_content_defValues {
  31.             CType = templavoila_pi1
  32.             tx_templavoila_ds = fileadmin/templates/ds/fce/2 Spalten (fce).xml
  33.             # ID of TO
  34.             tx_templavoila_to = 2
  35.           }
  36.         }
  37.       }
  38.       # show all TO’s in list
  39.       grids.show = *
  40.  
  41.       fce < tmp.wizards.fce
  42.       # add fce TO’s
  43.       # fce.show = fce_2,fce_3
  44.  
  45.       plugins < tmp.wizards.plugins
  46.     }
  47.   }
  48. }

Wie das Ganze dann fertig aussieht, könnt ihr euch in den Screenshots ansehen.

Extbase-Plugins über TypoScript einbinden

Der einfachste Weg, eine Extbase-Extension in eine Webseite einzubinden ist über das normale “Insert Plugin” Contentelement. Manchmal möchte man aber die Extension-Ausgabe nicht als Inhaltselement, sondern über TypoScript einbinden.

Bei den auf pibase basierenden Extensions ist eine Einbindung über TypoScript einfach:

lib.myMarker < plugin.tx_extensionkey_piX

Bei Extensions, die auf Extbase basieren, ist die Einbindung nicht ganz so simpel möglich. Wer die Ausgabe einer Extbase-Extension über TypoScript einbinden möchte, muss dies über eine user function machen, welche aber nicht selbst geschrieben werden muss. Extbase liefert die entsprechende Funktion bereits mit. Die userFunc ist “tx_extbase_core_bootstrap->run”.
Dieser UserFunc muss man dann noch über entsprechende Parameter mitgeben, welchen Controller und welche Action aus welcher Extension ausgegeben werden sollen. Das komplette Code-Snipped schaut dann wie folgt aus: (Wichtig: Groß-/Kleinschreibung beachten.)

10 = USER
10 {
    userFunc = tx_extbase_core_bootstrap->run
    pluginName = PiX
    extensionName = ExtKeyInCamelCase
    controller = Controllername
    action = actionname
    switchableControllerActions {
        Controllername {
            1 = actionname
        }
    }

    settings =< plugin.tx_ffndbn.settings
    persistence =< plugin.tx_ffndbn.persistence
    view =< plugin.tx_ffndbn.view
}

Natürlich funktioniert das ganze nur, wenn in der ext_localconf.php der Extension die Konfiguration über “Tx_Extbase_Utility_Extension::configurePlugin” korrekt und vollständig erfogt ist.