Jeder von euch kennt die Extensions wie z.B. „jfmulticontent„, die für Redakteure schöne Tab-Navigationen oder Accordions bieten, um Inhaltselemente aufgeräumt und strukturiert anzeigen zu lassen.
Heute möchte ich eine für den Integrator einfache und für den Redakteur übersichtliche Methode zeigen, um solche Effekte ohne Extension und ohne die teils nervigen Updates nachzubauen.
Einzige Bedingung hierfür ist die TYPO3 Version >= 4.6 und die Extension „gridelements„.
Einfach über den Extension Manager installieren und – nicht vergessen – die statischen Templates einbinden.
Als Beispiel habe ich mir heute den Effekt „Accordion“ ausgesucht.
Wir beginnen damit, ein Grid Element anzulegen mit dem redakteursunterstützenden Namen Accordion. Im Wizard für die Elemente sind wir schnell fertig, da wir nur diesen einen Kasten benötigen. Wir geben der „Spalte“ auch den Namen Accordion und die Spaltennummer ist die „1“.
Nachdem wir das Grid Element gespeichert haben, müssen wir nur noch das TypoScript einfügen:
tt_content.gridelements_pi1.20.10.setup { # ID of gridelement 1 < temp.gridelements.defaultGridSetup 1 { columns { # colPos ID 1 < .default 1.wrap = <div class="accordion">|</div>; } } } |
Die HTML-Grundstruktur haben wir jetzt. Nun brauchen wir das nötige JavaScript. Das finden wir unter http://jqueryui.com. Dort können wir für das Accordion nötige JS zusammenstellen lassen. Dieses müssen wir herunterladen, entpacken und in unsere TYPO3 Instanz hochladen.
Dann die nötigen TypoScript-Befehle:
# CSS von Accordion / Theme ui-lightness page.includeCSS.accordion = fileadmin/res/css/ui-lightness/jquery-ui-1.8.18.custom.css # jQuery Source page.includeJSFooterlibs.jquery = fileadmin/res/js/jquery-1.7.1.min.js # jQuery UI Accordion Source page.includeJSFooter.accordion = fileadmin/res/js/jquery-ui-1.8.18.custom.min.js # jQuery UI Accordion Init page.includeJSFooter.accordion_init = fileadmin/res/jquery-accordion.js |
Die letzte Datei jquery-accordion.js müssen wir selbst erstellen und den initialisierenden Code hineinschreiben:
$(function() { $( ".accordion" ).accordion(); }); |
Da laut Dokumentation der Standard-Header ein <h3> ist, wir in unserem Beispiel aber die css-styled-content Erweiterungen nutzen, müssen wir den Code anpassen:
$(function() { $( ".accordion" ).accordion({ header: 'div.csc-header' }); }); |
Weitere Anpassungen von Accordion kann man auf der Seite von jQuery UI einsehen.
Somit müssten wir jetzt ein schönes Resultat finden, wenn wir Inhaltselement in das Grid Element hineinziehen (Drag’n’Drop möglich):