Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:typo3:news [2017/02/05 19:05] khopf angelegt |
software:typo3:news [2017/02/05 22:47] (aktuell) khopf |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
===== "Latest"-Ansicht für Startseiten ===== | ===== "Latest"-Ansicht für Startseiten ===== | ||
- | Die Latest-Ansicht soll z.B. auf der Startseite die letzten Nachrichten als Teaser anzeigen und soll deshalb keine Infos wie Kategorie, Datum und auch keine Bilder enthalten. | + | Die Latest-Ansicht soll z.B. auf der Startseite die letzten Nachrichten mit Titel und ggf. kurzem Teaser anzeigen. Es sollen keine Infos wie Kategorie, Datum und auch keine Bilder enthalten sein, um Platz zu sparen. Diese Anleitung orientiert sich an [[https://t3brightside.com/blog/article/typoscript-custom-latest-template-for-the-news-extension/| einer Anleitung von t3brightsight]]. |
+ | |||
+ | ==== Einstellungen per TypoScript ==== | ||
Zunächst legt man hierzu ein neues Layout an. In der Seiten TS-Config wird folgendes hinzugefügt | Zunächst legt man hierzu ein neues Layout an. In der Seiten TS-Config wird folgendes hinzugefügt | ||
<code TypoScript> | <code TypoScript> | ||
tx_news.templateLayouts { | tx_news.templateLayouts { | ||
- | 1 = Latest | + | 1 = Latest Ansicht |
+ | 9 = Normale Ansicht | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | Anschließend müssen wir die Templates ändern. Damit die Änderungen bei einem Update nicht überschrieben werden, kopieren wir die Template-Dateien in das lokale Template-Verzeichnis und teilen Typo3 mit, wo die modifizierten Templates liegen. Dies geschieht nach [[https://docs.typo3.org/typo3cms/extensions/news/3.0.0/Main/Templating/Start/Index.html|Anleitung der news-Erweiterung]] in der TS-Config: | ||
+ | <code TypoScript> | ||
+ | plugin.tx_news { | ||
+ | view { | ||
+ | templateRootPaths { | ||
+ | 0 = EXT:news/Resources/Private/Templates/ | ||
+ | 1 = EXT:fileadmin/templates/ext/news/Templates/ | ||
+ | } | ||
+ | partialRootPaths { | ||
+ | 0 = EXT:news/Resources/Private/Partials/ | ||
+ | 1 = fileadmin/templates/ext/news/Partials/ | ||
+ | } | ||
+ | layoutRootPaths { | ||
+ | 0 = EXT:news/Resources/Private/Layouts/ | ||
+ | 1 = fileadmin/templates/ext/news/Layouts/ | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Die drei Verzeichnisse ''Templates'', ''Partials'' und ''Layouts'' sind drei Standardverzeichnisse von Fluid-Templates (s. [[http://t3n.de/magazin/seitentemplates-fluid-226788/#article|T3N-Artikel]] für eine Erklärung. | ||
+ | |||
+ | **Wichtig:** Wenn eine Erweiterung des News-Plugins (z.B. Twitter Bootstrap) eingebunden ist, kann sich Reihenfolge der Pfade unterscheiden. Dateien am Ende der Liste werden als erstes eingebunden, wenn diese fehlen wird auf das Backup zurückgegriffen. | ||
+ | |||
+ | ==== Template-Files kopieren ==== | ||
+ | Wir kopieren anschließend die Template-Dateien in unser lokales Template-Verzeichnis ''/fileadmin/templates'': | ||
+ | ^ Quelle (Extension-Source) ^ Ziel (Template-Verzeichnis) ^ | ||
+ | |EXT:news/Resources/Private/Templates/News/List.html | fileadmin/templates/ext/news/Templates/News/List.html | | ||
+ | |EXT:news/Resources/Private/Partials/List/Item.html | fileadmin/templates/ext/news/Partials/List/Latest.html | | ||
+ | ==== Template-Files anpassen ==== | ||
+ | Das ausgegebene ''<div class="news-list-view">'' Objekt soll nun nur noch ausgegeben werden, wenn das eigene Template nicht ausgewählt ist und stattdessen wollen wir ein ''<div class="news-latest-view">'' Objekt ausgeben: | ||
+ | <code XML> | ||
+ | ... | ||
+ | <f:if condition="{news}"> | ||
+ | <f:then> | ||
+ | <!-- this condition was added to introduce latest view --> | ||
+ | <f:if condition="{0:settings.templateLayout} == {0:'latestView'}"> | ||
+ | <f:then> | ||
+ | <!-- this is the code for the latest view --> | ||
+ | <div class="news-latest-view"> | ||
+ | <f:for each="{news}" as="newsItem" iteration="iterator"> | ||
+ | <f:render partial="List/Latest" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/> | ||
+ | </f:for> | ||
+ | </div> | ||
+ | </f:then> | ||
+ | <f:else> | ||
+ | <!-- this was the original code --> | ||
+ | <div class="news-list-view"> | ||
+ | <f:if condition="{settings.hidePagination}"> | ||
+ | <f:then> | ||
+ | <f:for each="{news}" as="newsItem" iteration="iterator"> | ||
+ | <f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" /> | ||
+ | </f:for> | ||
+ | </f:then> | ||
+ | <f:else> | ||
+ | <n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit}"> | ||
+ | <f:for each="{paginatedNews}" as="newsItem" iteration="iterator"> | ||
+ | <f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" /> | ||
+ | </f:for> | ||
+ | </n:widget.paginate> | ||
+ | </f:else> | ||
+ | </f:if> | ||
+ | </div> | ||
+ | </f:else> | ||
+ | </f:if> | ||
+ | </f:then> | ||
+ | </code> | ||
+ |
Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.