Beispiel News Extension
Die News Extension ist eine der beliebtesten Extensions in TYPO3 zur Verwaltung und Darstellung von Nachrichten auf einer TYPO3 Webseite. Hier erfahren Sie mehr über die Konfiguration der News: Wie bindet man eigene Templates ein, ohne den Inhalt der Extension selbst zu überschreiben und damit updates weiterhin möglich zu machen? Wie bindet man die jüngsten Beiträge aus den News in alle Seiten einer Webseite ein?
Eigene Templates per TypoScript
Anstatt Inhalte der Extension zu überschreiben, kann man TYPO3 per TypoScript Pfade angeben, in denen man das eigene Layout für die Webseite anlegt.
Die Vorteile:
- Die Templates können in der Provider Extension abgelegt werden
- Die Inhalte der Templates sind per GIT versionierbar
- Die Extension selber bleibt unangetastet und kann mit updates auf den neuesten Stand gebracht werden
Constants
plugin.tx_news { view { # cat=plugin.tx_news/file; type=string; label=Path to template root (FE) templateRootPaths { 10 = EXT:news/Resources/Private/Templates/ 20 = EXT:ibkprovider/Resources/Private/Templates/News/ } # cat=plugin.tx_news/file; type=string; label=Path to template partials (FE) partialRootPaths { 10 = EXT:news/Resources/Private/Partials/ 20 = EXT:ibkprovider/Resources/Private/Partials/News/ } # cat=plugin.tx_news/file; type=string; label=Path to template layouts (FE) layoutRootPaths { 10 = EXT:news/Resources/Private/Layouts/ 20 = EXT:ibkprovider/Resources/Private/Layouts/News/ } } }
Library für Darstellung auf jeder Seite
Lib mit User Function
Mit dieser Library wird die Ausgabe der News Extension in jede Seite integriert. Dargestellt werden die jüngsten drei Inhalte.
In den Settings stehen Angaben zur Startseite der News (Übersicht) und zur Detailseite. Zudem stehen dort Variablen zur maximalen Bildgröße.
Die Einbindung der Library geschieht über das Template.
## User Funktion Lib News lib.news = USER lib.news { userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run pluginName = Pi1 vendorName = GeorgRinger extensionName = News controller = News settings =< plugin.tx_news.settings persistence =< plugin.tx_news.persistence view =< plugin.tx_news.view switchableControllerActions { News { 1 = list } } settings < plugin.tx_news.settings settings { categories = 1 limit = 3 detailPid = 240 overrideFlexformSettingsIfEmpty := addToList(detailPid) startingpoint = 238 list.media.image.maxWidth = 100 list.media.image.maxHeight = 100 } }
Update TYPO3 Version 12: Die Angabe zu den switchableControllerActions fällt weg, da die Steuerung des Frontend Plugins über die Konfiguration erfolgt.
Einbindung ins Page Template
Der Source Code dieser User Funktion wird in einer eigenen TypoScript Datei gespeichert. Diese kann über das Base Template der Webseite eingebunden werden oder über das Setup in der Provider Extension:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ibkprovider/Resources/Public/lib/lib.news.ts">
Template
Die Einbindung der Library geschieht über das Template. Dazu wird das Partial mit dem Aufruf der zuvor geladenen User Function versehen:
<div class="div_box"> <div class="div_box_titel"> News </div> <div id="div_box_inhalt" class="div_box_inhalt"> <f:cObject typoscriptObjectPath="lib.news" /> <a class="text_link_small" href="/news/">Mehr Neues...</a> </div> </div>
Dieses Partial wird dann in das Template eingebunden.
Eine Condition sorgt dafür, dass die Übersicht nicht in der Übersicht der Nachrichten gezeigt wird.
<f:if condition="{0:pageuid} != {0:'240'}"> <f:render partial="Box/Boxnews" /> </f:if>