Install the news extension with the extension manager and include the static templates
Create a sysfolder "News" an set "Contains Plugin" to "News" in it's properties.
If you set plugin.tx_news.view.templateRootPaths AND plugin.tx_news.view.twb.templateRootPath, only the non twb variant will be used.
plugin.tx_news {
view {
templateRootPaths >
templateRootPaths {
0 = EXT:news/Resources/Private/Templates/
1 = fileadmin/codeSite/templates/extensions/news_isotope/Resources/Private/Templates/
}
partialRootPaths >
partialRootPaths {
0 = EXT:news/Resources/Private/Partials/
1 = fileadmin/codeSite/templates/extensions/news_isotope/Resources/Private/Partials/
}
layoutRootPaths >
layoutRootPaths {
0 = EXT:news/Resources/Private/Layouts/
1 = fileadmin/codeSite/templates/extensions/news_isotope/Resources/Private/Layouts/
}
}
}
plugin.tx_news {
view.twb {
templateRootPath = EXT:sitepackage_pl/Resources/Private/News/Templates/
partialRootPath = EXT:sitepackage_pl/Resources/Private/News/Partials/
layoutRootPath = EXT:sitepackage_pl/Resources/Private/News/Layouts/
}
}
# twb 5 is: view.twb5
tx_news.templateLayouts {
1 = A custom layout
2 = Isotope
# 99 = LLL:fileadmin/somelocallang/locallang.xml:someTranslation
}
<f:if condition="{settings.templateLayout} == 20">
<f:then>
<f:render partial="List/ItemIsotope" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:then>
<f:else>
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:else>
</f:if>
Möchte man z.B. in der Listenansicht alle Formatierungen (Fett, Schriftgröße, Farbe, etc.) entfernen, ändert man
<f:comment>before:</f:comment>
{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
<f:comment>after:</f:comment>
{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.stripTags()}
# Create a page for the archiv and add the news plugin. In plugin select the option Archived under Archive. Add this TS CONFIG to the news folder:
# TS CONFIG
# Beispiel:
tx_news.predefine.archive = next friday
# oder:
tx_news.predefine.archive = +30 days
# Detail Page
plugin.tx_news.settings.detailPid = 6
plugin.tx_news.settings.defaultDetailPid = 23
plugin.tx_news.settings.startingpoint = 4
plugin.tx_news.settings.detail.showSocialShareButtons = 0
plugin.tx_news.settings.cropMaxCharacters = 900
# Order by:
plugin.tx_news.settings.orderDirection = asc
plugin.tx_news.settings.list.media.image.width = 555c
plugin.tx_news.settings.list.media.image.maxWidth = 555c
plugin.tx_news.settings.list.media.image.maxHeight = 290c
# disable preview images if no media:
plugin.tx_news.settings.displayDummyIfNoMedia = false
# or change the default image:
plugin.tx_news.settings.list.media.dummyImage = EXT:sp_weilerhof/Resources/Public/Images/news-default.jpg
# set "Show in views" to "Show in all views" default:
TCAdefaults {
sys_file_reference {
showinpreview = 1
}
}
# categories
TCAdefaults.tx_news_domain_model_news.categories = 1
Gutes Beispiel hier.
In der ext\news\Resources\Private\Templates\Styles\Twb\Templates\News\Detail.html das <f:media file="{mediaElement}" class="img-responsive" /> ändern in:
<a href="{f:uri.image(image:mediaElement, width:'{settings.detail.media.image.lightbox.width}', height:'{settings.detail.media.image.lightbox.height}')}"
title="{mediaElement.title}"
class="{settings.detail.media.image.lightbox.class}"
rel="{settings.detail.media.image.lightbox.prefix}-{mediaElement.uid}"
data-lightbox-height="{settings.detail.media.image.lightbox.height}"
data-lightbox-width="{settings.detail.media.image.lightbox.width}"
data-lightbox-caption="{mediaElement.description}" >
<f:image image="{mediaElement}"
title="{mediaElement.title}"
alt="{mediaElement.alternative}"
maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.detail.media.image.maxWidth)}"
maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.detail.media.image.maxHeight)}" />
</a>
plugin.tx_news.settings.detail.media.image.lightbox {
enabled = 1
class = jnlightbox
prefix = lightbox
width = 1000
# height = 768
}
Dieses Beispiel verwendet eine Variable 'customDetailPageID' für verschiedene Detail-Seiten je nach der 'newsItem.pid', also der Ursprungsseite der News:
<f:variable name="customDetailPageID" value=""/>
<f:switch expression="{newsItem.pid}">
<f:case value="28">
<f:variable name="customDetailPageID" value="14"/>
</f:case>
<f:case value="29">
<f:variable name="customDetailPageID" value="25"/>
</f:case>
<f:case value="45">
<f:variable name="customDetailPageID" value="46"/>
</f:case>
<f:defaultCase></f:defaultCase>
</f:switch>
Link Setzen:
<f:link.page pageUid="{customDetailPageID}" additionalParams="{tx_news_pi1: {controller: 'News',action: 'detail', news:newsItem.uid}}">{newsItem.title}</f:link.page>
# Override content rendering if the news record is requested
[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0]
# typically having something like: page.10 = FLUIDTEMPLATE
# optional to use a custom page template
page.10.templateName = NewsDetail
lib.dynamicContent >
lib.dynamicContent = USER
lib.dynamicContent {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = News
pluginName = Pi1
vendorName = GeorgRinger
switchableControllerActions {
News {
1 = detail
}
}
settings < plugin.tx_news.settings
settings {
# fully optional but can be used to react on it in
# the news templates
templateLayout = 50
backPid = 26
}
}
[end]
Den kann man dann im Fluid-Template abfragen
lib.currentNewsTitle = RECORDS
lib.currentNewsTitle {
tables = tx_news_domain_model_news
source.data = GP:tx_news_pi1|news
conf.tx_news_domain_model_news = TEXT
conf.tx_news_domain_model_news {
field = alternative_title
ifEmpty.field = title
}
wrap = |
}
<?php
/*
Datei: sp_weilerhof/Configuration/TCA/Overrides/tx_news_domain_model_news.php
Diese Datei entfernt die Uhrzeit bei "starttime" und "endtime", damit nur noch das Datum eingetragen wird.
*/
// Bestimmter SysFolder, auf den sich die Änderungen beziehen sollen
$sysFolderUid = 25; // Ersetze 123 durch die UID deines SysFolders
// Prüfen, ob die aktuelle Seite der gewählte SysFolder ist
if ((int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GET('id') === $sysFolderUid) {
$GLOBALS['TCA']['tx_news_domain_model_news']['columns']['starttime']['config'] = [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'date,int',
'default' => 0
];
$GLOBALS['TCA']['tx_news_domain_model_news']['columns']['endtime']['config'] = [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'date,int',
'default' => 0
];
}