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?

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/
    }
  }
}

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
  }  
}  

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>
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • beispiel_news_extension.txt
  • Zuletzt geändert: 01/10/2018 13:14
  • von Thomas Berscheid