Install the news extension with the extension manager and include the static templates

  1. News (news)
  2. News Sitemap (news)
  3. News Styles Twitter Bootstrap (news)

Create a sysfolder "News" an set "Contains Plugin" to "News" in it's properties.

Templates

If you set plugin.tx_news.view.templateRootPaths AND plugin.tx_news.view.twb.templateRootPath, only the non twb variant will be used.

Non twb style templates

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

twb style templates

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
constants

Template layouts

tx_news.templateLayouts {
    1 = A custom layout
    2 = Isotope
    # 99 = LLL:fileadmin/somelocallang/locallang.xml:someTranslation
}
page ts
<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>

Texte ohne Formatierungen

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()}
fluid template

Manuelle Sortierung der News

  1. Im Backend unter "Settings" >"Extension Configuration" > "news" den Haken bei "Enable manual sorting of news records" setzen. Jetzt sollten Pfeile nach oben und unten bei jedem News-Eintrag sichtbar sein. Achtung: In der Listenansicht "Extended view" aktivieren!
  2. Im Plugin unter "Plugin Options" > "Sort by" auf "Manual sorting" setzen.

Archiv dates

# 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
ts config

settings

# 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
setup

Default values

# 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
page ts

Klassen abhängig von (News-)Anzahl

Image-Lightbox

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>
fluid template
plugin.tx_news.settings.detail.media.image.lightbox {
    enabled = 1
    class = jnlightbox
    prefix = lightbox
    width = 1000
    # height = 768
}
setup

Dynamische Detail-Seiten

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>
fluid template

Link Setzen:

<f:link.page pageUid="{customDetailPageID}" additionalParams="{tx_news_pi1: {controller: 'News',action: 'detail', news:newsItem.uid}}">{newsItem.title}</f:link.page>
fluid template

Listen- und Detail-Ansicht auf seiner Seite (wegen der URL)

# 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]
setup

News-Titel als Seiten-Titel (Alternativer Titel oder Titel)

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

Nur Datum, ohne Uhrzeit

<?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
    ];
}
Configuration/TCA/Overrides/tx_news_domain_model_news.php