Sie befinden sich hier: start » beispiel_news_extension

Beispiel News Extension

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>