News system

Classification:news
Version:7.0.8
Language:en
Keywords:news
Copyright:2015
Author:Georg Ringer
License:This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml
Rendered:2018-11-07 11:29

The content of this document is related to TYPO3, a GNU/GPL CMS/Framework available from www.typo3.org.

Table of Contents

Introduction

This chapter gives you a basic introduction about the TYPO3 CMS extension “news”.

What does it do?

This extension implements a versatile news system based on the latest technologies which are provided by the TYPO3 CMS.

Best practise from the scratch

  • Based on extbase & fluid
  • Easy to use & understand for editors
  • Using as many elements from the core as possible, e.g. FAL and sys categories
  • Checkbox “Top news” to flag important news
  • Built in support for content elements
  • Support for opengraph and social platforms in default template

Hint

A quote about EXT:news: It is a highly customizable framework for chronological organized content - much more than just a news list!

Need Support?

There are various ways to get support for EXT:news!

Stackoverflow

Please use https://stackoverflow.com to get best support. Tags you should use are typo3 and tx-news, so your question will be visible at http://stackoverflow.com/questions/tagged/tx_news.

Slack

A dedicated channel on slack can be be used to get in touch with other users!

The url is: https://typo3.slack.com/messages/ext-news/

Note

If you are not yet registered, use http://forger.typo3.org/slack for that!

Sponsoring

If you need a feature which is not yet implemented, feel free to contact me anytime!

Private/Personal support

If you need private or personal support, ask one of the developers for it.

Be aware that this support might not be free!

Help supporting further development

This extension and manual has been created in endless hours, mostly by a single person. It is actively maintained to fit all supported TYPO3 versions, user interface concepts and best practice approaches.

If this extension helps you in anyway to achieve your requirements, please think about giving something back. Or you want to sponsor a feature to extend something that’s already there? Then find some ideas to make me happy below - I’m looking forward to geting in contact with you!

Patreon

Support me on patreon.com (https://www.patreon.com/georgringer) and get access to additional extensions and snippets as reward.

PayPal

Support me by a donation on paypal.com (https://www.paypal.me/GeorgRinger/25). It is just one click away

Amazon Wishlist

If you like to send me a small gift - feel free to choose from my Amazon Wishlist (http://www.amazon.de/registry/wishlist/8F573K08TSDG) where I have collected some smaller and medium wishes that wait to be sponsored by someone :-)

Let’s have a coffee

If you’re in the region of Linz, just let me know. I’m always looking forward to meeting new and known faces and to exchange on several topics.

I am also attending meetings of the TYPO3 Usergroup Austria which can be found at http://www.meetup.com/TUGA-TYPO3-User-Group-Austria/.

Money

If you have too much of it and want to share parts of your money with me, just let me know and we’ll find a way to organize that :-)

Note

This section is highly inspired by the website of Mario Rimann (http://rimann.org/), thanks ;)

For editors

This chapter describes how to use the extension from a user point of view.

The sections “Records” lists all the fields of the various records and “Plugin” describes all availble plugins.

How to start

This walkthrough will help you to implement the extension news at your TYPO3 site. The installation is covered here.

Create the records

Before any news record can be shown in the frontend those need to be created.

  1. Create a new sysfolder and switch to the list module. (Of course you can also use an existing sysfolder or normal page).
  2. List view: Use the icon in the topbar “Create new record” and search for “News system” and its records. You should see “News”, “News category” and “News Tag”.
    1. Click on “News category” to create a new category. Insert as many categories as you want and use the field “Parent Category” to build up a category tree.
    2. Click on “News” to create a new news record. Fill as many fields you want to field, a required one is only the header.
  3. Administration module: Use the custom administration module which can be found in the module menu inside the section “Web”.

Hint

More information about the records can be found here: news record, category record, tag record.

Add a plugin to a page

A plugin is used to render a defined selection of records in the frontend. Follow this steps to add a plugin respectively for detail- and list-view to a page:

Detail page
  1. Create a new page “Detail” which will be used to show the full news record. Insert the plugin “News system”. The 2 nd tab “Plugin” is used to configure the extension.
  2. Add a new content element and select the entry “News system”
  3. Switch to the tab “Plugin” where you can define the plugin’s settings. The most important settings are “What to display” and “Startingpoint”.
    1. Change the 1 st select box “What to display” to “Detail view”.
    2. Save the plugin.
List page
  1. Create a new page “List” (or however you want to name it) and insert the plugin “News system” there again.
    1. The selected view is already “List view”. This is fine.
    2. Fill the field “Startingpoint” by selecting the sysfolder you created in the beginning of the tutorial.
    3. Switch to the 2 nd tab “Additional” and fill the field “PageId for single news display” with the page you just created before.
    4. Save the plugin.

Adopt the frontend

Load the List page in the frontend and you should see the news records as output. A click on the title should show the news record on the detail page.

Records

EXT:news uses multiples records which are described here in detail.

News

The news record is obviously the most important record in this extension.

News record
Field: Description:
Header Required! Title of a news record
Top news News records can be marked as top news if it is an important one. This field can be used for filtering and ordering.
Type

A news record can belong to one of the following types:

  • “News”: Default news record
  • “Internal Page”: The news record is linked to a regular page.
  • “External Page”: The news record is linked to an external URL.

Some fields are only available for a special type.

Teaser A teaser text which is shown in the list view and explains the content of the news record in some sentences. Depending on the configuration it is possible that not complete text is shown in the frontend but just a part of it.
Author name Name of the author
Author email Email address of the author
Date & Time Date of the news record
Archive Depending on the configuration this date is used to define if the record is still shown. It is e.g. possible to show only records with an archive date in the past or in the future.
Text Main content of the news record.
Rich text editor disable If set, the RTE is disabled and the field “Text” is shown as plain textarea.
Content elements Add content elements to a news records. This field can be hidden by disabling the setting in extension manager’s settings.
Link to this Page Link to a regular page. This field is only shown with the type “Internal Page”.
Link to External URL Link to an external url. This field is only shown with the type “External Page”.
Categories Selection of categories the news record belongs to.
Tags Add tags to the news record. Use the suggest wizard to search for existing tags and to insert new tags. The pid can be set in the Extension Manager or in TsConfig.
Related News Define news records which are related to the current one.
Keywords Set keywords of this news record, separated with a comma (‘,’)
Description Define an additional description
Alternative title If used, this field is used instead of the default tile.
Speaking URL path segment This field can be used for various scenarios, e.g. in your realurl configuration to set up the URL to the news record.
Relations
Media file

This relation handles all media files you want to attach to a news record.

Field: Description:
Show in list views If set, this media element will be rendered in the list view (or where it is desired by changing the templates).
Title Additional title
Alternative Title The alternative title is e.g. used for the alt attribute of images
Link Additional link
Caption Caption

Category

Categories are not mandatory but make it easier to structure news records.

Hint

EXT:news uses the System Categories since version 3.0.0.

Add a category

img-record-category

  1. Switch to any page or sysfolder in the backend of your TYPO3 installation
  2. Click on the + icon.
  3. Select “Category” which can be found in the section System Records.
Properties
Field Description
Title Title of the category. This field is required!
Parent category The parent category is used to build a category tree. Therefore select the parent of the current category. If nothing selected, the category is used as a root category.
Image Image of the category which can be shown next to a category title.
Description Description of the category
Single-view page for news from this category If a page is defined, it is used as page for displaying the news record. If a news record belongs to more than one category, only the 1 st category is checked for this field.
News category shortcut Optional link of a news category to the given page
SEO: <title>-Tag

Can be used to set a special <title>-Tag for category pages. This must be enabled in the template:

<f:if condition="{categories.0.title}">
   <n:titleTag>
      <f:format.htmlentitiesDecode>{categories.0.title}</f:format.htmlentitiesDecode>
   </n:titleTag>
</f:if>
SEO: Meta-Description

Can be used to set a special meta description for category pages. This must be enabled in the template:

<f:if condition="{categories.0.description}">
   <n:metaTag name="description" content="{categories.0.description -> f:format.stripTags()}" />
</f:if>
SEO: Headline

Can be used to set a special headline for category pages, e.g. for H1 tag This must be enabled in the template:

<f:if condition="{categories.0.headline}">
   <f:then>
      <h1>{categories.0.headline}</h1>
   </f:then>
   <f:else>
      <h1>News Category</h1>
   </f:else>
</f:if>
SEO: Text

Can be used to add additional content text for category pages This must be enabled in the template:

<f:if condition="{categories.0.text}">
   <f:format.html>{categories.0.text}</f:format.html>
</f:if>

Tag

Tags are not mandatory but make it easier to structure news records.

img-record-tag

Add a tag
  1. Switch to any sysfolder in the backend of your TYPO3 installation
  2. Click on the + icon.
  3. Select “Tag” which can be found in the section News system.

Tip

A new tag can also be directly created within a news record. TODO link

Properties
Field:
Description:
  • Field:Title
    Description:Title of the tag. This field is required!
  • Field:Hidden
    Description:Hide a tag.
  • Field:

    SEO: <title>-Tag

    Description:

    Can be used to set a special <title>-Tag for category pages. This must be enabled in the template: .. code-block:: html

    <f:if condition=”{tags.0.title}”>
    <n:titleTag>

    <f:format.htmlentitiesDecode>{tags.0.title}</f:format.htmlentitiesDecode>

    </n:titleTag>

    </f:if>

SEO: Meta-Description
Can be used to set a special meta description for category pages. This must be enabled in the template: .. code-block:: html
<f:if condition=”{tags.0.description}”>
<n:metaTag name=”description” content=”{tags.0.description -> f:format.stripTags()}” />

</f:if>

SEO: Headline
Can be used to set a special headline for category pages, e.g. for H1 tag This must be enabled in the template: .. code-block:: html
<f:if condition=”{tags.0.headline}”>
<f:then>
<h1>{tags.0.headline}</h1>

</f:then> <f:else>

<h1>News Category</h1>

</f:else>

</f:if>

SEO: Text
Can be used to add additional content text for category pages This must be enabled in the template: .. code-block:: html
<f:if condition=”{tags.0.text}”>
<f:format.html>{tags.0.text}</f:format.html>

</f:if>

Plugin

The news plugin is used to output a defined list of records.

It can be added to create a content element with the type “Plugin” and by selecting the plugin type “News system”.

The available actions are:

List

The list action displays a list of defined records. The filters can be defined either in the plugin or by using TypoScript and are described here.

2 different list modes are available.

List view

If a plugin is configured to show this implementation of the list action, it will change its behaviour if the URL contains a link to a detail action! If this is fulfilled, the detail action will be shown instead of the list action.

List view (without overloading detail view)

The described behaviour of the first implementation might not be desired all the time. A typical example is to show a list view in the sidebar of a detail view page. If the above action would be used, the detail view would be shown in the sidebar too.

List of articles

Show a specific list of articles

Detail

There are 2 typical use cases for this action:

  • Use this action to show a full news record which is linked by a list view.
  • Provide a specific news record to output that one. This is very useful to embed a news record e.g. in a newsletter.

Date menu

Use this action to show a list of news items grouped by the date. A typical output can look like:

2015
        January: 13 entries
        February: 9 entries
        March: 6 entries
        June: 4 entries
        ...
2014
        March: 81 entries
        April: 32 entries
        May: 1 entry

If you define a specific page id in field “PageId for list display” (inside the tab “Additional”) and placing a news plugin with the type “List” there, it is possible to create a date filter.

Search form

Use this action to show a basic search inside news records.

Search result

The search result action is based on the list action including an additional filter provided by the search form.

Category menu

Use this action to show a list of categories. The categories are listed as tree.

If you define a specific page id in field “PageId for list display” (inside the tab “Additional”) and placing a news plugin with the type “List” there, it is possible to create a category filter.

Tag list

Use this action to show a list of tags.

If you define a specific page id in field “PageId for list display” (inside the tab “Additional”) and placing a news plugin with the type “List” there, it is possible to create a tag filter.

For administrators

This chapter describes how to manage the extension from a superuser point of view.

Installation

Important

Use the versions 3.x for TYPO3 CMS 6.2 LTS and 4.x for TYPO3 CMS 7 LTS.

The extension needs to be installed as any other extension of TYPO3 CMS:

  1. Switch to the module “Extension Manager”.
  2. Get the extension
    1. Get it from the Extension Manager: Press the “Retrieve/Update” button and search for the extension key news and import the extension from the repository.
    2. Get it from typo3.org: You can always get current version from http://typo3.org/extensions/repository/view/news/current/ by downloading either the t3x or zip version. Upload the file afterwards in the Extension Manager.
    3. Use composer: Use composer require georgringer/news.
  3. The Extension Manager offers some basic configuration which is explained here.

Latest version from git

You can get the latest version from git by using the git command:

git clone git://git.typo3.org/TYPO3CMS/Extensions/news.git

Important

The master branch supports TYPO3 CMS 7 only. Use the branch 6x if you are using TYPO3 CMS 6.2!

Preparation: Include static TypoScript

The extension ships some TypoScript code which needs to be included.

  1. Switch to the root page of your site.
  2. Switch to the Template module and select Info/Modify.
  3. Press the link Edit the whole template record and switch to the tab Includes.
  4. Select News (news) at the field Include static (from extensions):

img-plugin-ts

Updating

If you update EXT:news to a newer version, please read this section carefully!

Versioning

EXT:news follows the approach of Fear-Driven Versioning (https://github.com/jonathanong/ferver).

It uses a 3-number versioning scheme: <major>.<minor>.<patch>

  • Major: Major breaking changes
  • Minor: Minor breaking changes
  • Patch: No breaking changes

Before an update

Before you start the update procedure, please read the changelog of all versions which have been released in the meantime! You can find those in the manual here.

Furthermore it is always a good idea to do updates on a dedicated test installation or at least create a database backup.

Configuration

This chapter describes how to the extension can be configured

TypoScript

This page is divided into the following sections which are all configurable by using TypoScript:

Plugin settings

This section covers all settings, which can be defined in the plugin itself. To improve the usability, only those settings are shown which are needed by the chosen view (The setting orderBy is for example not needed in the single view).

Important

Every setting can also be defined by TypoScript. However, please inform yourself about the setting overrideFlexformSettingsIfEmpty.

Properties
Property Title Sheet Type
orderBy Sort by General string
orderDirection Sort direction General string
dateField Date field to use General string
categories Category selection General string
categoryConjunction Category mode General string
includeSubCategories Include subcategories General boolean
archiveRestriction Archive General string
timeRestriction Time limit (LOW) General string
timeRestrictionHigh Time limit (HIGH): General string
topNewsRestriction Top News General string
singleNews Show a single news record General string
previewHiddenRecords Allow preview of hidden records General string
startingpoint Startingpoint General string
recursive Recursive General int
detailPid PageId for single news display additional int
listPid PageId for list display additional int
backPid PageId to return to additional int
limit Max records displayed additional int
offset Starting with given news record additional int
tags Tags additional string
hidePagination Hide the pagination additional boolean
list.paginate.itemsPerPage Items per Page additional int
topNewsFirst Sort “Top news” before additional boolean
excludeAlreadyDisplayedNews Exclude already displayed news additional boolean
disableOverrideDemand Disable override demand additional boolean
media.maxWidth Max width for media elements template int
media.maxHeight Max height for media elements template int
cropMaxCharacters Length of teaser (in chars) template int
templateLayout Template Layout template string
orderBy

Property

orderBy

Data type

string

Description

Define the sorting of displayed news records. The chapter “Extend news > Extend flexforms” shows how the select box can be extended.

orderDirection

Property

orderDirection

Data type

string

Description

Define the sorting direction which can either be “asc” for ascending or “desc” descending. This can be either asc or desc.

plugin.tx_news.settings.orderDirection = asc

dateField

Property

dateField

Data type

string

Description

The date menu builds a menu by year and month and the given news records. The menu can either be built by using the date field or the archive field.

categories

Property

categories

Data type

string

Description

Define the news categories which are taken into account when getting the correct news records.

plugin.tx_news.settings.categories = 1,2,3

Caution

Don’t forget to set the category mode too! See property below.

categoryConjunction

Property

categoryConjunction

Data type

string

Description

The category mode defines who selected categories are checked. 5 options are available:

1) Don’t care, show all

There is no restriction based on categories, even if categories are defined.

2) Show items with selected categories (OR)

All news records which belong to at least one of the selected categories are shown.

3) Show items with selected categories (AND)

All news records which belong to all selected categories are shown.

4) Do NOT show items with selected categories (OR)

This is the negation of #2. All news records which don’t belong to any of the selected categories are shown.

5) Do NOT show items with selected categories (AND)

This is the negation of #3. All news records which don’t belong to all selected categories are shown.

plugin.tx_news.settings.categoryConjunction = or

includeSubCategories

Property

includeSubCategories

Data type

boolean

Description

Include subcategories in the category selection

plugin.tx_news.settings.includeSubCategories =1

archiveRestriction

Property

archiveRestriction

Data type

string

Description

plugin.tx_news.settings.archiveRestriction = active

News records can hold an optional archive date. 2 modes are available:

active: Only active (non archived)

All news records with an archive date before the current date are shown.

archived: Archived

All news records with an archive date in the past are shown.

Hint

Records with no archive date aren’t shown in any of the selected modes.

timeRestriction

Property

timeRestriction

Data type

string

Description

plugin.tx_news.settings.timeRestriction =-1 week

The time limit offers 2 different options.

Time in seconds

Only news records with a maximum age (compared to the “Date & Time” field) are shown.

Example: An input like “86400” shows only news records which are one day (60 seconds * 60 minutes * 24 hours) old.

Time in words

It is also possible to define the maximum age in words. Examples are:

  • -3 days
  • last Monday
  • -10 months 3 days 2 hours

Words need to be in English and are translated by using strtotime .

timeRestrictionHigh

Property

timeRestrictionHigh

Data type

string

Description

See timeRestriction above. The configuration is the same but for the higher time end.

topNewsRestriction

Property

topNewsRestriction

Data type

int

Description

plugin.tx_news.settings.topNewsRestriction =2

Any news record can be set as “Top News”. Therefore it is possible to show news records depending on this flag.

1: Only Top News records

Only news records which the checkbox set are shown.

2: Except Top News records

Only news records which don’t have the checkbox set are shown.

singleNews

Property

singleNews

Data type

int

Description

plugin.tx_news.settings.singleNews =789

It is possible to show a specific news record in the Detail view if the uid is set with this property.

previewHiddenRecords

Property

previewHiddenRecords

Data type

int

Description

plugin.tx_news.settings.previewHiddenRecords = 1

If set, also records which are normally hidden are displayed. This is especially helpful when using a detail view as preview mode for editors.

Note

Be aware to secure the page (e.g. using a TS condition to make it available only if an BE user is logged in) as this page could be called by anyone using any news record uid to see its content.

Note

If set, any hidden records on the current page are shown as well!

startingpoint

Property

startingpoint

Data type

string

Description

plugin.tx_news.settings.startingpoint =12,345

If a startingpoint is set, all news records which are saved on one of the selected pages are shown, otherwise news of all pages are shown.

recursive

Property

recursive

Data type

int

Description

plugin.tx_news.settings.recursive = 2

The search for pages as startingpoint can be extended by setting a recursive level.

detailPid

Property

detailPid

Data type

int

Description

plugin.tx_news.settings.detailPid =12

This page is uses as target for the detail view. If nothing set, the current page is used.

Hint

Be aware that this setting might not be used, depending on the setting detailPidDetermination.

listPid

Property

listPid

Data type

int

Description

plugin.tx_news.settings.listPid =12

This page is uses as target for the listings, e.g. the date menu and the Search form.

backPid

Property

backPid

Data type

int

Description

plugin.tx_news.settings.backPid =12

Define a page for the detail view to return to. This is typically the page on which the list view can be found.

limit

Property

limit

Data type

int

Description

plugin.tx_news.settings.limit =10

Define the maximum records shown.

offset

Property

offset

Data type

int

Description

plugin.tx_news.settings.offset =3

Define the offset. If set to e.g. 2, the first 2 records are not shown. This is especially useful in combination with multiple plugins on the same page and the setting “Max records displayed”.

tags

Property

tags

Data type

string

Description

Add a constraint to the given tags

hidePagination

Property

hidePagination

Data type

boolean

Description

If defined, the pagination is not shown.

list.paginate.itemsPerPage

Property

list.paginate.itemsPerPage

Data type

int

Description

Define the amount of news items shown per page in the pagination.

topNewsFirst

Property

topNewsFirst

Data type

boolean

Description

plugin.tx_news.settings.topNewsFirst =1

If set, news records with the checkbox “Top News” are shown before the others, no matter which sorting configuration is used.

excludeAlreadyDisplayedNews

Property

excludeAlreadyDisplayedNews

Data type

boolean

Description

plugin.tx_news.settings.excludeAlreadyDisplayedNews =1

If checked, news items which are already rendered are excluded in the current plugin. To exclude news items, the viewHelper <n:excludeDisplayedNews newsItem=”{newsItem}” /> needs to be added to the template. .. note:: The order of rendering in the frontend is essential as the information which news record is shown and should not be included anymore is fetched during runtime.

disableOverrideDemand

Property

disableOverrideDemand

Data type

boolean

Description

plugin.tx_news.settings.disableOverrideDemand =1

If set, the settings of the plugin can’t be overridden by arguments in the URL. The override is used, e.g. to show only news of a given category (category given in the URL).

media.maxWidth

Property

media.maxWidth

Data type

int

Description

Maximum width of assets

media.maxHeight

Property

media.maxHeight

Data type

int

Description

Maximum height of assets

cropMaxCharacters

Property

cropMaxCharacters

Data type

int

Description

plugin.tx_news.settings.cropMaxCharacters =100

Define the maximum length of the teaser text before it is cropped.

templateLayout

Property

templateLayout

Data type

string

Description

plugin.tx_news.settings.templateLayout = 123

Select different layouts. See this section how to add layouts.

Note

Template variants need to be supported by the templates, otherwise this setting doesn’t change anything!

General settings

Any setting needs to be prefixed with plugin.tx_news.settings..

Properties
cssFile

Property

cssFile

Data type

string

Description

Description of the property

Default

Default value (if any). Leave out entirely if not defined.

Path to the css file. This is included with the Layouts.

format

Property

format

Data type

string

Description

Set a different format for the output. Use e.g. “xml” for RSS feeds.

Default

html

useStdWrap

Property

useStdWrap

Data type

string

Description

Add all TypoScript properties as a comma separated list which need support for stdWrap.

As an example:

settings {
  useStdWrap = singleNews

  singleNews.stdWrap.cObject = CONTENT
  singleNews.stdWrap.cObject {
       ...
  }
}

Default

html

overrideFlexformSettingsIfEmpty

Property

overrideFlexformSettingsIfEmpty

Data type

string

Description

The default behaviour of extbase is to override settings from TypoScript by the one of the flexforms. This is even valid if the setting is left empty in the flexforms.

Therefore you can define those settings which’s value should be taken from TypoScript if nothing is set in the plugin.

Default

cropMaxCharacters,dateField,timeRestriction,orderBy,orderDirection,backPid,listPid,startingpoint,recursive,list.paginate.itemsPerPage,list.paginate.templatePath

displayDummyIfNoMedia

Property

displayDummyIfNoMedia

Data type

boolean

Description

If set and no preview image is defined, a placeholder image is shown. The placeholder itself is defined with TypoScript

plugin.tx_news.settings.list.media.dummyImage = typo3conf/ext/news/Resources/Public/Images/dummy-preview-image.png

Default

1

detailPidDetermination

Property

detailPidDetermination

Data type

string

Description

This settings defines which page is used for the link to the detail view. 3 possible options are available which processed in the given order until a page has been found.

  • flexform
  • categories
  • default

flexform

This type tries to get the detail page from the plugin’s setting PageId for single news display which can also be set by using TypoScript.

# If set via TypoScript, also add detailPid to the setting "overrideFlexformSettingsIfEmpty"
plugin.tx_news.settings.detailPid = 123

categories

A detail page can also be defined for every category. Use the field Single-view page for news from this category for that

default

This type tries to get the value from the setting defaultDetailPid.

plugin.tx_news.settings.defaultDetailPid = 456

Default

flexform, categories, default

defaultDetailPid

See above

hideIdList

Property

hideIdList

Data type

string

Description

Define a list of ids of news articles which are excluded in the view. This is similar to the setting excludeAlreadyDisplayedNews but the exclusion is defined in TypoScript instead of the template.

As an example this excludes the news record of a detail action of the same page

plugin.tx_news.settings {
    useStdWrap := addToList(hideIdList)
    hideIdList.cObject = TEXT
    hideIdList.cObject {
        data = GP:tx_news_pi1|news
    }
}
orderByAllowed

Property

orderByAllowed

Data type

string

Description

Due to restrictions of extbase itself it is required to define all fields which are allowed for sorting results.

Default

sorting,author,uid,title,teaser,author,tstamp,crdate,datetime,categories.title

analytics.social

Property

analytics.social

Data type

array

Description

Use additional code for google analytics tracking of the social functionalities.

Default

analytics.social {
     facebookLike = 1
     facebookShare = 1
     twitter = 1
}
demandClass

Property

demandClass

Data type

string

Description

Overload the demand object which is used to build the queries.

Note

This is just important if you want to extend EXT:news.

facebookLocale

Property

facebookLocale

Data type

string

Description

Facebook locale which is used to translate facebook texts. Examples are de_DE, fr_FR, …

Default

en_US

disqusLocale

Property

disqusLocale

Data type

string

Description

Locale used for disqus

Default

en

googlePlusLocale

Property

googlePlusLocale

Data type

string

Description

Locale used for google+

Default

en

opengraph

Property

interfaces

Data type

array

Description

Additional open graph properties can be defined using TypoScript. Those are included in the the template partial EXT:news/Resources/Private/Partials/Detail/Opengraph.html.

The most important properties are filled automatically:

  • og:title is filled with the field Alternative title or if that is empty with the Title.
  • og:description is filled with the field Description or if that is empty with the Teaser.
  • og:image is filled with the first preview image.
  • og:url is filled with the current url.

Check out https://dev.twitter.com/cards/getting-started for more information regarding the twitter cards.

Default

     opengraph {
site_name =  {$plugin.tx_news.opengraph.site_name}
type = article
admins =
email =
phone_number =
fax_number =
latitude =
longitude =
street-address =
locality =
region =
postal-code =
country-name =
twitter {
  card = {$plugin.tx_news.opengraph.twitter.card}
  site = {$plugin.tx_news.opengraph.twitter.site}
  creator = {$plugin.tx_news.opengraph.twitter.creator}
}
     }
detail.media

Property

detail.media

Data type

array

Description

Configuration for media elements in the detail view.

Attention

If you need different options like using width instead of maxWidth you need also to adopt the template files!

Default

detail.media {
     image {
             maxWidth = 282
             maxHeight =

     # If using fluid_styled_content
     lightbox {
         enabled = {$styles.content.textmedia.linkWrap.lightboxEnabled}
         class = {$styles.content.textmedia.linkWrap.lightboxCssClass}
         width = {$styles.content.textmedia.linkWrap.width}
         height = {$styles.content.textmedia.linkWrap.height}
     }
     # If using css_styled_content, use those ssettings
     # lightbox {
     #      enabled = {$styles.content.imgtext.linkWrap.lightboxEnabled}
     #      class = {$styles.content.imgtext.linkWrap.lightboxCssClass}
     #      width = {$styles.content.imgtext.linkWrap.width}
     #      height = {$styles.content.imgtext.linkWrap.height}
     #      rel = lightbox[myImageSet]
     # }
     }

     video {
             width = 282
             height = 300
     }
}
detail.errorHandling

Property

detail.errorHandling

Data type

string

Description

If no news entry is found, it is possible to use various types of error handling.

  • showStandaloneTemplate: A template is rendered. The syntax is showStandaloneTemplate,<path>,<errorCode>, e.g. `showStandaloneTemplate,EXT:news/Resources/Private/Templates/News/DetailNotFound.html,404
  • redirectToListView: This will redirect to the list view on the same page.
  • redirectToPage: Redirect to any page by using the syntax redirectToPage,<pageid>,<status>. This means e.g. redirectToPage,123,404 to redirect to the page with UID 123 and error code 404.
  • pageNotFoundHandler: The default page not found handler will be called.

Default

showStandaloneTemplate

detail.checkPidOfNewsRecord

Property

detail.checkPidOfNewsRecord

Data type

boolean

Description

If set, the detail view checks the incoming news record against the defined starting point(s). If those don’t match, the news record won’t be displayed.

Default

0

detail.showMetaTags

Property

detail.showMetaTags

Data type

boolean

Description

If enabled, the meta tags including title, description and various open graph tags are rendered

Default

1

detail.showPrevNext

Property

detail.showPrevNext

Data type

boolean

Description

If enabled, links to the previous and next news records are shown

Default

0

detail.registerProperties

Property

detail.registerProperties

Data type

string

Description

Define a list of properties you want to be able to use via the TypoScript option register.

lib.fo = TEXT
lib.fo {
        # title becomes newsTitle, keywords becomes newsKeywords, ...
        data = newsTitle
}

Default

keywords,title

detail.showSocialShareButtons

Property

detail.showSocialShareButtons

Data type

boolean

Description

If set, the social share functionality is shown. This includes facebook, twitter, google+

Default

1

detail.disqusShortname

Property

detail.disqusShortname

Data type

string

Description

If set, the commenting system of disqus (www.disqus.com) is used with the given name.

list.media

Property

list.media

Data type

array

Description

Configuration for media elements in the list view.

Attention

If you need different options like using width instead of maxWidth you need also to adopt the template files!

Default

     list.media {
image {
     maxWidth = 100
     maxHeight = 100
}
     }
list.paginate

Property

list.paginate

Data type

array

Description

EXT:news uses a custom ViewHelper to render the pagination.

The following settings are available:

itemsPerPage

Define how many items are shown on one page.

insertAbove

Set it to TRUE or FALSE to either show or hide the pagination before the actual news items.

insertBelow

Set it to TRUE or FALSE to either show or hide the pagination after the actual news items.

maximumNumberOfLinks

If set, not all pages of the pagination are shown but only the given amount. Imagine 1000 news records and 10 items per page. This would result in 100 links in the frontend.

prevNextHeaderTags

Add additional header tags <link rel=”prev” href”” /> and <link rel=”next” href”” /> to tell google about the pagination. Read more at http://googlewebmastercentral.blogspot.co.at/2011/09/pagination-with-relnext-and-relprev.html

templatePath

Set a custom template file for the paginate widget. The path has to point to the template file, for example EXT:foobar/Resources/Private/Templates/ViewHelpers/Widget/Paginate/Index.html

Important

list.paginate.templatePath needs to be added to the setting overrideFlexformSettingsIfEmpty!

Default

     list.paginate {
itemsPerPage = 10
insertAbove = 1
insertBelow = 1
templatePath =
prevNextHeaderTags = 1
maximumNumberOfLinks = 3
     }
list.rss

Property

list.rss

Data type

array

Description

Additional settings for the RSS view

See the RSS configuration

Default

     rss {
channel {
     title = {$plugin.tx_news.rss.channel.title}
     description = {$plugin.tx_news.rss.channel.description}
     language = {$plugin.tx_news.rss.channel.language}
     copyright = {$plugin.tx_news.rss.channel.copyright}
     generator = {$plugin.tx_news.rss.channel.generator}
     link = {$plugin.tx_news.rss.channel.link}
}
     }
search.fields

Property

search.fields

Data type

string

Description

Comma separated list of fields which are used for the search.

Hint

You can also search in relations, e.g. the category title by using categories.title

Default

teaser,title,bodytext

search.splitSearchWord

Property

search.splitSearchWord

Data type

boolean

Description

If set to 1, the search subject will be splitted by spaces and it will not only find the phrase but also if the search terms are scattered in a field.

As an example: Searching for hello world will give you as result also the news item with the title hello the world. The search terms must be found in the same field, which means that a news item with the world hello in the title and the word world in the bodytext won’t be found.

If you need a better search experience, think about using something like EXT:solr!

Default

0

TsConfig

This section covers all configurations which can be set with TsConfig. Every configuration starts with tx_news..

Note

Just for clarification: TsConfig is in TYPO3 only used for configurations inside the backend!

General configuration

The general configuration covers options available during the creation and editing of news records.

Properties
templateLayouts

The selectbox “Template Layout” inside a plugin can be easily be extended by using TsConfig

tx_news.templateLayouts {
                1 = Fobar
                2 = Another one
                3 =  --div--,Group 2
                4 = Blub
}

will show 2 layout options with 123/456 as keys and Fobar/Blub as values. Inside the template it is then possible to define conditions with fluid by checking {settings.templateLayout}

By using the configuration allowedColPos it is possible to restrict a template layout to a specific list of colPos values.

tx_news.templateLayouts {
   1 = Fobar
   2 = Another one
   2.allowedColPos = 1,2,3
   3 =  --div--,Group 2
   4 = Blub
   4.allowedColPos = 0,1
}
archive

Use strtotime (see http://www.php.net/strtotime ) to predefine the archive date

# Example:
tx_news.predefine.archive = next friday

will set the archive date on the the next friday.

tagPid

Besides the configuration in the Extension Manager it is also possible to define the pid of tags created directly in the news record by Using TsConfig:

# Example:
tx_news.tagPid = 123
categoryRestrictionForFlexForms

After defining the category restriction in the Extension Manager it is also possible to restrict the categories in the news plugin. This needs to enabled by TsConfig:

# Example:
tx_news.categoryRestrictionForFlexForms = 1
showContentElementsInNewsSysFolder

If a sys folder is configured with Contains PLugin: News, content elements are hidden on those pages in the page and list module. If the content elements should be shown, use the PageTsConfig

# Example:
tx_news.showContentElementsInNewsSysFolder = 1
Administration module
Properties
Property Data type
preselect array
columns string
defaultPid integer
redirectToPageOnStart integer
allowedPage integer
alwaysShowFilter bool
filters array
localizationView bool
controlPanels bool
allowedCategoryRootIds string
preselect

Predefine the form in the administration module. The possible fields for the preselection are:

  • recursive
  • timeRestriction
  • topNewsRestriction
  • sortingField
  • sortingDirection
  • categoryConjunction
# Example:
tx_news.module {
        preselect {
                topNewsRestriction = 1
        }
}
columns

Define a list of columns which are displayed in the administration module. Default is teaser,istopnews,datetime,categories. Example:

tx_news.module.columns = datetime,archive,author
defaultPid

If no page is selected in the page tree, any record created in the administration module would be saved on the root page. If this is not desired, the pid can be defined by using defaultPid.<tablename>:

# Example
tx_news.module.defaultPid.tx_news_domain_model_news = 123

News records will be saved on page with ID 123.

localizationView

Ability to disable the localizationView in the administration module. Default is 1. Example:

tx_news.module.localizationView = 0
controlPanels

Ability to control panel to sort, hide and delete in the administration module. Default is 0. Example:

tx_news.module.controlPanels = 1
allowedCategoryRootIds

Reduce the shown categories by defining a list of **root* category IDs.

Example:

# Example category tree (value in brackets is the uid)
[10] Cat 1
[12] Cat 2
    [13] Cat 2 b
[14] Cat 3
[15] Cat 4

tx_news.module.allowedCategoryRootIds = 12,15

# Category tree shown
[12] Cat 2
    [13] Cat 2 b
[15] Cat 4
redirectToPageOnStart

If no page is selected, the user will be redirected to the given page.

# Example:
tx_news.module.redirectToPageOnStart = 456

The user will be redirected to the page with the uid 456.

allowedPage

If defined, the administration module will redirect the user always to the given page, no matter what defined in the page tree.

# Example:
tx_news.module.allowedPage = 123

The user will be redirected to the page with the uid 123.

alwaysShowFilter

If defined, the administration module will always show the filter opened.

# Example:
tx_news.module.alwaysShowFilter = 1

The user will be redirected to the page with the uid 123.

filters

Define whether filters should be available or not. By default, all the filters are enabled. The available filters are:

  • searchWord
  • timeRestriction
  • topNewsRestriction
  • hidden
  • archived
  • sortingField
  • number
  • categories
  • categoryConjunction
  • includeSubCategories
# Example:
tx_news.module {
        filters {
                topNewsRestriction = 0
        }
}

Note

categoryConjunction and includeSubCategories can only be enabled when categories is enabled.

Additional Configuration

This section covers settings which influence the News Plugin

switchableControllerAction

To remove a specific action from the News Plugin selectbox, use this snippet.

# Example:
TCEFORM.tt_content.pi_flexform.news_pi1.sDEF.switchableControllerActions.removeItems = Tag->list

The possible values for the switchableControllerActions are:

  • News->list
  • News->detail
  • News->dateMenu
  • News->searchForm
  • News->searchResult
  • Category->list
  • Tag->list

Extension Manager

Some general settings can be configured in the Extension Manager. If you need to configure those, switch to the module “Extension Manager”, select the extension “news” and press on the configure-icon!

The settings are divided into several tabs and described here in detail:

Properties
Property Tab Default
archiveDate basic date
rteForTeaser records 1
tagPid records 1
prependAtCopy records 1
categoryRestriction records  
categoryBeGroupTceFormsRestriction records  
contentElementRelation records 0
manualSorting records 0
dateTimeNotRequired records fal
mediaPreview records 0
showAdministrationModule backend modules 0
hidePageTreeForAdministrationModule backend modules 0
showImporter import module 0
storageUidImporter import module  
resourceFolderImporter import module /news_import
Property details
archiveDate

Define if the archive date field should be rendered as a date field or including the time as well.

rteForTeaser

If set, the teaser field will be rendered using a RTE.

Note

This is just for non FAL relations!

tagPid

New tags can be saved directly inside the news record. The given ID is used as page on which the tag records will be saved.

If you want to use TsConfig to define the page, set the tagPid to 0 and use the following syntax in TsConfig:

# Save tags on page with UID 123
tx_news.tagPid = 123
prependAtCopy

If set and a news record is copied, the news record will be prepended with the string Copy X.

categoryRestriction

Define an additional constraint for the categories inside a news record. To use this constraint for the news plugins as well, take a look at the TsConfig configuration.

Possible options are:

None

No additional constraint is used.

Page TsConfig

By using TsConfig it is possible to define those pages which contain the available categories:

# Example: Only use categories which are saved in the pages with ID 12 and 34
TCEFORM.tx_news_domain_model_news.categories.PAGE_TSCONFIG_IDLIST = 12,34
Categories from current page

Only those categories are shown in a news record which are located at the same page.

Categories from page which is defined in page properties

Only those categories are shown in a news record which are saved in the page defined in the page properties in the field General Record Storage Page.

Categories from site root

Only those categories are shown which are saved at the root page.

categoryBeGroupTceFormsRestriction

If activated, an editor needs to have permissions to all categories added to a news item to be able to edit this record.

contentElementRelation

If set, you can add content elements as relation to a news record. This makes it easy to enrich the news article with further images, plugins, …

If you want to reduce the available options of the content elements, you can use TsConfig in the sysfolder of the news records:

# Hide content element types
TCEFORM.tt_content.CType.removeItems = header,bullets,table,uploads,menu,list,html,login,mailform,search,shortcut,div
# Hide fields
TCEFORM.tt_content.header.disabled = 1
TCEFORM.tt_content.header_layout.disabled = 1

More information can be found at http://docs.typo3.org/typo3cms/TSconfigReference/PageTsconfig/TCEform/Index.html.

manualSorting

If set, news records can be manually sorted in the list view by the well known icons “up” and “down”.

dateTimeNotRequired

If set, the date field of the news record is not a required field anymore. Furthermore if creating a new record, it is not filled anymore with the current date.

Be aware that using this feature may lead to unexpected results if using e.g. the date menu if the field is not used anymore.

mediaPreview

If enabled, the list module will show thumbnails of the media items.

showAdministrationModule

If set, the backend module “News” is shown.This view might be easier for editors who use a very limited set of features in the backend.

hidePageTreeForAdministrationModule

If set, the backend module “News” is shown without the page tree. In combination with the TsConfig redirectToPageOnStart you can achieve a very simple workflow for editors if those need only to create news records.

showImporter

If set, the backend module “News import” is shown. This is used to import news articles from sources like t3blog, tt_news or custom providers.

storageUidImporter

Define the uid of the storage which is used for importing media elements into FAL relations.

resourceFolderImporter

Define the folder which is used for the media elements which are imported.

Alternative configuration instead of Extension Manager

Instead of defining the property in the Extension Manager (or Install Tool since 9) it is also possible to define the properties in the AdditionalConfiguration.php by setting

$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['news'] = serialize([
        'archiveDate' => 'date',
        'rteForTeaser' => 0,
        'tagPid' => 1,
        'prependAtCopy' => 0,
        'categoryRestriction' => 'none',
        'categoryBeGroupTceFormsRestriction' => 0,
        'contentElementRelation' => 1,
        'manualSorting' => 0,
        'dateTimeNotRequired' => 0,
        'showAdministrationModule' => 1,
        'showImporter' => 0,
        'storageUidImporter' => '1',
        'resourceFolderImporter' => '/news_import',
]),

Templates

This chapter is all about templating EXT:news

Changing & editing templates

EXT:news is using fluid as template engine. If you are used to fluid already, you might skip this section.

This documentation won’t bring you all information about fluid but only the most important things you need for using it. You can get more information in books like the one of Jochen Rau und Sebastian Kurfürst or online, e.g. at http://wiki.typo3.org/Fluid or many other sites.

Changing paths of the template

You should never edit the original templates of an extension as those changes will vanish if you upgrade the extension. As any extbase based extension, you can find the templates in the directory Resources/Private/.

If you want to change a template, copy the desired files to the directory where you store the templates. This can be a directory in fileadmin or a custom extension. Multiple fallbacks can be defined which makes it far easier to customize the templates.

plugin.tx_news {
        view {
                templateRootPaths >
                templateRootPaths {
                        0 = EXT:news/Resources/Private/Templates/
                        1 = fileadmin/templates/ext/news/Templates/
                }
                partialRootPaths >
                partialRootPaths {
                        0 = EXT:news/Resources/Private/Partials/
                        1 = fileadmin/templates/ext/news/Partials/
                }
                layoutRootPaths >
                layoutRootPaths {
                        0 = EXT:news/Resources/Private/Layouts/
                        1 = fileadmin/templates/ext/news/Layouts/
                }
        }
}
Change the templates using TypoScript constants

You can use the following TypoScript in the constants to change the paths

plugin.tx_news {
        view {
                templateRootPath = fileadmin/templates/ext/news/Templates/
                partialRootPath = fileadmin/templates/ext/news/Partials/
                layoutRootPath = fileadmin/templates/ext/news/Layouts/
        }
}
Change path of the pagination widget

The path of the pagination widget can be changed by using a configuration like below.

plugin.tx_news {
        view {
                widget.GeorgRinger\News\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = {$plugin.tx_news.view.templateRootPath}
        }
}
Layouts, Templates & Partials

If using fluid, the templates are structured by using Layouts, Templates and Partials.

Layouts

Layouts are used to structure the output of a plugin. A simple example is to wrap every output with the same <div> element. Therefore it is not needed to repeat this code and write it only once.

A layout can look this:

<div class="news">
        <f:render section="content" />
</div>

This means that the output of the section content will be rendered inside a div with the class news.

Templates

Every action (like the list view, the detail view, date menu or a category listing) needs its own template which can be found at Templates/<Model>/<ActionName>.html.

If Layouts are used, it is required to define the name of the Layout (which is identical to the file name of the Layout file).

<f:layout name="General" />

<f:section name="content">
        This will be rendered
</f:section>

Note

It is optional to use Layouts. If those are not used, the complete content of the Template is shown.

Partials

Partials are used within templates to be able to reuse code snippets. If you open the template News/List.html you will see the partial:

<f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>

This will embed the output of the partial which is located at Partials/List/Item.html (as stated in the attribute partial ). All arguments which are used in the attribute arguments are available in the partial itself.

You can create your own partials and name them as you like

Sections

Sections are very similar to partials. The difference is that sections are defined in the same file as the template.

ViewHelpers

Ever fluid viewhelper starts with <f: . and you can always check out the code at typo3/sysext/fluid/Classes/ViewHelpers/. As an example the viewhelper <f:link.page can be found at typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php.

Any other viewhelpers from other extensions can be used by using a namespace declaration like

{namespace n=GeorgRinger\News\ViewHelpers}

Then viewHelpers of EXT:news (which can be found in news/Classes/ViewHelpers) can be used with the prefix n: .

Using Twitter Bootstrap templates

Since version 4.1.0 a template variant based on Twitter Bootstrap is available.

To be able to use it, include additionally the entry News Styles Twitter Bootstrap in the section “Include Static (from extensions)” in the template record.

By changing the following constants, you can use those templates as base for your work.

plugin.tx_news {
        view.twb {
                templateRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Templates
                partialRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Partials/
                layoutRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Layouts/
        }
}

Hint

The templates don’t list the deprecated non-fal relations for images.

Template selector

This entry should help you to use different templates for different (list) views.

Using the following Page TsConfig the editor can select the layouts in the news plugin:

tx_news.templateLayouts {
        1 = A custom layout
        99 = LLL:fileadmin/somelocallang/locallang.xlf:someTranslation
}

You can use any number to identify your layout and any label to describe it.

Now it is possible to use a condition in the template to change the layouts, and e.g. load a different partial:

<f:if condition="{news}">
        <f:then>
                <f:if condition="{settings.templateLayout} == 99">
                        <f:then>
                                <div class="news well news-special">
                                        <f:for each="{news}" as="newsItem">
                                                <f:render partial="List/Item-special" arguments="{newsItem: newsItem, settings:settings}"/>
                                        </f:for>
                                </div>
                        </f:then>
                        <f:else>
                                <div class="news news-list-view">
                                        <n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}">
                                                        <f:for each="{paginatedNews}" as="newsItem">
                                                                <f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings}"/>
                                                        </f:for>
                                        </n:widget.paginate>
                                </div>
                        </f:else>
                </f:if>
        </f:then>
        <f:else>
                <div class="no-news-found"><f:translate key="list_nonewsfound" /></div>
        </f:else>
</f:if>

As you can see in this example a different partial is loaded if the layout 99 is used.

Custom Templates by using TypoScript

You can define a custom TypoScript setting which you can check in the view later on.

The TypoScript could look like:

plugin.tx_news {
        settings {
                isLatest = 1
        }
}

And then you can use a condition like this:

<f:if condition="{settings.isLatest}">
        <f:then>
                do something if it is set
        </f:then>
        <f:else>
                do something if it is not set
        </f:else>
</f:if>

AJAX based pagination

To improve the usability it is possible to change the pagination to use AJAX instead of full page reloads.

Requirements

  • Installation of the extension typoscript_rendering. Thanks to Helmut Hummel (https://helhum.io/)!
  • The list plugin must be inserted as content element and not by TypoScript.
  • The changes written below
Required template changes

The template must be adopted. You can take either the example provided by the extension itself or adopt your template.

Pagination template

Adopt the template of the pagination widget:

plugin.tx_news.settings.list {
    paginate.templatePath = typo3conf/ext/news/Resources/Private/Templates/Styles/Twb/Templates/ViewHelpers/Widget/Paginate/IndexAjax.html
}

Basically, every link of the pagination is enhanced by 2 data attributes which contain the uid of the plugin and the ajax link which is generated by the extension typoscript_rendering.

List template

The default templates of the extension are already prepared. If you have modified the templates already, check the following 2 changes in List.html:

<!-- before -->
<div class="news-list-view">
    ...
</div>

<!-- after -->
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
    ...
</div>
<!-- before -->
<n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit}">
    ....
</n:widget.paginate>

<!-- after -->
<n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit,recordId:contentObjectData.uid}">
    ....
</n:widget.paginate>
Changes with JavaScript

The extension provides a simple example as well which can be used directly or can be included in the custom frontend workflow.

After loading jQuery (which is not required by the extension), you need to include the following file: typo3conf/ext/news/Resources/Public/JavaScript/AjaxPagination.js. This can be either done by using

page.includeJS {
    # This is just an example
    # file1 = fileadmin/jquery.js
    file2 = typo3conf/ext/news/Resources/Public/JavaScript/AjaxPagination.js
}

or by copying its content to wherever you need it.

ViewHelpers of EXT:news

ViewHelpers are used to add logic inside the view. There basic things like if/else conditions, loops and so on. The system extension fluid has the most important ViewHelpers already included.

To be able to use a ViewHelper in your template, you need to follow always the same structure which is:

<f:fo>bar</f:fo>

This would call the ViewHelper fo of the namespace f which stands for fluid. If you want to use ViewHelpers from other extensions you need to add the namespace declaration at the beginning of the template. The namespace declaration for the news extension is:

{namespace n=GeorgRinger\News\ViewHelpers}

Now you can use a ViewHelper of news with a code like:

<n:headerData><!-- some comment --></n:headerData>

If you want to know what a ViewHelper does, it is very easy to find the related PHP class by looking at the namespace and the name of the ViewHelper. Having e.g. GeorgRinger\News\ViewHelpers and headerData you will find the class at news\\Classes\ViewHelpers\\HeaderDataViewHelper.php.

The most of awesome thing is that you can use ViewHelpers of any extension in any other template by just adding another namespace declaration like:

{namespace something=Tx_AnotherExtension_ViewHelpers}

and call the ViewHelper like

<something:NameOfTheViewHelper />
All ViewHelpers
ExcludeDisplayedNewsViewHelper

ViewHelper to exclude news items in other plugins

Type: Basic

General properties
Name: Type: Description: Default value:
* newsItem Tx_News_Domain_Model_News current news item  
Examples
Basic example

Code:

<n:excludeDisplayedNews newsItem="{newsItem}" />

Output:

None
HeaderDataViewHelper

ViewHelper to render data in <head> section of website

Type: Basic

Examples
Basic example

Code:

<n:headerData>
               <link rel="alternate"
                       type="application/rss+xml"
                       title="RSS 2.0"
                       href="<f:uri.page additionalParams="{type:9818}"/>" />
</n:headerData>

Output:

Added to the header: <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="uri to this page and type 9818" />
IncludeFileViewHelper

ViewHelper to include a css/js file

Type: Basic

General properties
Name: Type: Description: Default value:
compress boolean Define if file should be compressed  
* path string Path to the CSS/JS file which should be included  
Examples
Basic example

Code:

<n:includeFile path="{settings.cssFile}" />

Output:

This will include the file provided by {settings} in the header
LinkViewHelper

ViewHelper to render links from news records to detail view or page

Type: Tag Based

General properties
Name: Type: Description: Default value:
accesskey string Keyboard shortcut to access this element  
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
class string CSS class(es) for this element  
configuration array optional typolink configuration Array
dir string Text direction for this HTML element. Allowed strings: “ltr” (left to right), “rtl” (right to left)  
id string Unique (in this file) identifier for this HTML element.  
lang string Language for this element. Use short names specified in RFC 1766  
* newsItem Tx_News_Domain_Model_News current news object  
onclick string JavaScript evaluated for the onclick event  
settings array   Array
style string Individual CSS styles for this element  
tabindex integer Specifies the tab order of this element  
title string Tooltip text of element  
uriOnly boolean return only the url without the a-tag  
Examples
Set an additional attribute

Available: class, dir, id, lang, style, title, accesskey, tabindex, onclick

Code:

<n:link newsItem="{newsItem}" settings="{settings}" class="a-link-class">fo</n:link>

Output:

<a href="link" class="a-link-class">fo</n:link>
Add additional parameters to the url

Code:

<n:link newsItem="{newsItem}" settings="{settings}" configuration="{additionalParams:'&tx_news_pi1[category]=111'}">fo</n:link>

Output:

<a href="link&tx_news_pi1[category]=111">fo</n:link>
MediaFactoryViewHelper

ViewHelper to show videos

Type: Basic

General properties
Name: Type: Description: Default value:
* classes string list of classes which are used to render the media object  
* element Tx_News_Domain_Model_Media Current media object  
* height integer height  
* width integer width  
MetaTagViewHelper

ViewHelper to render meta tags

Type: Tag Based

General properties
Name: Type: Description: Default value:
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
content string Content of meta tag  
forceAbsoluteUrl boolean If set, absolute url is forced  
property string Property of meta tag  
useCurrentDomain boolean If set, current domain is used  
name string If set, the meta tag is built by using the attribute name=”” instead of property  
Examples
Basic Example: News title as og:title meta tag

Code:

<n:metaTag property="og:title" content="{newsItem.title}" />

Output:

<meta property="og:title" content="TYPO3 is awesome" />
Force the attribute “name”

Code:

<n:metaTag name="keywords" content="{newsItem.keywords}" />

Output:

<meta name="keywords" content="news 1, news 2" />
PaginateBodytextViewHelper

Paginate the bodytext which is very useful for longer texts or to increase

Type: Basic

General properties
Name: Type: Description: Default value:
* as string name of property which holds the text  
* currentPage integer Selected page  
* object Tx_News_Domain_Model_News current news object  
token string Token used to split the text ###more###
TargetLinkViewHelper

ViewHelper to get the target out of the typolink

Type: Basic

General properties
Name: Type: Description: Default value:
* link string    
Examples
Basic Example

{relatedLink.uri} is defined as “123 _blank”

Code:

<f:link.page pageUid="{relatedLink.uri}" target="{n:targetLink(link:relatedLink.uri)}">Link</Link>

Output:

A link to the page with uid 123 and target set to "_blank"
TitleTagViewHelper

ViewHelper to render the page title

Type: Basic

Examples
Basic Example

Render the content of the VH as page title

Code:

<n:titleTag>{newsItem.title}</n:titleTag>

Output:

<title>TYPO3 is awesome</title>
Format / NothingViewHelper

ViewHelper to render children which don’t print out any actual content

Type: Basic

Examples
Basic example

Code:

 <n:format.nothing>
<n:titleTag>{newsItem.title}</n:titleTag>
Fobar
 </n:format.nothing>

Output:

nothing
Social / DisqusViewHelper

ViewHelper to add disqus thread

Type: Basic

General properties
Name: Type: Description: Default value:
* link string link  
* newsItem Tx_News_Domain_Model_News news item  
* shortName string shortname  
Social / GooglePlusViewHelper

ViewHelper to add a google+ button

Type: Tag Based

General properties
Name: Type: Description: Default value:
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
callback string Callback function  
count string Set it to false to hide counter  
href string URL to be +1, default is current URL  
jsCode string Alternative JavaScript code which is used  
size string Size of the icon. Can be small,medium,tall.  
Social / GravatarViewHelper

Hashes an email-address and fetches the image from gravatar

Type: Tag Based

General properties
Name: Type: Description: Default value:
accesskey string Keyboard shortcut to access this element  
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
alt string alt-text  
class string CSS class(es) for this element  
dir string Text direction for this HTML element. Allowed strings: “ltr” (left to right), “rtl” (right to left)  
email string e-mail address of the user  
id string Unique (in this file) identifier for this HTML element.  
lang string Language for this element. Use short names specified in RFC 1766  
onclick string JavaScript evaluated for the onclick event  
size integer size since the images are square  
style string Individual CSS styles for this element  
tabindex integer Specifies the tab order of this element  
title string Tooltip text of element  
Social / TwitterViewHelper

ViewHelper to add a twitter button

Type: Tag Based

General properties
Name: Type: Description: Default value:
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
class string Class of link  
datacount string Button style. Can be “horizontal”, “vertical” or “none”  
datalang string Language of the twitter button. Can either be fr, it, de, es, ko or ja  
datarelated string Related twitter account.  
datatext string Text included in tweet when shared. Default is title of the page  
dataurl string Suggest a4 default Tweet for users. Default is current page title.  
datavia string Preferred twitter account.  
javaScript string JS URL. If not set, default is used, if set to -1 no Js is loaded  
Social / Facebook / CommentViewHelper

ViewHelper to comment content

Type: Tag Based

General properties
Name: Type: Description: Default value:
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
* appId string    
numposts integer the number of comments to display, or 0 to hide all comments  
publishFeed boolean Whether the publish feed story checkbox is checked., default = TRUE  
width integer The width of the plugin in px, default = 425  
* xid string An id associated with the comments object, Default: URL-encoded page URL  
Social / Facebook / LikeViewHelper

ViewHelper to add a like button

Type: Tag Based

General properties
Name: Type: Description: Default value:
additionalAttributes array Additional tag attributes. They will be added directly to the resulting HTML tag.  
font string Font, options are: arial,lucidia grande,segoe ui,tahoma,trebuchet ms,verdana  
href string Given url, if empty, current url is used  
javaScript string JS URL. If not set, default is used, if set to -1 no Js is loaded  
layout string Either: standard, button_count or box_count  
width integer With of widget, default 450  
Social / Facebook / ShareViewHelper

ViewHelper to share content

Type: Tag Based

General properties
Name: Type: Description: Default value:
loadJs boolean   1
type string default: button_count  
Widget / PaginateViewHelper

This ViewHelper renders a Pagination of objects.

Type: Widget

General properties
Name Type Description Default value
* as string    
configuration mixed   Array
* objects TYPO3\CMS\Extbase\Persistence\QueryResultInterface    

Simple snippets

This section contains snippets making EXT:news more awesome which might be useful for your projects as well.

Render category rootline

If you want to show not only the title of a single category which is related to the news item but the complete category rootline use this snippets.

<f:if condition="{category:newsItem.firstCategory}">
        <ul class="category-breadcrumb">
                <f:render section="categoryBreadcrumb" arguments="{category:newsItem.firstCategory}" />
        </ul>
</f:if>

and

<f:section name="categoryBreadcrumb">
        <f:if condition="{category}">
                <f:if condition="{category.parentCategory}">
                        <f:render section="categoryBreadcrumb" arguments="{category:category.parentCategory}" />
                </f:if>
                <li>{category.title}</li>
        </f:if>
</f:section>
Use current content element in the template

If you ever need information from the content element itself, you can use {contentObjectData.header}.

Use current page in the template

If you ever need information from the current page, you can use {pageData.uid}.

Sort tags

If you want to sort the tags of a news item, you can use a custom ViewHelper or EXT:vhs:

<ul>
        <f:for each="{newsItem.tags->v:iterator.sort(order: 'ASC', sortBy: 'title')}" as="tag">
                <li>{tag.title}</li>
        </f:for>
</ul>

Migration

EXT:news provides a powerful import module which can be used to add news and category records from various sources.

Migration from tt_news to news

This tutorial will help you to migrate data from tt_news to news.

Requirements
  • Installed extension news
  • Installed extension news_ttnewsimport

Hint

If you experience any troubles during imports, test the latest versions of the 2 extensions which can be found at https://git.typo3.org/TYPO3CMS/Extensions/news.git and https://github.com/fsaris/news_ttnewsimport.

Migration
Migration of records

To be able to migrate records, you need to activate the import module. This needs to be done in the configuration of EXT:news inside the Extension Manager.

  1. Activate the checkbox “Show importer”, save and reload the backend. Now you should see the backend module “News Import”.
  2. Switch to the backend module.
  3. Select “Import tt_news category records” from the select box and start the import of categories.
  4. Select “Import tt_news news records” from the select box and start the import of news records.
Migration of plugins

The plugins of tt_news can be migrated to plugins of EXT:news as well. This is done by using the CLI:

./typo3/cli_dispatch.phpsh extbase ttnewspluginmigrate:run
./typo3/cli_dispatch.phpsh extbase ttnewspluginmigrate:removeOldPlugins

Read more about the migration and its limitation in the documentation of news_ttnewsimport at https://github.com/fsaris/news_ttnewsimport.

Migration of unique aliases

If a lot of similar titles are used it might be a good a idea to migrate the unique aliases to be sure that the same alias is used.

# temporary table
CREATE TABLE tx_realurl_uniqalias_migration LIKE tx_realurl_uniqalias;
# copy
INSERT INTO tx_realurl_uniqalias_migration SELECT * FROM tx_realurl_uniqalias WHERE tablename='tt_news';
# fix it
UPDATE tx_realurl_uniqalias_migration SET value_id = (SELECT tx_news_domain_model_news.uid FROM `tx_news_domain_model_news` WHERE tx_news_domain_model_news.import_id=tx_realurl_uniqalias_migration.value_id),tablename='tx_news_domain_model_news' WHERE tablename='tt_news';
# remove wrong alias (news which have not been imported)
DELETE FROM tx_realurl_uniqalias_migration WHERE tablename='tx_news_domain_model_news' AND value_id=0;
# insert alias back into realurl table
INSERT INTO tx_realurl_uniqalias (tstamp,tablename,field_id,value_alias,value_id,lang,expire) SELECT tstamp,tablename,field_id,value_alias,value_id,lang,expire FROM tx_realurl_uniqalias_migration
Not migrated

Be aware that some things are not migrated:

  • Templates
  • TypoScript configuration
  • Backenduser & -group configuration
  • Additional fields added to tt_news by 3rd party extensions

Best practice

This chapter describes some best practice concepts

“Save & Preview” for news records

It is possible to activate the action “Save & Preview” for news records by using some lines of page TsConfig.

TCEMAIN.preview {
        tx_news_domain_model_news {
                # Available with latest 8.7+ only
                # see https://forge.typo3.org/issues/78336
                useCacheHash = 1
                previewPageId = 123
                useDefaultLanguageRecord = 0
                fieldToParameterMap {
                        uid = tx_news_pi1[news_preview]
                }
                additionalGetParameters {
                        tx_news_pi1.controller = News
                        tx_news_pi1.action = detail
                }
        }
}

By using the given example, a link will be generated which leads to the page with the id 123. If a news plugin is placed on this page, the news article will be shown.

Hint

This feature is part of TYPO3 CMS 7 LTS and can be used for any record of any extension.

Hint

If the setting [FE][disableNoCacheParameter] is enabled, this won’t work as the cHash is not set in the URL.

Hint

Watch out for the Breaking Change “#78002 - Enforce cHash argument for Extbase actions” (https://docs.typo3.org/typo3cms/extensions/core/8.7/Changelog/8.5/Breaking-78002-EnforceCHashArgumentForExtbaseActions.html) if you’re using TYPO3 >=8.5. You need to set plugin.tx_news.features.requireCHashArgumentForActionArguments  = 0 if you want to use this feature. Otherwise you’ll receive a “cHash empty” validation error and most likely see a 404, if you have [FE] [pageNotFoundOnCHashError] enabled.

Integrations with TypoScript

This page gives you same examples which you can use for integrating EXT:news into a website.

Add news by TypoScript

If EXT:news should be integrated by using TypoScript only, you can use this code snippet:

lib.news = USER
lib.news {
  userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
  extensionName = News
  pluginName = Pi1
  vendorName = GeorgRinger

  switchableControllerActions {
        News {
          1 = list
        }
  }

  settings < plugin.tx_news.settings
  settings {
        //categories = 49
        limit = 30
        detailPid = 31
        overrideFlexformSettingsIfEmpty := addToList(detailPid)
        startingpoint = 13
  }
}

Now you can use the object lib.news.

List and detail on the same page using TypoScript

This is the example of how to display list and detail view on the same page.

# Basic plugin settings
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
}

Configure list and detail actions:

lib.news_list < lib.news
lib.news_list {
                action = list
                switchableControllerActions.News.1 = list
}
lib.news_detail < lib.news
lib.news_detail {
                action = detail
                switchableControllerActions.News.1 = detail
}

Insert configured objects to wherever you want to use them, depending on the GET parameter of detail view:

[globalVar = GP:tx_news_pi1|news > 0]
        page.10.marks.content < lib.news_detail
[else]
        page.10.marks.content < lib.news_list
[end]
Add news to breadcrumb menu

If you want to show the news title in the breadcrumb menu if the single view is currently selected, use a TypoScript like this:

lib.navigation_breadcrumb = COA
lib.navigation_breadcrumb {
    stdWrap.wrap = <ul class="breadcrumb">|</ul>

    10 = HMENU
    10 {
        special = rootline
        #special.range =  1

        1 = TMENU
        1 {
            noBlur = 1

            NO = 1
            NO {
                wrapItemAndSub = <li>|</li>
                ATagTitle.field = subtitle // title
                stdWrap.htmlSpecialChars = 1
            }

            CUR <.NO
            CUR {
                wrapItemAndSub = <li class="active">|</li>
                doNotLinkIt = 1
            }
        }
    }

    # Add news title if on single view
    20 = RECORDS
    20 {
        stdWrap.if.isTrue.data = GP:tx_news_pi1|news
        dontCheckPid = 1
        tables = tx_news_domain_model_news
        source.data = GP:tx_news_pi1|news
        source.intval = 1
        conf.tx_news_domain_model_news = TEXT
        conf.tx_news_domain_model_news {
            field = title
            htmlSpecialChars = 1
        }
                    stdWrap.wrap = <li>|</li>
                    stdWrap.required = 1
    }
}

The relevant part starts with 20 = RECORDS as this cObject renders the title of the news article. Important: Never forget the source.intval = 1 to avoid SQL injections and the htmlSpecialChars = 1 to avoid Cross-Site Scripting!

Add HTML to the header part in the detail view.

There might be a use case where you need to add specific code to the header part when the detail view is rendered. There are some possible ways to go.

Plain TypoScript

You could use a code like the following one to render e.g. the title of a news article inside a title-tag.

[globalVar = TSFE:id = NEWS-DETAIL-PAGE-ID]

config.noPageTitle = 2

temp.newsTitle = RECORDS
temp.newsTitle {
  dontCheckPid = 1
        tables = tx_news_domain_model_news
        source.data = GP:tx_news_pi1|news
        source.intval = 1
        conf.tx_news_domain_model_news = TEXT
        conf.tx_news_domain_model_news {
            field = title
            htmlSpecialChars = 1
        }
        wrap = <title>|</title>
}
page.headerData.1 >
page.headerData.1 < temp.newsTitle

[global]

If you want to show the categories of a news record, you can use the following code:

lib.categoryTitle = CONTENT
lib.categoryTitle {
    if.isTrue.data = GP:tx_news_pi1|news
    table = tx_news_domain_model_news
    select {
        uidInList.data = GP:tx_news_pi1|news
        pidInList = 123
        join = sys_category_record_mm ON tx_news_domain_model_news.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category.uid = sys_category_record_mm.uid_local
        orderBy = sys_category.sorting
        max = 1
    }
    renderObj = TEXT
    renderObj {
        field = title
        htmlSpecialChars = 1
    }
}
Usage of a ViewHelper

Use a viewHelper of EXT:news to write any code into the header part. The code could look like this

<n:headerData><script>var newsId = {newsItem.uid};</n:headerData>

If you want to set the title tag, you can use a specific viewHelper:

<n:titleTag>{newsItem.title}</n:titleTag>
Fallback in Detail view if no news found

If the detail view is called without a news uid given, an error is thrown (depending on the setting settings.errorHandling). If the desired behaviour is to show a different news record this can be set in the plugin with the field “singleNews”.

The drawback would be that the alternative news record would be always the same. If this should be kind of dynamic, take a look at the given TypoScript snippet:

plugin.tx_news.settings {
        overrideFlexformSettingsIfEmpty = singleNews,cropMaxCharacters,dateField,timeRestriction,orderBy,orderDirection,backPid,listPid,startingpoint
        useStdWrap = singleNews

        singleNews.stdWrap.cObject = CONTENT
        singleNews.stdWrap.cObject {
                table = tx_news_domain_model_news
                select {
                        max = 1
                        orderBy = datetime desc
                        pidInList = 3
                }
                renderObj = TEXT
                renderObj.field = uid
        }
}

By using the field useStdWrap it is possible to call the full range of stdWrap on any setting. In this case the first news record from the page with uid 3 is used as fallback.

Show news items with same category in Detail.html

If you want to show in the detail action articles with the same category as the current one, you can use a snippet like this one:

Add this to the Detail.html which will pass the first category uid to the TypoScript object lib.tx_news.relatedByFirstCategory.

<f:if condition="{newsItem.firstCategory}">
        <f:cObject typoscriptObjectPath="lib.tx_news.relatedByFirstCategory">{newsItem.firstCategory.uid}</f:cObject>
</f:if>
lib.tx_news.relatedByFirstCategory = USER
lib.tx_news.relatedByFirstCategory {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    extensionName = News
    pluginName = Pi1
    vendorName = GeorgRinger

    switchableControllerActions {
        News {
            1 = list
        }
    }

    settings < plugin.tx_news.settings
    settings {
        relatedView = 1
        detailPid = 31
        useStdWrap := addToList(categories)
        categories.current = 1
        categoryConjunction = or
        overrideFlexformSettingsIfEmpty := addToList(detailPid)
        startingpoint = 78
    }
}

Important is the line categories.current = 1 which will set the category configuration. Of course you need to adopt the snippet to your own needs, like setting the detailPid, startingPoint, …

By defining a custom property like relatedView = 1 you can differ in the List.html if it is called by this snippet or by a regular plugin.

Show Category Menu with Typoscript
lib.categoryMenu = USER
lib.categoryMenu {
        userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
        extensionName = News
        pluginName = Pi1
        vendorName = GeorgRinger

        action = category
        switchableControllerActions {
                Category {
                        1 = list
                }
        }

        settings < plugin.tx_news.settings
        settings {
                listPid = 11
        }
}

Clearing the cache after editing records

News has a built-in mechanism that takes care of clearing the cache after manipulation of News records.

When a list or detail view is rendered on a page, a cache tag in format tx_news_pid_PID (where PID is the uid of the news storage folder) is added. Each time a news record is edited, deleted or created, this cache entry is flushed. No additional cache configuration is needed if only the News plugins are used.

If you use other ways of displaying news records (e.g. an RSS feed created by TypoScript on a page without a News plugin), the cache is not flushed automatically.

This can be done automatically by using this command in the PageTsConfig:

TCEMAIN.clearCacheCmd = 123,456,789

The code needs to be added to the sys folder where the news records are edited. Change the example page ids to the ones which should be cleared, e.g. a page with an RSS feed. You can use:

TCEMAIN.clearCacheCmd = pages

to clear the complete caches as well

TCEMAIN.clearCacheCmd = cacheTag:tx_news

to clear all caches of pages on which the news plugins are used but beware of performance issues when news records are edited often.

Hint

The mentioned TCEMAIN settings are part of the TYPO3 core and can be used therefore not only for the news extension.

RealURL configuration

This section will show you how you can rewrite the urls using the extension RealURL.

Basic setup

The most simple example is the following one. You can just add the section with copy&paste to the postVarSets/_DEFAULT section:

    // EXT:news start
'a' => [
    [
        'GETvar' => 'tx_news_pi1[action]',
    ],
    [
        'GETvar' => 'tx_news_pi1[controller]',
    ],
    [
        'GETvar' => 'tx_news_pi1[news]',
        'lookUpTable' => [
            'table' => 'tx_news_domain_model_news',
            'id_field' => 'uid',
            'alias_field' => 'IF(path_segment!="",path_segment,title)',
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'languageGetVar' => 'L',
            'languageExceptionUids' => '',
            'languageField' => 'sys_language_uid',
            'transOrigPointerField' => 'l10n_parent',
            'expireDays' => 180,
            'enable404forInvalidAlias' => true
        ]
    ]
],
    // EXT:news end
Advanced example

This example is advanced and works best with one single view page. It hides the controller and action name by using fixedPostVars. Here is a full RealURL configuration with the explanation below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 <?php

 $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'] .= ',tx_realurl_pathsegment';

 // Adjust to your needs
 $domain = 'www.example.com';
 $rootPageUid = 123;
 $rssFeedPageType = 9818; // pageType of your RSS feed page

 $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'][$domain] = [
     'pagePath' => [
         'type' => 'user',
         'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
         'spaceCharacter' => '-',
         'languageGetVar' => 'L',
         'expireDays' => '3',
         'rootpage_id' => $rootPageUid,
         'firstHitPathCache' => 1
     ],
     'init' => [
         'enableCHashCache' => true,
         'respectSimulateStaticURLs' => 0,
         'appendMissingSlash' => 'ifNotFile,redirect',
         'adminJumpToBackend' => true,
         'enableUrlDecodeCache' => true,
         'enableUrlEncodeCache' => true,
         'emptyUrlReturnValue' => '/',
     ],
     'fileName' => [
         'defaultToHTMLsuffixOnPrev' => 0,
         'acceptHTMLsuffix' => 1,
         'index' => [
             'feed.rss' => [
                 'keyValues' => [
                     'type' => $rssFeedPageType,
                 ]
             ]
         ]
     ],
     'preVars' => [
         [
             'GETvar' => 'L',
             'valueMap' => [
                 'en' => '1',
             ],
             'noMatch' => 'bypass',
         ],
     ],
     'fixedPostVars' => [
         'newsDetailConfiguration' => [
             [
                 'GETvar' => 'tx_news_pi1[action]',
                 'valueMap' => [
                     '' => 'detail',
                 ],
                 'noMatch' => 'bypass'
             ],
             [
                 'GETvar' => 'tx_news_pi1[controller]',
                 'valueMap' => [
                     '' => 'detail',
                 ],
                 'noMatch' => 'bypass'
             ],
             [
                 'GETvar' => 'tx_news_pi1[news]',
                 'lookUpTable' => [
                     'table' => 'tx_news_domain_model_news',
                     'id_field' => 'uid',
                     'alias_field' => 'IF(path_segment!="",path_segment,title)',
                     'addWhereClause' => ' AND NOT deleted',
                     'useUniqueCache' => 1,
                     'languageGetVar' => 'L',
                     'languageExceptionUids' => '',
                     'languageField' => 'sys_language_uid',
                     'transOrigPointerField' => 'l10n_parent',
                     'expireDays' => 180,
                     'enable404forInvalidAlias' => true
                 ]
             ]
         ],
         'newsCategoryConfiguration' => [
             [
                 'GETvar' => 'tx_news_pi1[overwriteDemand][categories]',
                 'lookUpTable' => [
                     'table' => 'sys_category',
                     'id_field' => 'uid',
                     'alias_field' => 'title',
                     'addWhereClause' => ' AND NOT deleted',
                     'useUniqueCache' => 1,
                     'enable404forInvalidAlias' => true
                 ]
             ]
         ],
         'newsTagConfiguration' => [
             [
                 'GETvar' => 'tx_news_pi1[overwriteDemand][tags]',
                 'lookUpTable' => [
                     'table' => 'tx_news_domain_model_tag',
                     'id_field' => 'uid',
                     'alias_field' => 'title',
                     'addWhereClause' => ' AND NOT deleted',
                     'useUniqueCache' => 1,
                     'enable404forInvalidAlias' => true
                 ]
             ]
         ],
         '70' => 'newsDetailConfiguration',
         '701' => 'newsDetailConfiguration', // For additional detail pages, add their uid as well
         '71' => 'newsTagConfiguration',
         '72' => 'newsCategoryConfiguration',
     ],
     'postVarSets' => [
         '_DEFAULT' => [
             'controller' => [
                 [
                     'GETvar' => 'tx_news_pi1[action]',
                     'noMatch' => 'bypass'
                 ],
                 [
                     'GETvar' => 'tx_news_pi1[controller]',
                     'noMatch' => 'bypass'
                 ]
             ],

             'dateFilter' => [
                 [
                     'GETvar' => 'tx_news_pi1[overwriteDemand][year]',
                 ],
                 [
                     'GETvar' => 'tx_news_pi1[overwriteDemand][month]',
                 ],
             ],
             'page' => [
                 [
                     'GETvar' => 'tx_news_pi1[@widget_0][currentPage]',
                 ],
             ],
         ],
     ],

 ];

Explanation

The configuration of newsDetailConfiguration is used for the single view. Its name is not that important but the same name has to be used in line 108 where the uid of the single view page is set. In this example it is 70. Of course you need to set the uid of your single view page.

The same happens for a single view of categories and tags by using newsCategoryConfiguration and newsTagConfiguration.

Because of using fixedPostVars, the arguments can be removed in the postVarSets section.

Removing controller and action arguments from URL

If you got a separate page to display the single view it is possible to skip the arguments. This is not necessary if you use the Advanced realUrl configuration from above.

&tx_news_pi1[controller]=News
&tx_news_pi1[action]=detail

If you want that, you need to activate the following setting in your TypoScript:

plugin.tx_news {
        settings {
                link {
                        skipControllerAndAction = 1
                }
        }
}
Removing controller and action arguments from URL (II)

An alternative way to get rid of the arguments controller and action is to add those dynamically by the core if needed. All you need is this TypoScript:

[globalVar = GP:tx_news_pi1|news > 0]
config.defaultGetVars {
        tx_news_pi1 {
                controller=News
                action=detail
        }
}
[global]

This snippet will set &tx_news_pi1[controller]=News&tx_news_pi1[action]=detail if any news uid is provided in the URL.

Human readable dates

If you want to have human readable dates inside the URL which means having URLs like domain.tld/fo/bar/article/31/01/2011/this-is-the-news-title.html you need 3 things.

1st: EXT:news version 1.1.0+ 2nd: Enable the configuration in TypoScript

plugin.tx_news.settings.link {
        hrDate = 1
        hrDate {
                day = j
                month = n
                year = Y
        }
}

You can configure each argument (day/month/year) separately by using the configuration of PHP function date, (see http://www.php.net/date).

3rd: Add following RealURL configuration to 'fixedPostVars' => 'newsDetailConfiguration' section

[
    'GETvar' => 'tx_news_pi1[day]',
    'noMatch' => 'bypass',
],
[
    'GETvar' => 'tx_news_pi1[month]',
    'noMatch' => 'bypass',
],
[
    'GETvar' => 'tx_news_pi1[year]',
    'noMatch' => 'bypass',
],
alias_field Variations

Every news record got a field called Speaking URL path segment which can be used to build the URL of the news record.

The following snippet shows how to use this field:

[
    'GETvar' => 'tx_news_pi1[news]',
    'lookUpTable' => [
        'table' => 'tx_news_domain_model_news',
        'id_field' => 'uid',

        'alias_field' => "CONCAT(uid, '-', IF(path_segment!='',path_segment,title))",
        /** OR ***************/
        'alias_field' => 'IF(path_segment!="",path_segment,title)',
        /** OR ***************/
        'alias_field' => "CONCAT(uid, '-', title)",

        'addWhereClause' => ' AND NOT deleted',
        'useUniqueCache' => 1,
        'languageGetVar' => 'L',
        'languageExceptionUids' => '',
        'languageField' => 'sys_language_uid',
        'transOrigPointerField' => 'l10n_parent',
        'expireDays' => 180,
        'enable404forInvalidAlias' => true
    ]
]

As you can see, it is possible to combine any of the fields of the record.

Add category (or any other additional property) to URL

If you need to add an additional property (like the category title) to the URL, you can do so by adding the property with the typolink configuration additionalParams.

<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}" configuration="{additionalParams:'&tx_news_pi1[category]={newsItem.firstCategory.uid}'}">
        {newsItem.title}
</n:link>

All you now need is to add an additional section in your realurl configuration.

[
    'GETvar' => 'tx_news_pi1[category]',
    'lookUpTable' => [
        'table' => 'sys_category',
        'id_field' => 'uid',
        'alias_field' => 'title',
        'addWhereClause' => ' AND NOT deleted',
        'useUniqueCache' => 1,
        'enable404forInvalidAlias' => true
    ],
],
Auto configuration

If the auto configuration is enabled in EXT:realurl, news provides a configuration for that as well.

In case you want to provide your own configuration (e.g. in your sitepackage extension), you can unset the configuration by using the following code in your ext_localconf.php:

unset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/realurl/class.tx_realurl_autoconfgen.php']['extensionConfiguration']['news']);

Predefine fields of records

This section will show you how you can predefine values of fields in records in the TYPO3 backend.

Default values

Tip

This is a feature of TYPO3 itself, so you can use this also for all other tables and fields.

If you want to use some default values, you can use this code inside the TsConfig:

# Syntax is always TCAdefaults.<tablename>.<fieldname> = value
TCAdefaults {
        tx_news_domain_model_news {
                author =  John Doe
                # Foreign record syntax <tablename>_<uid>
                categories = sys_category_2, sys_category_5
        }
}
Select fields

If you want to preselect a value from a select field, you need to set the value of the option field as value. In this example the language with the uid 3 will be preselected:

TCAdefaults.tx_news_domain_model_news {
        sys_language_uid = 3
}

If you want to remove an option from a select field you can take a look at this example which removes the option “Images” from the media selection dropdown:

TCEFORM.tx_news_domain_model_media {
        type.removeItems = 0
}
Author name & email

By using the following code in the PageTsConig, the fields Author and Author Email are prefilled with the name and email address of the current backend user

tx_news.predefine.author  = 1
Archive date

EXT:news allows you to use an improved syntax to predefine the archive date by using this PagesTsConfig:

tx_news.predefine.archive = <value>

As value you can use anything which can be interpreted by the php function strtotime (http://de2.php.net/manual/en/function.strtotime.php). For example:

  • +1 day
  • next Monday
  • +1 week 2 days 4 hours
Modify flexform values

The flexform values can be modified by using TsConfig.

TCEFORM {
    tt_content {
        pi_flexform {
            news_pi1 {
                sDEF {
                  settings\.orderDirection.disabled = 1
                  settings\.orderBy.addItems {
                    teaser = teaser
                  }
                }
            }
        }
    }
}

Attention

The dot inside the field name must be escaped!

To identify the key of the tab (e.g. sDEF) and the field name (e.g. settings.orderBy) look either in the source code while checking the flexforms or look into the configuration itself which can be found at EXT:news/Configuration/FlexForms/flexform_news.xml.

RSS

Displaying a RSS feed is the same as a normal list view, just with a different template. Therefore you won’t need any different configuration to e.g. excluded categories or configure the single view page.

The template for the RSS feed can be found in the file Resources/Private/Templates/News/List.xml. The “magic” which uses the List.xml template instead of the List.html is the following configuration:

plugin.tx_news.settings.format = xml
# If you want atom, use
plugin.tx_news.settings.format = atom
RSS feed by TypoScript

A very simple way to generate the RSS feed is using plain TypoScript. All you need is to use the given TypoScript and adopt it to your needs.

[globalVar = TSFE:type = 9818]
config {
    disableAllHeaderCode = 1
    xhtml_cleaning = none
    admPanel = 0
    debug = 0
    disablePrefixComment = 1
    metaCharset = utf-8
    additionalHeaders.10.header = Content-Type:application/rss+xml;charset=utf-8
    absRefPrefix = {$plugin.tx_news.rss.channel.link}
    linkVars >
}

pageNewsRSS = PAGE
pageNewsRSS {
    typeNum = 9818
    10 < tt_content.list.20.news_pi1
    10 {
            switchableControllerActions {
                    News {
                            1 = list
                    }
            }
            settings < plugin.tx_news.settings
            settings {
                    categories = 9
                    categoryConjunction = notor
                    limit = 30
                    detailPid = 25
                    startingpoint = 24
                    format = xml
            }
    }
}
[global]

This example will show all news records which don’t have the category with the uid 9 assigned and are saved on the page with uid 24. The single view page is the one with uid 25.

The RSS feed itself can be found with the link /?type=9818.

RSS feeds by using a normal plugin

Sometimes it is more convenient to generate the RSS feed using the normal plugin. The biggest advantage is that the complete configuration can be done within the backend without touching TypoScript.

To create a RSS feed based on a plugin follow this steps:

  1. Create a new page.

  2. Add the news plugin and define the configuration you need. E.g. startingpoint, page with the single view, …

  3. Define a new TypoScript template and use a code like below. Very important : Use config.absRefPrefix = http://www.yourdomain.tld/ to produce absolute urls for links and images!

    page = PAGE
    page.10 < styles.content.get
    
    config {
       # deactivate Standard-Header
       disableAllHeaderCode = 1
       # no xhtml tags
       xhtml_cleaning = none
       admPanel = 0
    
       # define charset
       metaCharset = utf-8
       additionalHeaders.10.header = Content-Type:application/rss+xml;charset=utf-8
       disablePrefixComment = 1
       linkVars >
    }
    
    # set the format
    plugin.tx_news.settings.format = xml
    
    # delete content wrap
    tt_content.stdWrap >
    tt_content.stdWrap.editPanel = 0
    

Warning

If your output still contains HTML code, please check your TypoScript (especially from css_styled_content or fluid_styled_content) as this HTML is produced there!

Automatic RSS feeds - based on plugins

There are usecases where many different list views are needed and each list view should also get its own RSS feed without any additional configuration.

The TypoScript code looks like this.

[globalVar = TSFE:type = 9818]
    lib.stdheader >
    tt_content.stdWrap.innerWrap >
    tt_content.stdWrap.wrap >
    tt_content.stdWrap.editPanel = 0
    # get away <div class="feEditAdvanced-firstWrapper" ...> if your logged into the backend
    styles.content.get.stdWrap >

    pageNewsRSS = PAGE
    pageNewsRSS.typeNum = 9818
    pageNewsRSS.10 < styles.content.get
    pageNewsRSS.10.select.where = colPos=0 AND list_type = "news_pi1"
    pageNewsRSS.10.select {
            orderBy = sorting ASC
            max = 1
    }

    config {
            # deactivate Standard-Header
            disableAllHeaderCode = 1
            # no xhtml tags
            xhtml_cleaning = none
            admPanel = 0
            # define charset
            metaCharset = utf-8
            # you need an english locale to get correct rfc values for <lastBuildDate>, ...
            locale_all = en_EN
        # CMS 8 (adjust if using ATOM)
        additionalHeaders.10.header = Content-Type:application/xml;charset=utf-8
            disablePrefixComment = 1
            baseURL = {$plugin.tx_news.rss.channel.link}
            absRefPrefix = {$plugin.tx_news.rss.channel.link}
            linkVars >
    }

    # set the format
    plugin.tx_news.settings.format = xml
[global]

Some explanations The page object pageNewsRSS will render only those content elements which are in colPos 0 and are a news plugin. Therefore all other content elements won’t be rendered in the RSS feed.

Misc
RSS feed configuration

Don’t forget to configure the RSS feed properly as the sample template won’t fulfill your needs completely. Please look up the constants and change the mentioned settings.

plugin.tx_news.rss.channel {
   title = Dummy Title
   description =
   link = http://example.com
   language = en-gb
   copyright = TYPO3 News
   category =
   generator = TYPO3 EXT:news
}
Troubleshooting
Entity ‘nbsp’ not defined

If you are getting this error, the easiest thing is to replace the character by using TypoScript:

pageNewsRSS.10.stdWrap.replacement {
        10  {
                search = &nbsp;
                replace = &#160;
        }
}

ICalendar

Displaying an iCalendar feed is the same as a normal list view, just with a different template. Therefore you won’t need any different configuration to e.g. excluded categories or configure the single view page.

The template for the iCalendar feed can be found in the file Resources/Private/Templates/News/List.ical. The “magic” which uses the List.ical template instead of the List.html is the following configuration:

plugin.tx_news.settings.format = ical
plugin.tx_news.settings.domain.data = getEnv:HTTP_HOST
plugin.tx_news.settings.useStdWrap = domain
iCalendar feed by TypoScript

A very simple way to generate the iCalendar feed is using plain TypoScript. All you need is to use the given TypoScript and adopt it to your needs.

[globalVar = TSFE:type = 9819]
config {
    disableAllHeaderCode = 1
    xhtml_cleaning = none
    admPanel = 0
    metaCharset = utf-8
    # For 7 LTS
    additionalHeaders = Content-Type:text/calendar;charset=utf-8
    # Since 8 LTS
    additionalHeaders.10.header = Content-Type:text/calendar;charset=utf-8
    disablePrefixComment = 1
    linkVars >
}
pageNewsICalendar = PAGE
pageNewsICalendar {
    typeNum = 9819
    10 < tt_content.list.20.news_pi1
    10 {
            switchableControllerActions {
                    News {
                            1 = list
                    }
            }
            settings < plugin.tx_news.settings
            settings {
                    categories = 9
                    categoryConjunction = notor
                    limit = 30
                    detailPid = 25
                    startingpoint = 24
                    format = ical
                    domain.data = getEnv:HTTP_HOST
                    useStdWrap = domain
            }
    }
}
[global]

This example will show all news records which don’t have the category with the uid 9 assigned and are saved on the page with uid 24.

The iCalendar feed itself can be found with the link /?type=9819.

iCalendar feeds by using a normal plugin

Sometimes it is more convenient to generate the iCalendar feed using the normal plugin. The biggest advantage is that the complete configuration can be done within the backend without touching TypoScript.

To create an ICalendar feed based on a plugin follow this steps:

  1. Create a new page.

  2. Add the news plugin and define the configuration you need. E.g. startingpoint, page with the single view, …

  3. Define a new TypoScript template and use a code like below. Very important : Use config.absRefPrefix = http://www.yourdomain.tld/ to produce absolute urls for links and images!

    page = PAGE
    page.10 < styles.content.get
    
    config {
              # deactivate Standard-Header
             disableAllHeaderCode = 1
             # no xhtml tags
             xhtml_cleaning = none
             admPanel = 0
             metaCharset = utf-8
             # define charset
             additionalHeaders = Content-Type:text/calendar;charset=utf-8
             disablePrefixComment = 1
             linkVars >
    }
    
    # set the format
    plugin.tx_news.settings.format = ical
    # set the domain for real unique uids
    plugin.tx_news.settings.domain.data = getEnv:HTTP_HOST
    plugin.tx_news.settings.useStdWrap = domain
    
    # delete content wrap
    tt_content.stdWrap >
    

Important: If your output still contains HTML code, please check your TypoScript (especially from css_styled_content) as this HTML is produced there!

Automatic iCalendar feeds - based on plugins

There are use cases where many different list views are needed and each list view should also get its own iCalendar feed without any additional configuration.

The TypoScript code looks like this.

[globalVar = TSFE:type = 9819]
    lib.stdheader >
    tt_content.stdWrap.innerWrap >
    tt_content.stdWrap.wrap >
    # get away <div class="feEditAdvanced-firstWrapper" ...> if your logged into the backend
    styles.content.get.stdWrap >

    pageNewsICalendar = PAGE
    pageNewsICalendar.typeNum = 9819
    pageNewsICalendar.10 < styles.content.get
    pageNewsICalendar.10.select.where = colPos=0 AND list_type = "news_pi1"
    pageNewsICalendar.10.select {
            orderBy = sorting ASC
            max = 1
    }

    config {
            # deactivate Standard-Header
            disableAllHeaderCode = 1
            # no xhtml tags
            xhtml_cleaning = none
            admPanel = 0
            metaCharset = utf-8
            # you need an english locale to get correct rfc values for <lastBuildDate>, ...
            locale_all = en_EN
            # define charset
            additionalHeaders = Content-Type:text/calendar;charset=utf-8
            disablePrefixComment = 1
            linkVars >
    }

    # set the format
    plugin.tx_news.settings.format = ical
    # set the domain for real unique uids
    plugin.tx_news.settings.domain.data = getEnv:HTTP_HOST
    plugin.tx_news.settings.useStdWrap = domain

    # delete content wrap
    tt_content.stdWrap >
[global]

Some explanations The page object pageNewsICalendar will render only those content elements which are in colPos 0 and are a news plugin. Therefore all other content elements won’t be rendered in the iCalendar feed.

Misc

Integration of EXT:dd_googlesitemap

Since version 4.2.0 EXT:news supports creating sitemaps using the extension dd_googlesitemap.

Configuration

After installing dd_googlesitemap you can create sitemaps for the news records by calling the URL https://www.yourdomain.tld/index.php?eID=dd_googlesitemap&id=1&sitemap=txnews&singlePid=123&pidList=456&L=0.

The following parameters need to be configured properly:

singlePid

Define the page id which is used to show the news record. The links in the sitemap will point to this page.

pidList

Define the page ids on which the news records are saved.

L

Define the language uid which should be used. Use one call for each language

type

By adding the optional argument &type=news a news sitemap is used instead of a default sitemap type. Check out https://support.google.com/news/publisher/answer/74288?hl=en for details.

Human readable dates

If you need links with human readable dates, you can achieve this with the following TypoScript:

tx_ddgooglesitemap.tx_news {
  hrDate = 1
  hrDate {
    day = j
    month = n
    year = Y
  }
}
Skip controller and action

To skip the controller and action, use the following TypoScript:

tx_ddgooglesitemap.tx_news.skipControllerAndAction = 1
Integration

Use the configured URL and add it to the scheduler task of dd_googlesitemap.

For developers

This chapter describes how to use the extension from a developer point of view.

Extend News

Extend flexforms

Following fields of the plugin configuration can be extended without overriding the complete flexform configuration.

Selectbox “Sort by”

The sorting can be extended by adding the value to

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['orderByNews']

Default values are: tstamp,datetime,crdate,title

Additional Actions

If you need an additional action to select, you can extend it by using:

// Add an additional action: Key is "Controller->action", value is label
$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['switchableControllerActions']['newItems']['News->byFobar'] = 'A fobar action';
Remove fields in additional actions

If you define an additional action, you won’t need all available fields which are available inside the Flexforms. If you want to hide some fields, take a look at the hook inside the class Hooks/BackendUtility.php:

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['Hooks/BackendUtility.php']['updateFlexforms']
Additional Template Selector

If you need a kind of template selector inside a plugin, you can add your own selections by adding those to

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['templateLayouts']['myext'] = array('My Title', 'my value');

You can then access the variable in your template with {settings.templateLayout} and use it for a condition or whatever.

Extend flexforms with custom fields

If you need additional fields in the flexform configuration, this can be done by using a hook in the core.

Register the hook

Add this to the ext_localconf.php of your extension:

// For 7x
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['getFlexFormDSClass'][]
   = \Vendor\ExtKey\Hooks\FlexFormHook::class;
// For 8x
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools::class]['flexParsing'][]
   = \Vendor\ExtKey\Hooks\FlexFormHook::class;

Add the hook

Create the class FlexFormHook in your extension in Classes/Hooks/FlexFormHook.php and add the path to an additional flexform file.

<?php

namespace Vendor\ExtKey\Hooks;

class FlexFormHook
{
   // For 7x
   /**
   * @param array $dataStructArray
   * @param array $conf
   * @param array $row
   * @param string $table
   */
   public function getFlexFormDS_postProcessDS(&$dataStructArray, $conf, $row, $table)
   {
      if ($table === 'tt_content' && $row['CType'] === 'list' && $row['list_type'] === 'news_pi1') {
          $dataStructArray['sheets']['extraEntry'] = 'typo3conf/ext/extKey/Configuration/Example.xml';
      }
   }

   // For 8x
   /**
   * @param array $dataStructure
   * @param array $identifier
   * @return array
   */
   public function parseDataStructureByIdentifierPostProcess(array $dataStructure, array $identifier): array
   {
     if ($identifier['type'] === 'tca' && $identifier['tableName'] === 'tt_content' && $identifier['dataStructureKey'] === 'news_pi1,list') {
         $file = PATH_site . 'typo3conf/ext/extKey/Configuration/Example.xml';
         $content = file_get_contents($file);
         if ($content) {
             $dataStructure['sheets']['extraEntry'] = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($content);
         }
     }
     return $dataStructure;
   }
}

Create the flexform file

Create the flexform file you just referenced in the hook. This can look like that.

<extra>
    <ROOT>
        <TCEforms>
            <sheetTitle>Fo</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
            <settings.postsPerPage>
                <TCEforms>
                    <label>Max. number of posts to display per page</label>
                    <config>
                        <type>input</type>
                        <size>2</size>
                        <eval>int</eval>
                        <default>3</default>
                    </config>
                </TCEforms>
            </settings.postsPerPage>
        </el>
    </ROOT>
</extra>

Signals & Hooks

Several signals and hooks can be used to modify the behaviour of EXT:news.

Signals

Signals are currently only used in the various controllers. Every action emits a signal which can be used to change its output.

Example

As an example, the action detailAction of the Classes/Controller/NewsController is used.

$assignedValues = array(
        'newsItem' => $news,
        'currentPage' => (int)$currentPage,
);

$this->emitActionSignal('NewsController', self::SIGNAL_NEWS_DETAIL_ACTION, $assignedValues);

To fulfill that signal, you can create a slot in your custom extension. All what it needs is an entry in your ext_localconf.php file:

/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher');
$signalSlotDispatcher->connect(
        'GeorgRinger\\News\\Controller\\NewsController',
        'listAction',
        'YourVendor\\yourextkey\\Slots\\NewsControllerSlot', // fully your choice
        'listActionSlot', // fully your choice
        TRUE
);

An example call look like this:

/**
 * @param int $listPid
 * @param string $dateField
 * @param array $data
 * @param QueryResultInterface $news
 * @param array $overwriteDemand
 * @param NewsDemand $demand
 * @param array $extendedVariables
 */
public function dateMenuActionSlot($listPid, $dateField, $data, $news, $overwriteDemand, $demand, $extendedVariables) {
        $data['authors'] = $this->newsAuthorRepository->countByAuthor($demand);
        return [
                'listPid' => $listPid,
                'dateField' => $dateField,
                'data' => $data,
                'news' => $news,
                'overwriteDemand' => $overwriteDemand,
                'demand' => $demand,
                'extendedVariables' => $extendedVariables
        ];
}
Hooks
Domain/Repository/AbstractDemandedRepository.php findDemanded

This hook is very powerful, as it allows to modify the query used to fetch the news records.

Example

This examples modifies the query and adds a constraint that only news records are shown which contain the word yeah.

First, register your implementation in the file ext_localconf.php:

<?php
defined('TYPO3_MODE') or die();

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['Domain/Repository/AbstractDemandedRepository.php']['findDemanded'][$_EXTKEY]
        = 'YourVendor\\Extkey\\Hooks\\Repository->modify';

Now create the file Classes/Hooks/Repository.php:

<?php

namespace YourVendor\Extkey\Hooks;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use \GeorgRinger\News\Domain\Repository\NewsRepository;

class Repository {

        public function modify(array $params, NewsRepository $newsRepository) {
                $this->updateConstraints($params['demand'], $params['respectEnableFields'], $params['query'], $params['constraints']);
        }

        /**
         * @param \GeorgRinger\News\Domain\Model\Dto\NewsDemand $demand
         * @param bool $respectEnableFields
         * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
         * @param array $constraints
         */
        protected function updateConstraints($demand, $respectEnableFields, \TYPO3\CMS\Extbase\Persistence\QueryInterface $query, array &$constraints) {
                $subject = 'yeah';
                $constraints[] = $query->like('title', '%' . $subject . '%');
        }
}

Hint

Please change the vendor and extension key to your real life code.

Controller/NewsController overrideSettings

Use this hook to change the final settings which are for building queries, for the template, …

Example

This examples modifies the settings by changing the category selection.

First, register your implementation in the file ext_localconf.php:

<?php
defined('TYPO3_MODE') or die();

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['Controller/NewsController.php']['overrideSettings'][$_EXTKEY]
        = 'YourVendor\\Extkey\\Hooks\\NewsControllerSettings->modify';

Now create the file Classes/Hooks/NewsControllerSettings.php:

<?php

namespace YourVendor\Extkey\Hooks;

class NewsControllerSettings {

        public function modify(array $params) {
                $settings = $params['originalSettings'];
                $settings['categories'] = '2,3';

                return $settings;
        }
}

Hint

Please change the vendor and extension key to your real life code.

ProxyClass generator

Follow this chapter to learn how to add new fields or actions.

It is important to know how this concept is implemented. If a class should be extended, EXT:news will generate a new file containing the original class of the extension itself and all other classes which should extended it.

Take a look at the following 2 working examples:

Attention

This generator works only with the news version 3.2.0 or higher.

Warning

The drawbacks are easy to identify:

  • Don’t use any use statements as those are currently ignored!
  • It is not possible to override an actual method or property!

The files are saved by using the Caching Framework in the directory typo3temp/Cache/Code/news.

1) Add a new field in the backend

To add new fields, use either the extension extension_builder (http://typo3.org/extensions/repository/view/extension_builder) or create the extension from scratch.

The extension key used in this examples is eventnews.

Create the fields

3 files are basically all what you need:

ext_emconf.php

The file ext_emconf.php holds all basic information about the extension like the title, description and version number.

<?php

$EM_CONF[$_EXTKEY] = array(
        'title' => 'news events',
        'description' => 'Events for news',
        'category' => 'plugin',
        'author' => 'Georg Ringer',
        'author_email' => '',
        'state' => 'alpha',
        'uploadfolder' => FALSE,
        'createDirs' => '',
        'clearCacheOnLoad' => TRUE,
        'version' => '1.0.0',
        'constraints' => array(
                'depends' => array(
                        'typo3' => '7.6.13-8.7.99',
                        'news' => '6.2.0-6.9.99',
                ),
                'conflicts' => array(),
                'suggests' => array(),
        ),
);
SQL definition

Create the file ext_tables.sql in the root of the extension directory with the following content:

# Table structure for table 'tx_news_domain_model_news '
#
CREATE TABLE tx_news_domain_model_news (
        location_simple varchar(255) DEFAULT '' NOT NULL
);
TCA definition

The TCA defines which tables and fields are available in the backend and how those are rendered (e.g. as input field, textarea, select field, …).

In this example, the table tx_news_domain_model_news will be extended by a simple input field. Therefore, create the file Configuration/TCA/Overrides/tx_news_domain_model_news.php.

<?php
defined('TYPO3_MODE') or die();

$fields = array(
        'location_simple' => array(
                'exclude' => 1,
                'label' => 'My location',
                'config' => array(
                        'type' => 'input',
                        'size' => 15
                ),
        )
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_news_domain_model_news', $fields);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_news', 'location_simple');
Install the extension

Now you should be able to install the extension and if you open a news record, you should see the new field in the last tab.

2) Register the class

Until now, EXT:news won’t use the new field because it doesn’t know about it. To change that, you need to register your new model.

Registration

Create the file ext_localconf.php in the root of the extension:

<?php
defined('TYPO3_MODE') or die();

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['classes']['Domain/Model/News'][] = 'eventnews';

Domain/Model/News is the namespace to the class which should be extended and eventnews is the extension key.

Custom class

As the class Domain/Model/News should be extended, create a file at the same path in the own extension which is typo3conf/ext/eventnews/Classes/Domain/Model/News.php:

<?php

namespace GeorgRinger\Eventnews\Domain\Model;

/**
 * News
 */
class News extends \GeorgRinger\News\Domain\Model\News {

        /**
         * @var string
         */
        protected $locationSimple;

        /**
         * @return string
         */
        public function getLocationSimple() {
                return $this->locationSimple;
        }

        /**
         * @param string $locationSimple
         */
        public function setLocationSimple($locationSimple) {
                $this->locationSimple = $locationSimple;
        }
}

Hint

If you are using the extension extension_builder, this class might have been created for you already.

Clear system cache

Now it is time to clear the system cache, either via the dropdown in the backend or in the Install Tool.

Import Service

Follow this chapter to learn how to use the import service to import news records and categories.

The extension provides an import service to import data from various sources. One extension which heavily uses it is the extension news_ttnewsimport which imports records from tt_news.

Starting the import

There are 2 ways how the import can be started:

Import module

To be able to use the import module, you need to activate it. This needs to be done in the configuration of EXT:news inside the Extension Manager.

  1. Activate the checkbox “Show importer”, save and reload the backend. Now you should see the backend module “News Import”.
  2. Switch to the backend module.
CLI

Since version 5.3.0 the import can also be started by a CLI call.

./typo3/cli_dispatch.phpsh extbase newsimport:run
Use a custom source
Extend the importer

Sometimes it is necessary to enrich a provided importer. A common use case is that tt_news has been extended by 3rd party extensions and those fields must be migrated as well. This can be achieved by using one of the signal slots.

As a requirement you need to create an empty extension. In this example the extension key is news_importextended and the vendor GeorgRinger. Please adopt those 2 to your needs!

Prehydrate slot

The prehydrate signal slot can be used to manipulate the data before it is actually used by the importer.

Register the slot in the ext_localconf.php

<?php
if (!defined('TYPO3_MODE')) {
        die ('Access denied.');
}

\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher')->connect(
        'GeorgRinger\\News\\Domain\\Service\\NewsImportService',
        'preHydrate',
        'GeorgRinger\\NewsImportextended\\Aspect\\NewsImportAspect',
        'preHydrate'
);

Create the file `typo3conf/ext/news_importextended/Classes/Aspect/NewsImportAspect.php:

<?php

namespace GeorgRinger\NewsImportextended\Aspect;

class NewsImportAspect
{

        public function preHydrate(array $importItem)
        {
                $importItem['title'] = 'Modified title';
                $return = ['importItem' => $importItem];

                return $return;
        }
}
Posthydrate slot

The post hydrate slot can be used to modify the news object after it had been created by the importer. This slot must be used if the field you want to modify is not handled by the importer.

Register the slot in the ext_localconf.php

<?php
if (!defined('TYPO3_MODE')) {
        die ('Access denied.');
}

\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher')->connect(
        'GeorgRinger\\News\\Domain\\Service\\NewsImportService',
        'postHydrate',
        'GeorgRinger\\NewsImportextended\\Aspect\\NewsImportAspect',
        'postHydrate'
);

Create the file `typo3conf/ext/news_importextended/Classes/Aspect/NewsImportAspect.php:

<?php

namespace GeorgRinger\NewsImportextended\Aspect;

class NewsImportAspect
{

        /**
         * @param array $importData
         * @param \GeorgRinger\News\Domain\Model\News $news
         * @return void
         */
        public function postHydrate(array $importData, $news)
        {
                /** @var \GeorgRinger\NewsFeuser\Domain\Model\News $news */
                if ($importData['import_source'] === 'TT_NEWS_IMPORT') {
                        // The setter setTxNewsfeuserUser is provided by the extension news_feuser
                        $news->setTxNewsfeuserUser('A custom field');
                }
        }
}

Add a custom type

Out of the box news comes with three types built in:

  • “News”: Default news record
  • “Internal Page”: The news record is linked to a regular page.
  • “External Page”: The news record is linked to an external URL.

To add your custom type, you have to follow the steps below.

In this example the new type will be called ‘myCustomNewsType’ and is configured to only show the fields ‘title’ and ‘bodytext’.

1) Typoscript
config.tx_extbase.persistence.classes {
    GeorgRinger\News\Domain\Model\News {
        subclasses {
            3 = Vendor\ExtName\Domain\Model\MyCustomNewsType
        }
    }

    Vendor\ExtName\Domain\Model\MyCustomNewsType {
        mapping {
            recordType = 3
            tableName = tx_news_domain_model_news
        }
    }
}
2) TCA

In this example, the new type is configured to show the fields bodytext and title. Therefore, create the file Configuration/TCA/Overrides/tx_news_domain_model_news.php.

<?php
  if (!defined('TYPO3_MODE')) {
    die ('Access denied.');
  }

  $GLOBALS['TCA']['tx_news_domain_model_news']['columns']['type']['config']['items']['3'] =
    ['myCustomNewsType', 3] ;

  $GLOBALS['TCA']['tx_news_domain_model_news']['types']['3'] = [
    'showitem' => 'title, bodytext'
  ];
3) Custom class
<?php

namespace Vendor\ExtName\Domain\Model;

class MyCustomNewsType extends \GeorgRinger\News\Domain\Model\News {

}

Hint

This is a very basic example.

It would also be possible to use your custom news type to show custom fields. How to add custom fields to news is documented here.

Extension based on EXT:news

If you are using news records but need custom configuration and custom settings, you should think of creating a separate extension. This is really simple, just take a look at the following example.

Setup of the extension

As a demonstration, a new extension with the extension key news_filter will be created. The following files and its content is required.

ext_emconf.php

This file containts the basic information about its extension like name, version, author…

<?php

$EM_CONF[$_EXTKEY] = [
        'title' => 'News Filter',
        'description' => 'News filtering',
        'category' => 'fe',
        'author' => 'John Doe',
        'author_email' => 'john@doe.net',
        'shy' => '',
        'dependencies' => '',
        'conflicts' => '',
        'priority' => '',
        'module' => '',
        'state' => 'stable',
        'internal' => '',
        'uploadfolder' => 0,
        'modify_tables' => '',
        'clearCacheOnLoad' => 1,
        'lockType' => '',
        'author_company' => '',
        'version' => '1.0.0',
        'constraints' => [
                'depends' => [
                        'typo3' => '7.6.0-8.9.99',
                ],
                'conflicts' => [],
                'suggests' => [],
        ],
        'suggests' => [],
];
ext_localconf.php

Create a basic plugin with one action called list.

<?php
defined('TYPO3_MODE') or die();

$boot = function () {
        \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
                'GeorgRinger.news_filter',
                'Filter',
                [
                        'Filter' => 'list',
                ]
        );
};

$boot();
unset($boot);
Configuration/TCA/Overrides/tt_content.php

Register the plugin:

<?php
defined('TYPO3_MODE') or die();

/***************
 * Plugin
 */
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
        'news_filter',
        'Filter',
        'Some demo'
);
Classes/Controller/FilterController.php

Create a basic controller with the mentioned action.

<?php

namespace GeorgRinger\NewsFilter\Controller;

use GeorgRinger\News\Domain\Model\Dto\NewsDemand;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;

class FilterController extends ActionController
{

        public function listAction()
        {
                $demand = $this->createDemandObject();
                $this->view->assignMultiple([
                        'news' => $this->newsRepository->findDemanded($demand)
                ]);
        }

        /**
         * @return NewsDemand
         */
        protected function createDemandObject()
        {
                $demand = $this->objectManager->get(NewsDemand::class);
                $demand->setLimit(10);

                return $demand;
        }

        /**
         * @var \GeorgRinger\News\Domain\Repository\NewsRepository
         * @inject
         */
        protected $newsRepository;
}
Resources/Private/Templates/Filter/List.html

Create the template:

<f:if condition="{news}">
        <f:then>
                <div class="row">
                        <f:for each="{news}" as="newsItem">
                                <div class="col-md-3">
                                        <h5>{newsItem.title}</h5>
                                </div>
                        </f:for>
                </div>
        </f:then>
        <f:else>
                <div class="alert alert-danger">No news found</div>
        </f:else>
</f:if>
Setup

After enabling the extension in the Extension Manager and creating a plugin “Filter” on a page, you will see up to 10 news records of your system.

Hint

If your installation is based on composer, you need to add the classes to the PSR-4 section.

"autoload": {
        "psr-4": {
                "GeorgRinger\\NewsFilter\\": "typo3conf/ext/news_filter/Classes/"
        }
}
Configuration

There are multiple ways how to configure which news records should be shown. The fasted way is to hardcode the configuration.

Hardcode it

By modifying the controller with the following code, you will change the output to show only those news records which fulfill the following requirements:

  • The pid is 123
  • The author is John
  • The id of the records is neither 12 nor 45.
/**
 * @return NewsDemand
 */
protected function createDemandObject()
{
    $demand = $this->objectManager->get(NewsDemand::class);
    $demand->setStoragePage('123');
    $demand->setAuthor('John');
    $demand->setHideIdList('12,45');

    return $demand;
}
Use FlexForms

Flexforms are a powerful tool to let editors configure plugins.

Configuration/TCA/Overrides/tt_content.php

Exchange the existing file with the following content.

<?php
defined('TYPO3_MODE') or die();

/***************
 * Plugin
 */
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
        'news_categoryfilter',
        'Filter',
        'Some demo'
);

$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['newsfilter_filter'] = 'recursive,select_key,pages';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['newsfilter_filter'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue('newsfilter_filter',
        'FILE:EXT:news_categoryfilter/Configuration/FlexForms/flexform_news_filter.xml');
Configuration/FlexForms/flexform_news_filter.xml

The syntax of FlexForms is identical to the one of TCA with the only difference that it is written in XML instead of PHP.

<T3DataStructure>
        <sheets>
                <sDEF>
                        <ROOT>
                                <TCEforms>
                                        <sheetTitle>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_tab.settings
                                        </sheetTitle>
                                </TCEforms>
                                <type>array</type>
                                <el>
                                        <settings.startingpoint>
                                                <TCEforms>
                                                        <label>LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.startingpoint</label>
                                                        <config>
                                                                <type>group</type>
                                                                <internal_type>db</internal_type>
                                                                <allowed>pages</allowed>
                                                                <size>3</size>
                                                                <maxitems>50</maxitems>
                                                                <minitems>0</minitems>
                                                                <wizards>
                                                                        <suggest>
                                                                                <type>suggest</type>
                                                                                <default>
                                                                                        <searchWholePhrase>1</searchWholePhrase>
                                                                                </default>
                                                                        </suggest>
                                                                </wizards>
                                                        </config>
                                                </TCEforms>
                                        </settings.startingpoint>
                                </el>
                        </ROOT>
                </sDEF>
        </sheets>
</T3DataStructure>

Important is that each element’s name is prepended with settings..

Hint

Take a look at the FlexForms of the news extension for inspiration. You can even just copy & paste settings from there. The file can be found at EXT:news/Configuration/FlexForms/flexform_news.xml.

Classes/Controller/FilterController.php

Adopt the controller to use the settings instead of the hardcoded ones.

/**
 * @return NewsDemand
 */
protected function createDemandObject()
{
    $demand = $this->objectManager->get(NewsDemand::class);
    // Because of the naming "<settings.startingpoint>", you can use $this->settings['startingpoint']
    $demand->setStoragePage($this->settings['startingpoint']);
    $demand->setLimit(10);

    return $demand;
}

Contribute

Contributions are essential for the success of open-source projects but certainly not limited to contribute code. A lot more can be done:

  • Improve documentation
  • Answer questions on stackoverflow.com

Contribution workflow

Please create always an issue at https://github.com/georgringer/news/issues before starting with a change. This is essential helpful if you are unsure if your change will be accepted.

Get the latest version from git

Fork the repository https://github.com/georgringer/news and provide a pull request with your change

Tutorials

This chapter lists some nice tutorials.

Integration

Linkhandler

Linkhandler is the synonym for making it possible for editors to create links to custom records. Until 8 LTS a 3rd party extension has been required but since then it is integrated into the core. Read at https://docs.typo3.org/typo3cms/extensions/core/8.7/Changelog/8.6/Feature-79626-IntegrateRecordLinkHandler.html about the feature.

Tip

This tutorial is also valid for creating links to any other record.

Configuration for the backend

PageTsConfig is used to configure the link browser in the backend.

# tx_news is an identifier, don't chage it after links have been created
TCEMAIN.linkHandler.tx_news {
   handler = TYPO3\CMS\Recordlist\LinkHandler\RecordLinkHandler
   # A translatable label can be used with LLL:EXT:theme/locallang.xml:label
   label = News
   configuration {
      table = tx_news_domain_model_news
      # Default storage pid
      storagePid = 123
      # Hide the page tree by setting it to 1
      hidePageTree = 0
   }
   scanAfter = page
}
Configuration for the frontend

The links are now stored in the database with the syntax <a href=”t3://record?identifier=tx_news&amp;uid=456”>A link</a>. By using TypoScript, the link is transformed into an actual link.

config.recordLinks.tx_news {
   typolink {
      # Detail page
      parameter = 123
      additionalParams.data = field:uid
      # If there is a plugin with mode "Detail", the controller and action parameter might be skipped
      additionalParams.wrap = &tx_news_pi1[controller]=News&tx_news_pi1[action]=detail&tx_news_pi1[news]=|
      useCacheHash = 1
   }
}

Templates

Render news items in columns

If you need to list news next to each other and need some additional CSS classes, you can use the modulo operator to achieve this. The provided example will wrap 3 items into a div with the class “row”.

<f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
        <f:if condition="{iterator.isFirst}">
                <div class="row">
        </f:if>

        <f:if condition="{iterator.cycle} % 3">
                <f:then>
                        <div class="col-md-4">
                                <f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                        </div>
                </f:then>

                <f:else>
                        <div class="col-md-4">
                                <f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                        </div>

                        <f:if condition="{iterator.isLast}">
                                <f:then></f:then>
                                <f:else>
                                        </div><div class="row">
                                </f:else>
                        </f:if>
                </f:else>
        </f:if>

        <f:if condition="{iterator.isLast}">
                </div>
        </f:if>
</f:for>

By using the extension “vhs” you can achieve this in far less lines:

{namespace v=FluidTYPO3\Vhs\ViewHelpers}
<f:for each="{news -> v:iterator.chunk(count: 3)}" as="col" iteration="cycle">
   <div class="row">
      <f:for each="{col}" as="newsItem">
         <div class="col-md-4">
            <f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings}"/>
         </div>
      </f:for>
   </div>
</f:for>

Render content elements

If news is configured to use relations to content elements, those are shown by default in the detail view.

There are two options how to render those elements

Using TypoScript

This is the default way in EXT:news. A basic TypoScript configuration is used to render those. This look like this:

lib.tx_news.contentElementRendering = RECORDS
lib.tx_news.contentElementRendering {
        tables = tt_content
        source.current = 1
        dontCheckPid = 1
}

If you need to extend this, the best way is to introduce your own TypoScript which can be saved anywhere. This needs then to be referenced in the template.

<f:if condition="{newsItem.contentElements}">
        <f:cObject typoscriptObjectPath="lib.yourownTypoScript">{newsItem.contentElements}</f:cObject>
</f:if>
Using Fluid

You can also use fluid render the content elements. As an example:

<f:if condition="{newsItem.contentElements}">
        <f:for each="{newsItem.contentElements}" as="element">
                <h3>{element.title}</h3>
                <f:if condition="{element.CType} == 'text'">
                {element.bodytext -> f:format.html()}
                </f:if>
        </f:for>
</f:if>

Group news records

Tip

This is a feature delivered by fluid, so you can use it also in other extensions and projects.

The following example will group all given news records by the property “firstCategory”.

<f:if condition="{news}">
        <f:then>
                <div style="border:1px solid red">
                        <f:groupedFor each="{news}" as="groupedNews" groupBy="firstCategory" groupKey="cat">
                                <div style="border:1px solid blue;padding:10px;margin:10px;">
                                        <h1>{cat.title}</h1>
                                        <f:for each="{groupedNews}" as="newsItem">
                                                <div style="border:1px solid pink;padding:5px;margin:5px;">
                                                        {newsItem.title}
                                                </div>
                                        </f:for>
                                </div>
                        </f:groupedFor>
                </div>
        </f:then>
        <f:else>
                <div class="no-news-found">
                        <f:translate key="list_nonewsfound"/>
                </div>
        </f:else>
</f:if>
Keep an eye on performance!

To be able to group the records, fluid will load every record itself and groups those afterwards. If you plan to group many records just for getting something like a count, maybe it is better to fire the query directly and don’t use fluid for that.

However if the result is on a cacheable page, the issue is only relevant on the first hit.

Filter news by multiple categories

The default category template Category/List allows only filtering by a single category. If you need to filter by multiple categories, you can use such template:

<html xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
      xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">

<f:layout name="General" />
<!--
    =====================
        Templates/Category/List.html
-->

<f:section name="content">
    <f:if condition="{categories}">
        <f:then>


            <f:render section="categoryTree" arguments="{categories:categories,overwriteDemand:overwriteDemand}" />
        </f:then>
        <f:else>
            <f:translate key="list_nocategoriesfound" />
        </f:else>
    </f:if>
</f:section>

<f:section name="categoryTree">
    <ul>
        <f:for each="{categories}" as="category">
            <li>
                <n:multiCategoryLink.isCategoryActive list="{overwriteDemand.categories}" item="{category.item.uid}">
                    <f:then>
                        <f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
                            additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
                        </f:link.page>

                        (<f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
                                      additionalParams="{n:multiCategoryLink.arguments(mode:'remove',item:category.item.uid,list:overwriteDemand.categories)}">weg
                    </f:link.page>)

                    </f:then>
                    <f:else>
                        <f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
                            additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
                        </f:link.page>

                        (<f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
                                     additionalParams="{n:multiCategoryLink.arguments(mode:'add',item:category.item.uid,list:overwriteDemand.categories)}">dazu
                        </f:link.page>)
                    </f:else>
                </n:multiCategoryLink.isCategoryActive>

                <f:if condition="{category.children}">
                    <f:render section="categoryTree" arguments="{categories: category.children,overwriteDemand:overwriteDemand}" />
                </f:if>
            </li>
        </f:for>
    </ul>
</f:section>
</html>

External tutorials

There are already some additional 3rd party tutorials about the extension “news”.

Video tutorials by jweiland

5 german video tutorials by Jochen Weiland which can be found at http://jweiland.net/typo3-hosting/service/video-anleitungen/typo3-extensions/news.html.

Miscellaneous

Misc

ChangeLog

Please follow this link to know which bugs have been fixed in which version.

List of versions

7.0.8 - 2018/06/11
Important changes

To fix a regression of the core regarding routing, a change has been made which requires a DB compare to add the field l10n_source. You can also upgrade to master branch of the core until 9.5.2 is released. All Changes ———– This is a list of all changes in this release:

2018-11-02 [TASK] Document how to manipulate flexform with tsconfig (Commit 013c1d1d by Georg Ringer)
2018-10-31 [TASK] Add recordlist as dependency (Commit a70d62a7 by Georg Ringer)
2018-10-31 [TASK] Provide l10n_source field in TCA (Commit 9c8777ce by Georg Ringer)
2018-10-25 [BUGFIX] Do not override page header data on CE shortcut to news record (#772) (Commit e624f956 by jokumer)

This list has been created by using git log 7.0.7..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

7.0.7 - 2018/24/10
All Changes

This is a list of all changes in this release:

2018-10-22 [TASK] Skip another test for 9 (Commit 569120ad by Georg Ringer)
2018-10-22 [TASK] Fix errors in tests (Commit 8032b877 by Georg Ringer)
2018-10-22 [TASK] Skip tests for 9 and extbase command controllers (Commit 95a4b687 by Georg Ringer)
2018-10-22 [TASK] Adapt viewhelper example code (#765) (Commit 886aefe8 by jokumer)
2018-10-15 [BUGFIX] Allow hiding the page tree in 9 LTS (Commit f94a5e4a by Seb Red)
2018-10-15 [BUGFIX] Improve end date in search in FE (Commit 51aa4b14 by Georg Ringer)
2018-10-15 [FOLLOWUP] Render related links as link in TYPO3 9.5 (#764) (Commit f1f6934a by echavaillaz)
2018-10-12 Fix url in redirectToPageOnStart() (#757) (Commit ed5dbe61 by Seb Red)
2018-10-12  Render related links as link in TYPO3 9.5 (#761) (Commit be8702ce by jokumer)
2018-10-12  Render related links as link in TYPO3 9.5 (#762) (Commit 79ec29b8 by jokumer)
2018-10-12 Changed confirmMsg to confirmMsgText in AdministrationController. (#713) (Commit 90a2cd8e by René Schulze)
2018-10-10 [BUGFIX] Fix token generation for administration module (Commit 7db8c6e4 by Georg Ringer)
2018-10-10 [TASK] Cleanup TCA (Commit 7a174236 by Georg Ringer)
2018-10-10 [!!!][TASK] Use uniqueInSite for path_segment (Commit 74551101 by Georg Ringer)
2018-10-09 [BUGFIX] Fix eval of archive (Commit 6873c7da by Georg Ringer)
2018-10-09 [BUGFIX] Remove duplicated enclosure tag (#752) (Commit 7a9038e2 by Daniel Huf)

This list has been created by using git log 7.0.6..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

7.0.6 - 2018/08/10

This release supports 9.5 LTS

All Changes

This is a list of all changes in this release:

2018-10-02 [BUGFIX] Support custom showinpreview types (Commit aa0a6547 by Georg Ringer)
2018-10-02 [TASK] Use different preview icon (Commit d472d0f4 by Georg Ringer)
2018-10-02 [DOC] Fix example for NewsControllerSettings hook (#738) (Commit 634f864c by Johannes Klinger)
2018-10-02 [Bugfix] correct date formatting in iCal list template (#726) (Commit 3a02ce4d by Hendrik Putzek)
2018-10-01 [FEATURE] Use slug handling of core (Commit 717c1a32 by Georg Ringer)
2018-09-14 [BUGFIX] Remove wizard for link fields (Commit bafe6a5c by Georg Ringer)
2018-09-14 [BUGFIX] Fix warning detection for foreign record title #727 (#728) (Commit 247a3862 by Sebastian Michaelsen)
2018-07-25 [BUGFIX] AbstractImportService must not be a singleton (Commit cf107019 by Georg Ringer)
2018-07-25 [BUGFIX] Followup: use correct key (Commit c6722456 by Georg Ringer)
2018-07-25 [FEATURE] Change import method to array (Commit fc62d762 by Georg Ringer)
2018-07-23 [DOC] Clarify where to set config for hrDates (#692) (Commit 961b83a1 by Web-Macher)
2018-07-23 [BUGFIX] Fix news slug updater identifier (#707) (Commit 9ff2c908 by Mathias Brodala)
2018-07-06 [BUGFIX] Add a cache tag for listings without a configured startingpoint (#702) (Commit 106bd01d by bnf)
2018-07-06 [DOC] Add clarification to Changelog for 7.0.0 (#700) (Commit de705d99 by Sybille Peters)
2018-06-27 [BUGFIX] Allow strict_mode of Mysql for archive field (Commit b73b1db9 by Georg Ringer)
2018-06-20 [TASK] Allow 9.3 & 9.4 (Commit 83a61092 by Georg Ringer)
2018-06-19 [BUGFIX] Use instance of TimeTracker instead of $GLOBAL['TT'] (#684) (Commit f2a994ae by Tom Hatzer)
2018-06-15 Change ratio of video in detail view (#678) (Commit 3139db4d by Thomas Löffler)
2018-06-15 also add the localized uid as cache tag (#680) (Commit e9015293 by Marco Pfeiffer)
2018-06-15 Documentation change: fix line numbers in realurl example (#677) (Commit e526eafa by Sybille Peters)

This list has been created by using git log 7.0.5..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

7.0.5 - 2018/16/05
All Changes

This is a list of all changes in this release:

2018-06-09 [DOC] Document how to set properties of EM #660 (Commit 1eb5c791 by Georg Ringer)
2018-06-06 [BUGFIX] Make sure to have an array when asking for category permissions (#673) (Commit c4703699 by Markus Klein)
2018-05-22 [TASK] Adopt .gitattributes file (Commit 6980b79f by Georg Ringer)
2018-05-22 [BUGFIX] selected in all views should be available in details view (#662) (Commit 2f18ab13 by Sébastien Rüegg)
2018-05-22 [BUGFIX] Skip link generation if not possible (Commit b7d49dd9 by Georg Ringer)
2018-05-18 [TASK] Add github template issues (Commit 1342c933 by Georg Ringer)
2018-05-18 [DOC] Correct menu in changelog (Commit 9254ee3b by Georg Ringer)

This list has been created by using git log 7.0.4..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

7.0.4 - 2018/16/05
All Changes

This is a list of all changes in this release:

2018-05-16 [DOC] Fix changelog (Commit 3a894566 by Georg Ringer)
2018-05-16 [TASK] Release 7.0.2 (Commit 6f219cb7 by Georg Ringer)
2018-05-16 [BUGFIX] Use correct key for type query (Commit 54ca8316 by Georg Ringer)
2018-05-14 [DOC] Fix wrong code block in custom type example (Commit 49baecb3 by Georg Ringer)
2018-05-11 Improved compatibility for postgres installations (#666) (Commit 52815427 by Damir Andrašević)
2018-05-08 [BUGFIX] Forward from list to single when needed (#664) (Commit 90b314eb by Helmut Hummel)
2018-05-08 dont concatenate js/css files (#652) (Commit c4ca0715 by Marco Pfeiffer)
2018-05-08 [BUGFIX] Remove debug code and make category filter in BE work (Commit 7ec44d35 by Georg Ringer)
2018-05-02 Fixes already fully qualified urls being prefixed for Open Graph Protocol tag (#659) (Commit 243c843d by Markus Mächler)
2018-04-28 [TASK] Force string before any slug conversion (Commit 6a99271f by Georg Ringer)
2018-04-28 [TASK] Use renderType checkboxToggle for 9+ (Commit b1780aec by Georg Ringer)

This list has been created by using git log 7.0.1..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

7.0.1 - 2018/27/04
All Changes

This is a list of all changes in this release:

2018-04-27 [TASK] Bring back old fal getters (Commit 5f609c28 by Georg Ringer)
2018-04-27 [TASK] Use up to date realurl configuration (#655) (Commit 7f1a4c1e by Markus Klein)
2018-04-27 [TASK] Suggest newest version of rx_shariff (#656) (Commit 3287d3dd by Markus Klein)

This list has been created by using git log 7.0.0..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

7.0.0 - 2018/26/04
Important changes

The following changes might be important for your installation.

Support for TYPO3 9 & 8

This is the 1st version which supports the upcoming TYPO3 9 version. Version 8 LTS is supported as well but requires version 8.7.13.

  • Every usage of $GLOBALS[‘TYPO3_DB’] has been migrated to Doctrine DBAL.
  • Adopt TCA to the best practice of the core without any deprecations.

Important

Support for version 7.6 has been dropped. With October 2018 7.6 wil have reached end of life. Check out https://typo3.com/services/extended-support/ if you need an extended support.

Improved SEO support

SEO is important to everyone and now news supports editors with an improved url handling. Since a long time, there has been a field called path_segment which has been well hidden and can be used as alternative path segment for realurl.

Now this field has been moved right below the title and is automatically filled by the title. If the title changes, the slug field will stay the same to keep the URL in the frontend.

img-release700-slug-field

Important

As long as you don’t change your realurl configuration, you don’t benefit from the the slug field. But if you change, be aware that URLs might change. An upgrade wizard in the Install Tools cares about filling the slug field automatically.

The documentation about realurl configuration as been adopted:

    // EXT:news start
'a' => [
    [
        'GETvar' => 'tx_news_pi1[action]',
    ],
    [
        'GETvar' => 'tx_news_pi1[controller]',
    ],
    [
        'GETvar' => 'tx_news_pi1[news]',
        'lookUpTable' => [
            'table' => 'tx_news_domain_model_news',
            'id_field' => 'uid',
            'alias_field' => 'IF(path_segment!="",path_segment,title)',
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'languageGetVar' => 'L',
            'languageExceptionUids' => '',
            'languageField' => 'sys_language_uid',
            'transOrigPointerField' => 'l10n_parent',
            'expireDays' => 180,
            'enable404forInvalidAlias' => true
        ]
    ]
],
    // EXT:news end
Improved field ordering

The fields of a news record in the backend have been reordered and improved:

  • Fields type & istopnews at the top
  • Date fields moved up
  • Author fields moved to the tab “Metadata”
  • Custom tab for media elements (as in the default content element “Text with media”)
  • Custom tab for categories (as in any content element)
  • Custom tab for languages (as in any record)
Allow more options for file preview

The well known checkbox Show in list views inside every FAL relation is changed to a dropdown to allow the following settings:

  • Show only in detail views (Behaviour as the previous unchecked checkbox)
  • Show in all views (Behaviour as the previous checked checkbox)
  • Show only in list views (New)

Important

This feature must be activated inside the extension manager settings: records.advancedMediaPreview.

img-release700-filereference-select

Donation module

A new view has been added to the administration module to show how you can support the further development of this extension.

img-donation-module

Improved administration module

2 more TsConfig options have been added to customize the administration module

  • tx_news.module.controlPanels = 1 to enable control panels
  • tx_news.module.allowedCategoryRootIds = 12,34 to restrict shown categories to list of category root ids
Features

List of all other features.

Show tag count

By using a new ViewHelper it is now possible to get the count of (system-wide) usage of a given tag.

{n:tag.count(tagUid:tag.uid) -> f:variable(name: 'tagUsageCount')}
Allow sorting of selectedList items

The view “selected list” which can be used to render a manual selected list of articles is now capable of sorting those just as a regular list.

Support creation filter by multiple categories

By using new ViewHelpers it is now possible to create links to filter news by multiple categories instead of only one.

<!-- check if active -->
<n:multiCategoryLink.isCategoryActive list="{overwriteDemand.categories}" item="{category.item.uid}">
    <f:then>
        <!-- remove link -->
        <f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
                     additionalParams="{n:multiCategoryLink.arguments(mode:'remove',item:category.item.uid,list:overwriteDemand.categories)}">dazu
        </f:link.page>
    </f:then>
    <f:else>
        <!-- add link -->
        <f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
                     additionalParams="{n:multiCategoryLink.arguments(mode:'add',item:category.item.uid,list:overwriteDemand.categories)}">dazu
        </f:link.page>
    </f:else>
All Changes

This is a list of all changes in this release:

2018-04-17 [DOC] Document linkVars for RSS (Commit 98af3b45 by Georg Ringer)
2018-04-17 [TASK] Raise requirements to 8.7.13 (Commit 5eb5257d by Georg Ringer)
2018-04-17 [TASK] Allow core 9.2 in ext_emconf (Commit a985dfdb by Georg Ringer)
2018-04-17 [TASK] Adopt versions (Commit 52e0204c by Georg Ringer)
2018-04-17 [TASK] Add DB fields for multilanguage tags (Commit d34a1f11 by Georg Ringer)
2018-04-13 [TASK] Improve hook for showinpreview (Commit 6284ecba by Georg Ringer)
2018-04-13 [DOC] Finalize release notes (Commit 5b2f58cb by Georg Ringer)
2018-04-12 [DOC] Fix toc in manual (Commit 2059f921 by Georg Ringer)
2018-04-12 [TASK] Make new showinpreview configurable (Commit 1da6d732 by Georg Ringer)
2018-04-12 [TASK] Add seperate getter for list only (Commit 2738823f by Georg Ringer)
2018-04-12 [DOC] Start release notes for 7.0 (Commit 518667c5 by Georg Ringer)
2018-04-12 [TASK] Add method to generate slug (Commit c254c522 by Georg Ringer)
2018-04-12 [DOCS] Add docs about multi category filtering (Commit 579c51af by Georg Ringer)
2018-04-12 [TASK] Include sponsor imgs base64 decoded (Commit 4d74d214 by Georg Ringer)
2018-04-11 [FEATURE] Add notes to news model (Commit 1efe02bd by Georg Ringer)
2018-04-11 [FEATURE] Provide slugservice (Commit f82a9b3d by Georg Ringer)
2018-04-10 [TASK] Migrate RTE configuration (Commit eb478dd3 by Georg Ringer)
2018-04-10 [TASK] Move tca to allowLanguageSynchronization (Commit e7b2d0dc by Georg Ringer)
2018-04-10 [TASK] Remove usage of noCopy (Commit f7b57def by Georg Ringer)
2018-04-10 [TASK] Migrate input fields to inputLink rendertype (Commit 99c11643 by Georg Ringer)
2018-04-10 [TASK] Migrate TCA wizards (Commit dd2004cb by Georg Ringer)
2018-04-10 [TASK] Migrate rte wizard (Commit d6e2f27c by Georg Ringer)
2018-04-10 [TASK] Migrate tca suggest options (Commit c57fa2f2 by Georg Ringer)
2018-04-10 [TASK] Use rendertype inputDateTime (Commit 3938ff23 by Georg Ringer)
2018-04-10 [TASK] Migrate usage of showIconTable (Commit 83490854 by Georg Ringer)
2018-04-10 [TASK] Remove usage of TCA config show_thumbs (Commit 096af7c1 by Georg Ringer)
2018-04-10 [BUGFIX] Followup test fix (Commit 082d2ff7 by Georg Ringer)
2018-04-10 [BUGFIX] Fix failing test (Commit 2838c656 by Georg Ringer)
2018-04-07 [!!!][FEATURE] Allow more options for file preview (Commit 624642ff by Georg Ringer)
2018-04-07 [TASK] Correct TCA types (Commit 8252ed08 by Georg Ringer)
2018-04-07 [DOC] Change realurl identifier (Commit 20999d71 by Georg Ringer)
2018-04-07 [FEATURE] Prefill slug field with optimized title (Commit b6d12d18 by Georg Ringer)
2018-04-07 [!!!] Change type of showinpreview to int (Commit 03d817b2 by Georg Ringer)
2018-04-06 [FEATURE] Allow sorting of selectedList items (Commit 3931f7c8 by Georg Ringer)
2018-04-06 [!!!][FEATURE] Pass settings to the signal slots (Commit 35f4446d by Georg Ringer)
2018-04-06 [BUGFIX] Autosubmit form if preselects are there (Commit fa16beb2 by Georg Ringer)
2018-04-05 [BUGFIX] Resolve breaking change in symfony/finder (Commit 8523d344 by Georg Ringer)
2018-04-05 [BUGFIX] Add render method to condition VHs (Commit cdaf2124 by Georg Ringer)
2018-04-05 [TASK] Finalize TCA (Commit a3f21123 by Georg Ringer)
2018-04-04 [TASK] Improve TCA of news (Commit d46db49a by Georg Ringer)
2018-04-03 [DOC] Fix typo in Readme (Commit 6caedf4b by Georg Ringer)
2018-03-31 [FEATURE] Show tag counts (Commit f3f37c1b by Georg Ringer)
2018-03-31 [FEATURE] Add shortcut button to administration module (Commit f1e758ce by Georg Ringer)
2018-03-30 [BUGFIX] Fix and improve search in FE (Commit 31df8272 by Georg Ringer)
2018-03-30 [TASK] Drop usage of old DB conneciton (Commit 6ebe5fac by Georg Ringer)
2018-03-30 [TASK] Finalize gst (Commit d58803f3 by Georg Ringer)
2018-03-30 [TASK] Migrate last usage of old DB (Commit eb21887b by Georg Ringer)
2018-03-29 [TASK] Use XS for the sponsors (Commit 00f76f8d by Georg Ringer)
2018-03-29 [TASK] Add dkd as sponsor (Commit d714a5ec by Georg Ringer)
2018-03-29 [FEATURE] Make rendering of meta tags configurable (Commit f49f6d3f by Georg Ringer)
2018-03-29 [!!!][TASK] Add chash to widget uris (Commit 7c0290de by Georg Ringer)
2018-03-29 [TASK] Revert template changes (Commit 6714dba8 by Georg Ringer)
2018-03-29 [FEATURE] Support multi category links (Commit 331d7db1 by Georg Ringer)
2018-03-28 [DOC] Add support stuff to docs (Commit e1745344 by Georg Ringer)
2018-03-28 Apply fixes from StyleCI (#626) (Commit 6b4de0eb by Georg Ringer)
2018-03-28 [TASK] Change allowed versions (Commit 493d12b5 by Georg Ringer)
2018-03-28 [TASK] Finalize donation template (Commit 06831b81 by Georg Ringer)
2018-03-28 [FEATURE] Make it possible to reduce categories in admin module (Commit e202e23c by Georg Ringer)
2018-03-28 [TASK] Allow more fields as date field (Commit 7d105a52 by Georg Ringer)
2018-03-28 [DOC] Cleanup rss docs (Commit a457e04a by Georg Ringer)
2018-03-28 [FEATURE] Make it possible to show the controlPanels in admin module (Commit 07ba83b2 by Georg Ringer)
2018-03-28 [TASK] Use API to show overlay field in user settings (#624) (Commit e4bac9d8 by Mathias Brodala)
2018-03-27 [BUGFIX] Fix backend module for 9 (Commit 10bb0ff0 by Georg Ringer)
2018-03-27 [TASK] Show donation info in admin module (Commit b0182434 by Georg Ringer)
2018-03-27 [BUGFIX] Fix token generation in backend module (Commit 790f187c by Georg Ringer)
2018-03-26 [BUGFIX] Transform datetime value to integer for registered property (Commit 964e92d5 by Georg Ringer)
2018-03-26 [BUGFIX] Force validation to int for date fields (Commit 15f1126a by Georg Ringer)
2018-03-26 [TASK] Synchronize dependencies (Commit e98b23e3 by Georg Ringer)
2018-03-26 Update ext_localconf.php (#411) (Commit 4db822d9 by bobbel78)
2018-03-25 [BUGFIX] Replace usage of deprecated method create_function() (#617) (Commit 2b3a7426 by Xavier Perseguers)
2018-03-25 [BUGFIX] Correctly link to Composer in the readme (#618) (Commit 10858a6d by Daniel Ruf)
2018-03-22 [TASK] Fix usages of template layouts and optgroups (Commit db696abd by Georg Ringer)
2018-03-22 [FIX] Fixes a small grammar issue. (#615) (Commit 0669b74c by Robert Wildling)
2018-03-17 [DOC] Updated Contribution section in Readme.md (#610) (Commit 96c494d0 by Torben Hansen)
2018-03-16 Fix description in flexform comments. (#603) (Commit 190a7641 by Robert Wildling)
2018-03-16 Remove useless zzz chars (#607) (Commit 8fa60347 by Alexander Grein)
2018-03-14 [TASK] Switch extension icon (Commit f341e09a by Georg Ringer)
2018-03-14 [TASK] Module navigation (Commit f797e89c by Georg Ringer)
2018-03-08 [TASK] Remove not needed VH test (Commit 4f20af71 by Georg Ringer)
2018-03-08 [DOCS] Fix realurl example in docs (Commit 7c8c699d by Georg Ringer)
2018-03-08 Merge branch '8+' (Commit 67763e4e by Georg Ringer)
2018-03-08 [BUGFIX] not generating data-link argument for Ajax Pagination (#599) (#600) (Commit cefa4926 by lsascha)
2018-03-08 [FEATURE] Donation module (Commit f3fd982d by Georg Ringer)
2018-03-01 [BUGFIX] Render audio not as image (Commit 1cfc3e69 by Georg Ringer)
2018-02-28 Apply fixes from StyleCI (#598) (Commit ab924047 by Georg Ringer)
2018-02-28 Update .travis.yml (Commit 52015833 by Georg Ringer)
2018-02-27 [BUGFIX] Pass correct content to stdWrap function (#595) (Commit 5223bd43 by Markus Klein)
2018-02-13 [WIP][TASK] Start working on RecordList changes (Commit 8c4171c6 by Georg Ringer)
2018-02-13 [TASK] Migrate query in RecordListConstraint (Commit b593c466 by Georg Ringer)
2018-02-13 [TASK] Bring back version check variable (Commit d95f3e7c by Georg Ringer)
2018-02-13 [TASK] Replace StringFrontend (Commit 7bc1c609 by Georg Ringer)
2018-02-13 [TASK] Migrate AccessControlService (Commit 19bc9b11 by Georg Ringer)
2018-02-13 [TASK] Migrate query of AccessControlService (Commit 831adfd5 by Georg Ringer)
2018-02-13 [FEATURE] Support settings.opengraph.locale (Commit 3a89b72b by Georg Ringer)
2018-02-12 Apply fixes from StyleCI (#580) (Commit 50fe51bc by Georg Ringer)
2018-02-12 [BUGFIX] Set no_cache flag for news not found template (Commit 332e81ee by Georg Ringer)
2018-02-12 Merge branch 'master' of github.com:georgringer/news into 8+ (Commit e03cf095 by Georg Ringer)
2018-02-11 [TASK] Remove phpunit dev in compsoer (Commit a9978521 by Georg Ringer)
2018-02-11 [TASK] Limit travis jobs for 9 (Commit cf6ad537 by Georg Ringer)
2018-02-11 [BUGFIX] Fix prev next VH (Commit f73707d0 by Georg Ringer)
2018-02-11 [BUGFIX] Remove return type hint (Commit 8df1116d by Georg Ringer)
2018-02-11 [TASK] Allow more versions of testing framework (Commit 151a6db1 by Georg Ringer)
2018-02-11 [TASK] Fix unit tests (Commit 2af853b2 by Georg Ringer)
2018-02-10 [BUGFIX] Prevent output of ViewHelper xmlns-attributes in rendered code on website (#572) (Commit fe5f32cc by chris)
2018-02-07 [TASK] Make hook in recordlist ready for 9 (Commit 9cd7c2d9 by Georg Ringer)
2018-02-07 [TASK] Remove outcommented code (Commit c9ee0e46 by Georg Ringer)
2018-02-07 [TASK] Use proper xlf path (Commit 4d29855a by Georg Ringer)
2018-02-07 [TASK] Convert NewsRepository (Commit a11ab27e by Georg Ringer)
2018-02-07 [TASK] Migrate CategoryService (Commit 4b53a45a by Georg Ringer)
2018-02-07 [TASK] Convert 1st part of CategoryService (Commit fa6303ce by Georg Ringer)
2018-02-07 [TASK] Remove unused method (Commit 81ccdc4c by Georg Ringer)
2018-02-06 [TASK] Migrate NewsRepository (Commit de059447 by Georg Ringer)
2018-02-06 [TASK] Migrate SimplePrevNext (Commit 1f8ee59e by Georg Ringer)
2018-02-06 [TASK] Migrate TagEndPoint (Commit 37d98d99 by Georg Ringer)
2018-02-06 [TASK] Remove unsupported code (Commit 7443ac03 by Georg Ringer)
2018-02-06 [TASK] Migrate CategoryRepository to doctrine DBAL (Commit 6a5cc346 by Georg Ringer)
2018-02-06 [TASK] Remove deprecated flexform configs (Commit e8706144 by Georg Ringer)
2018-02-06 [TASK] Remove checks for older versions in AbstractDemandRepository (Commit 794a6bc2 by Georg Ringer)
2018-02-06 [TASK] Migrate to doctrine DBAL of first classes (Commit 18aa77fa by Georg Ringer)
2018-02-06 [TASK] Restrict to version 8+ (Commit 6adeeb57 by Georg Ringer)
2018-02-06 [DOC] Add administration section (Commit ad094a3d by Georg Ringer)
2018-02-06 [BUGFIX] Fix PHP error (Commit 54dff25e by Georg Ringer)
2018-02-06 [FEATURE] Merged constructor for proxy classes (#368) (Commit f877ddb8 by Marc Bastian Heinrichs)
2018-02-06 [BUGFIX] Fix calculation of numberOfPages (Commit 6fcfcdfb by Georg Ringer)
2018-02-06 [BUGFIX] Explicit override settings with stdWrap enabled (#361) (Commit 5d7a02a3 by Christian Futterlieb)

This list has been created by using git log 6.3.0..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

6.3.0 - 2018/02/01
Important changes
Fix regressions

Fix a small bug in the MetaTagsViewHelper which has been added in last release.

Restrict template layouts to a colPos

It is now possible to restrict template layouts to certain colPos values.

tx_news.templateLayouts {
   1 = Fobar
   2 = Another one
   2.allowedColPos = 1,2,3
   3 =  --div--,Group 2
   4 = Blub
   4.allowedColPos = 0,1
}

This feature has been sponsored by h_da - Hochschule Darmstadt, https://www.h-da.de/, thanks a lot!

All Changes

This is a list of all changes in this release:

2018-01-29 [FEATURE] Restrict template layouts to colpos values (Commit 0b14c23d by Georg Ringer)
2018-01-29 [BUGFIX] Fix regression in sorting of sys_language records (Commit 2228d42e by Georg Ringer)
2018-01-29 [DOC] Fix wrong constants in rss docs (Commit 79f1a293 by Georg Ringer)
2018-01-29 [BUGFIX] Remove unwanted attributes in metatags (Commit 8fe15ad2 by Georg Ringer)
2018-01-29 [BUGFIX] Use tstamp for last modification in sitemap (Commit e2cd8dfd by Georg Ringer)
2018-01-24 [DOC] Use correct version (Commit 24a5272c by Georg Ringer)

This list has been created by using git log 6.2.1..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

6.2.1- 2018/01/24

This release makes the extension compatible with PHP 5.6 again

All Changes

This is a list of all changes in this release:

2018-01-24 [BUGFIX] Make code PHP 5.6 compatible (Commit 214a4db5 by Georg Ringer)
2018-01-23 [DOC] Should be "features" instead of "feature" (#539) (Commit 8c7e1e2d by lechenbauer)
2018-01-23 [TASK] Use datetime instead of crdate for sitemap (Commit fbf2ec59 by Georg Ringer)

This list has been created by using git log 6.2.0..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

6.2.0 - 2018/01/23
Important changes
Avoid duplicate page titles in pagination

A pagination information (“Page 3 of 9”) is added to the page title to avoid duplicate page titles.

Removal of a ViewHelper

The ObjectViewHelper has been removed.

All Changes

This is a list of all changes in this release:

2018-01-23 [TASK] Check mod.web_list.allowedNewTables/deniedNewTables in admin module (#248) (Commit 9efa4d37 by Marc Bastian Heinrichs)
2018-01-23 [TASK] Respect overwriteDemand parameters on menu creation (#439) (Commit 9cb38263 by Oliver Baran)
2018-01-23 [TASK] Allow limit and offset for tags (#497) (Commit 0e2e2fa9 by Steffen Kamper)
2018-01-23 [FEATURE] Disable Localization in backend module via TSConfig (#420) (#421) (Commit 5e0541f2 by ayacoo)
2018-01-23 Apply fixes from StyleCI (#537) (Commit 8a3122a0 by Georg Ringer)
2018-01-23 [BUGFIX] Check tablenames in mm queries (Commit 1cb623ca by Georg Ringer)
2018-01-23 [BUGFIX] Set cHash also in workspace mode (Commit f5290765 by Georg Ringer)
2018-01-23 [BUGFIX] Fix failing test (Commit bb12a525 by Georg Ringer)
2018-01-22 [DOC] Add linkhandler info (Commit 02de4016 by Georg Ringer)
2018-01-22 [TASK] Add tstamp & crdate fields to TCA for fluid (Commit f9c1222a by Georg Ringer)
2018-01-22 [TASK] Make 2 VH compatible with 9 (Commit 2edb20d3 by Georg Ringer)
2018-01-22 [TASK] Replace ... with  (Commit e349354a by Georg Ringer)
2018-01-22 [TASK] Make PaginateVh 9 compatible (Commit 8b53482f by Georg Ringer)
2018-01-22 [DOC] Improve module vhs example (Commit 345e54a8 by Georg Ringer)
2018-01-22 [DOC] Improve doc example for ical rendering (Commit edc31bf7 by Georg Ringer)
2018-01-22 Validated output for List.xml (#457) (Commit ab01a824 by Dandy Umlauft)
2018-01-22 [BUGFIX] Add missing counter increment #524 (Commit e75bab78 by Georg Ringer)
2018-01-19 [DOC] Add snippet for cHash in preview links (Commit de0eec81 by Georg Ringer)
2018-01-19 [BUGFIX] Change invalid HTML of time tag (Commit 9b795285 by Georg Ringer)
2018-01-19 [TASK] Change license in composer.json (Commit 19ab9ad1 by Georg Ringer)
2018-01-19 [BUGFIX] Fix spelling (#519) (Commit ce0bcf39 by Michael Stucki)
2018-01-17 Feature/php56 (#517) (Commit 436e2c5d by Georg Ringer)
2018-01-16 [FEATURE] Split search words (Commit 47629cc1 by Georg Ringer)
2018-01-16 [TASK] Revert travis changes (Commit 557b6924 by Georg Ringer)
2018-01-16 [FEATURE] Avoid duplicate title for pagination (Commit 7d9b3dc0 by Georg Ringer)
2018-01-16 [TASK] Respect type in sitemap (Commit 277966b8 by Georg Ringer)
2018-01-16 [TASK] Raise testing-framework version (Commit 0f9cc40b by Georg Ringer)
2018-01-16 [DOC] Improve documentation snippet (Commit a4d11b02 by Georg Ringer)
2018-01-16 Apply fixes from StyleCI (#511) (Commit b684e4c7 by Georg Ringer)
2018-01-16 [TASK] Migrate SitemapGenerator todoctrine (Commit 699ff734 by Georg Ringer)
2018-01-16 [TASK] Remove PHP 5.5 from travis tests (Commit 0e41c332 by Georg Ringer)
2018-01-16 [TASK] Remove phpcs fixes in favor of styleci (Commit 808ace42 by Georg Ringer)
2018-01-16 [BUGFIX] Fix failing test in NewsRepositoryTest (Commit 3beba818 by Georg Ringer)
2018-01-16 [BUGFIX] Remove deprecated usage of buildQueryParametersPostProcess (Commit a2a585a4 by Georg Ringer)
2018-01-16 [BUGFIX] Use proper navigationComponentId for 9+ (Commit 81d6b2f1 by Georg Ringer)
2017-12-17 [TASK] Use $GLOBALS['SIM_EXEC_TIME'] for building queries (Commit b5c87806 by Georg Ringer)
2017-12-17 [TASK] Remove unused palettes (Commit fa7f38ac by Georg Ringer)
2017-12-17 Apply fixes from StyleCI (#491) (Commit 858e3abd by Georg Ringer)
2017-12-17 [TASK] Document related variants in template (Commit 9c638a2f by Georg Ringer)
2017-12-17 [BUGFIX] Make option list.paginate.prevNextHeaderTags work (#481) (Commit 9dcbff50 by Christian Futterlieb)
2017-12-17 Change datatype for tag in newsDemand to string (#483) (Commit cc9f0793 by Torben Hansen)
2017-12-17 fix search by percent or underscore (#486) (Commit a4cde7d4 by Esteban Marin)
2017-12-05 [TASK] Hide shariff namespace (Commit 93e1b60f by Georg Ringer)
2017-11-21 Fixed Typo (#456) (Commit cb98c935 by Fritz the Cat)
2017-11-21 [TASK] Let it work with 9 (Commit 9c920f19 by Georg Ringer)
2017-11-21 [BUGFIX] Fix category usage in Sitemap generator (Commit cac5cd8f by Georg Ringer)
2017-11-21 [TASK] Use sorting column in ItemsProcFunc (Commit d9a1aa96 by Georg Ringer)
2017-11-06 Fix PHP Notice in ext_localconf.php (#458) (Commit a8e68933 by Tymoteusz Motylewski)
2017-10-26 Apply fixes from StyleCI (#453) (Commit a9350093 by Georg Ringer)
2017-10-26 [FEATURE] Get translated content element id list (Commit 574d93e8 by Georg Ringer)
2017-10-26 Apply fixes from StyleCI (#452) (Commit 9f3e4c0d by Georg Ringer)
2017-10-26 [TASK] Migrate AdministrationController to Doctrine (Commit ecc3af5c by Georg Ringer)
2017-10-26 [TASK] Remove not needed test (Commit ef33512a by Georg Ringer)
2017-10-26 [TASK] Use FAL API in AbstractImportService (Commit 0e32944e by Georg Ringer)
2017-10-26 [TASK] Migrate ItemsProcFunc to Doctrine (Commit b71bf638 by Georg Ringer)
2017-10-26 [TASK] Remove unused methods (Commit 266154aa by Georg Ringer)
2017-10-26 [TASK] Remove unused getter of DatabaseConnection (Commit 13fa94da by Georg Ringer)
2017-10-26 [!!!][TASK] Remove ObjectViewHelper (Commit 2061386e by Georg Ringer)
2017-10-26 Remove incorrect closing bracket (#446) (Commit e5a13dba by Boris Schauer)
2017-10-01 Update Index.rst (#429) (Commit f908c159 by Stefan Isak)
2017-09-27 [BUGFIX] Re-enable settings.detailPid in selectedList's flexform (#436) (Commit ab55ea71 by Rémy DANIEL)
2017-09-22 [BUGFIX] #357 Add tt_content ctype labels to pagelayoutview to get rid of error message (#432) (Commit bb050b02 by Kevin Purrmann)
2017-09-18 Update Readme.md (Commit 2fd3f1eb by Georg Ringer)
2017-09-13 Moved XML-NameSpace-declaration from div- or span-tags into separate html-tags to achieve valid HTML5 output (#415) (Commit 226951a5 by Sebastian Wolfertz)
2017-09-13 [TASK] Changing PhpDoc type for tsstamp (#418) (Commit 3eca0e57 by Thomas Deuling)
2017-09-12 Some minor fixes (#423) (Commit 5f81c827 by Cedric Ziel)
2017-09-11 [TASK] Remove unnecessary else branch (#422) (Commit 906cd336 by Cedric Ziel)

This list has been created by using git log 6.1.1..HEAD –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

6.1.1 - 2017/09/06

This version is the same as 6.0.0 but because of a TER security incident (https://typo3.org/teams/security/security-bulletins/psa/typo3-psa-2017-001/) a reupload has been required.

6.1.0 - 2017/08/31

After a far too long time I managed to get a release out again. 6.1. is compatible with 7.6 LTS and 8 LTS and also supports the development version of 9 as long as the extension typo3db_legacy is installed.

Important changes
Add a new action “selectedList”

A new action makes it possible to render a list of custom selected news items. An editor can choose any amount of news records which are shown in the provided order.

The following changes are worth mentioning.

Configurable filters for the administration module

By using TsConfig it is now possible to hide filters in the administration module. The full configuration is:

tx_news.module {
    filters {
        searchWord = 1
        timeRestriction = 1
        topNewsRestriction = 1
        hidden = 1
        archived = 1
        sortingField = 1
        number = 1
        categories = 1
        categoryConjunction = 1
        includeSubCategories = 1
    }
}
Page data to fluid templates

Every frontend fluid template can now access the full row of the current page by checking the variable pageData. As an example you will get the page title by using pageData.title.

All Changes

This is a list of all changes in this release:

2017-08-28 [TASK] Added add/remove function for tag in news model (#402) (Commit 15e396d by Torben Hansen)
2017-08-24 FIX: typo (#407) (Commit 66a11fd by Philipp Kitzberger)
2017-08-24 FIX: typo (#408) (Commit 0ef6f52 by Philipp Kitzberger)
2017-08-09 SimplePrevNextViewHelper with custom sortField doesn't work (#399) (Commit 35494ed by ayacoo)
2017-08-09 [BUGFIX] Preserve labels for CMS 9 (Commit 4db7d4d by Georg Ringer)
2017-08-08 [FEATURE] Make it possible to hide filters in backend module (#381) (Commit 9d88629 by Shakeshake)
2017-08-08 [TASK] Move TCA to correct file (Commit b46d7df by Georg Ringer)
2017-08-08 [DOC] Example how to migrate realurl alias (Commit 89e418f by Georg Ringer)
2017-08-08 [DOC] Followup (Commit 60d3449 by Georg Ringer)
2017-08-08 [DOC] Fix Category page (Commit b8a7a77 by Georg Ringer)
2017-08-08 [DOC] Fix wrong syntax (Commit 15deb4d by Georg Ringer)
2017-07-26 [BUGFIX] Fix wrong path for Rss feed configuration (#319) (Commit 6a997bc by Martin Hummer)
2017-07-25 [TASK] Fix small typo in news controller (#366) (Commit c83f7d8 by ayacoo)
2017-07-25 [TASK] Add a title attribute to the label (#359) (Commit a5d4d30 by Daniel)
2017-07-25 [BUGFIX] Re-Enable image cropping tool for fal_media in TYPO3 8.7 (#362) (Commit 3b6f6e5 by Torben Hansen)
2017-07-25 Fix indentation inconsistency (#370) (Commit 3a41f6b by Jan Nils Ferner)
2017-07-25 [DOC] Add missing inject annotation in example (Commit cf70cf9 by Georg Ringer)
2017-07-15 [TASK] Make the ObjectViewHelper work with CMS9 (Commit 4a6aa84 by Georg Ringer)
2017-07-14 [FEATURE] Add page data to fluid templates (Commit 0e0204c by Georg Ringer)
2017-07-14 [TASK] Fix typo in NewsController (#380) (Commit 8d633c0 by Shakeshake)
2017-07-14 Fix mixed up type numbers (#378) (Commit 3263050 by diego)
2017-07-14 [TASK] Fix emconf issues (#379) (Commit f288f3f by Shakeshake)
2017-07-11 [BUGFIX] Fix wrong fluid inline syntax in List.xml (#374) (Commit 3767f6e by Armin Vieweg)
2017-07-11 [BUGFIX] Fix typo in List.xml template (#373) (Commit d524a1a by Armin Vieweg)
2017-07-03 Apply fixes from StyleCI (#367) (Commit a1159b9 by Georg Ringer)
2017-06-29 [FEATURE] Make showing thumbnails configurable (Commit 6669043 by Georg Ringer)
2017-06-29 [TASK] Disable xdebug in travis (Commit a708dc5 by Georg Ringer)
2017-06-27 [BUGFIX] Don't show warning in CE preview (Commit 4988121 by Georg Ringer)
2017-06-27 [TASK] Register "insert records" in TCA overrides file (#354) (Commit 84b35fe by Markus Klein)
2017-06-26 [BUGFIX] Exclude html ctype from IRRE preview (Commit b42a0f3 by Georg Ringer)
2017-06-14 Apply fixes from StyleCI (#353) (Commit ea9881b by Georg Ringer)
2017-06-14 [TASK] Change version to 6.1.0-dev (Commit 1cbc9fa by Georg Ringer)
2017-06-13 [BUGFIX] Resolve EXT: in path to error template (Commit 04bf045 by Georg Ringer)
2017-06-13 [DOC] Example of category menu with TS (Commit 81fdce1 by Bernd Wilke)
2017-06-13 [BUGFIX] Fix wrong evaluation in IfIsActiveVh (Commit 2440fbc by Georg Ringer)
2017-06-09 [TASK] Show selected news in page layout view (Commit 587d753 by Georg Ringer)
2017-06-07 [BUGFIX] Fix path to icon label in admin module (Commit 4477011 by Georg Ringer)
2017-05-30 [FIX] Set correct outdated viewhelpers (#340) (Commit 81db33f by misterboe)
2017-05-29 [BUGFIX] Fix a typo in the 6.0.0 changelog (#339) (Commit faa69cc by Stephan Brun)
2017-05-23 [TASK] Allow PHP 5.6 again (Commit 1bc43d0 by Georg Ringer)
2017-05-22 [FEATURE] Add a new view "selectedList" (Commit 961f5f8 by Georg Ringer)
2017-05-16 [DOC] Add missing namespace (#326) (Commit 25f2c77 by misterboe)
2017-05-16 [TASK] CHeck if tokenizer is available #325 (Commit 9e3f912 by Georg Ringer)
2017-05-08 [TASK] Update tests on GitLab ci (#322) (Commit 2ed604a by Jan Kiesewetter)
2017-05-02 [BUGFIX] Always provide category and tag values for list signal (#318) (Commit 0a218a3 by Benjamin Kott)
2017-05-02 Fix documentation about updateFlexforms hook (#294) (Commit a439613 by Markus Poerschke)
2017-05-02 [BUGFIX] Don't extend pid list for startingpoint=-1 (#272) (Commit 6cd1b79 by Georg Tiefenbrunn)
2017-05-02 [TASK] Mark import command as cli only (Commit 505b42f by Georg Ringer)
2017-05-02 [FEATURE] Filter internal & external news in pagination (Commit d552a61 by Georg Ringer)
2017-05-02 Import service fix (#303) (Commit b9f0e1d by John)
2017-05-02 Added missing namespace in Social VH (#284) (Commit 1aa3bc0 by cvisys)
2017-05-02 Corrections in changelog (#313) (Commit 46ebd1f by Gerhard Rupp)
2017-04-24 [BUGFIX] Fix flexform category restriction FormDataProvider (#312) (Commit c624294 by Josef Glatz)
2017-04-21 [DOC] Update changelog (Commit 4ff1bf8 by Georg Ringer)
2017-04-21 [TASK] Prepare 6.0.0 release (Commit 637ccf6 by Georg Ringer)
2017-04-12 Apply fixes from StyleCI (#300) (Commit aa34868 by Georg Ringer)
2017-04-12 Use nimut/testing-framework (#296) (Commit 1327f25 by Nicole Cordes)
2017-04-12 [BUGFIX] Use correct class in PageLayoutViewTest (Commit ae1c37a by Georg Ringer)
2017-04-10 [BUGFIX] Remove wrong char (Commit f8d05b0 by Georg Ringer)
2017-04-10 [BUGFIX] Add caseinsensitive security check for overwriteDemandObject (Commit ee7b252 by Georg Ringer)
2017-04-06 Apply fixes from StyleCI (#291) (Commit 6ce56b7 by Georg Ringer)
2017-04-06 [BUGFIX] Use correct TCA for fal_media overrideChildTca (Commit 3cebb32 by Georg Ringer)
2017-04-05 Added missing namespace (#286) (Commit ff576cd by cvisys)
2017-04-05 Added missing namepace (#285) (Commit 41351ec by cvisys)
2017-03-25 [DOC] Improve  docs for ical #278 (Commit 3ca73b7 by buxit)
2017-03-25 [BUGFIX] Outcomment _LOCAL_LANG example (Commit e6c4e85 by Georg Ringer)

This list has been created by using git log –since=”2017/03/21” –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

6.0.0 - 2017/21/03

Finally 6.0.0 has been released which supports both current LTS versions, 7.6 LTS and 8 LTS.

Important changes

The following changes might be important for your installation.

Version dependency 7.6.13+ or 8.5+

To improve the performance and code quality, at least TYPO3 7.6.13 or 8.5. are required.

Deprecate ViewHelpers for Facebook, Google+, Twitter

The following ViewHelpers have been deprecated:

  • <n:social.facebook.like />
  • <n:social.facebook.comment />
  • <n:social.googlePlus />
  • <n:social.twitter />

The ViewHelpers will be removed with the version 7.0.0.

Install & configure the extension rx_shariff which takes care of the privacy of your users!

Renaming of partials

The following partials have been renamed

  • Detail/FalMediaContainer to Detail/MediaContainer
  • Detail/FalMediaImage to Detail/MediaImage
  • Detail/FalMediaVideo to Detail/MediaVideo
Error message if news not found

While rendering a detail view and a news record is not found anymore (e.g. because it has been deleted or set to hidden) an error message is now shown instead of an exception. This has been achived by setting the following default TypoScript:

plugin.tx_news.settings.detail {
        errorHandling = showStandaloneTemplate,EXT:news/Resources/Private/Templates/News/DetailNotFound.html,404
}

To achieve the previous behaviour, use

plugin.tx_news.settings.detail {
        errorHandling = pageNotFoundHandler
}
Check width & height set in Flexform

Hint

This change is only relevant to you if you are using the default templates for the List view.

Width and height of images can be set in the plugin. Previously those values have not been used in the templates but they are used now.

<f:image image="{mediaElement}" title="{mediaElement.originalResource.title}" alt="{mediaElement.originalResource.alternative}" maxWidth="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.maxWidth)}" maxHeight="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else: settings.list.media.image.maxHeight)}"/>
Improved Administration module

The administration module recived again some more love!

The link in the administration module to toggle the filter form has been moved to the toolbar.

img-admin-module-filter

Furthermore the template has been improved to work on smaller screens.

Disable override demand default on

The checkbox Disable override demand in the plugin is now by default enabled.

Features

List of all features.

Provide filter by type

The NewsDemand class got a new property types which can be used to filter the returned news records by its type.

Ajax Pagination

The templates and documentation has been enhanced to make it easy to use AJAX for the pagination. Thanks to Helmut Hummel who provides the awesome extension typoscript_rendering which is used for it.

Add enclosure tag to deliver images in the stream

The List.xml template which is used for RSS feeds is enhanced with the enclosure tag which provides the url to the first preview image.

Add ViewHelper to display media files inline

Using images in the RTE is often loved by editors and disliked by integrators and developers. With this version, a mixture is available which can satisfy all users.

By using the RenderMediaViewHelper in the templates, an editor can now place the keyword [media] in the RTE which are replaced by media elements saved in the FAL relation.

Benefits:

  • An editor can place images and media elements where he wants
  • The relation is safed in a safe manner
  • The media elements can later be still modified
Improved content element relations

To improve the usability of content elements added to a news item, the preview in the backend is enhanced by rendering the content elements as in the page module.

img-content-element-relation

Support for EXT:guide

The extension guide shows guides to editors and makes it easy to explain features. A guide for the administration module has been added

img-admin-module-guide

Improved Import module

The import module has been rewritten:

  • Use requireJS
  • Use jQuery instead of ExtJS
  • Use bootstrap for the forms
  • Use a callout for the backup info
Simplify getters for FAL fields

Add easier names for the getters of fields to FAL. As the non-FAL fields have been removed, the simplified getters have been reactivated to fetch the FAL fields. This makes the templates far easier to read.

  • newsItem.falMedia => newsItem.media
  • newsItem.falMediaPreviews => newsItem.mediaPreviews
  • newsItem.falMediaNonPreviews => newsIten.mediaNonPreviews
  • newsItem.firstFalImagePreview => newsItem.firstPreview
  • newsItem.falRelatedFiles => newsItem.relatedFiles
All Changes

This is a list of all changes in this release:

2017-04-21 [TASK] Prepare 6.0.0 release (Commit 637ccf6 by Georg Ringer)
2017-04-12 Apply fixes from StyleCI (#300) (Commit aa34868 by Georg Ringer)
2017-04-12 Use nimut/testing-framework (#296) (Commit 1327f25 by Nicole Cordes)
2017-04-12 [BUGFIX] Use correct class in PageLayoutViewTest (Commit ae1c37a by Georg Ringer)
2017-04-10 [BUGFIX] Remove wrong char (Commit f8d05b0 by Georg Ringer)
2017-04-10 [BUGFIX] Add caseinsensitive security check for overwriteDemandObject (Commit ee7b252 by Georg Ringer)
2017-04-06 Apply fixes from StyleCI (#291) (Commit 6ce56b7 by Georg Ringer)
2017-04-06 [BUGFIX] Use correct TCA for fal_media overrideChildTca (Commit 3cebb32 by Georg Ringer)
2017-04-05 Added missing namespace (#286) (Commit ff576cd by cvisys)
2017-04-05 Added missing namepace (#285) (Commit 41351ec by cvisys)
2017-03-25 [DOC] Improve  docs for ical #278 (Commit 3ca73b7 by buxit)
2017-03-25 [BUGFIX] Outcomment _LOCAL_LANG example (Commit e6c4e85 by Georg Ringer)
2017-03-13 constant settings are in plugin.tx_news (#279) (Commit 5dff3d1 by buxit)
2017-03-10 [TASK] adapt db field type for inline relation (#275) (Commit 4ff7a23 by jokumer)
2017-03-09 [FEATURE] Provide page id in paginationController (Commit 698de39 by Georg Ringer)
2017-03-08 [TASK] Cleanup controllers (Commit dab8e36 by Georg Ringer)
2017-03-07 [TASK] Check $tags for being a string (Commit 3a48f62 by Georg Ringer)
2017-03-06 [DOC] Fix example for rss.channel.language (#276) (Commit 0aba9e0 by Michael Stucki)
2017-03-01 [DOC] Improve example of ExtendFlexForms (Commit 78dc976 by Georg Ringer)
2017-02-25 [BUGFIX] Remove CompilableInterface (#266) (Commit 886ec1b by Frank Nägler)
2017-02-24 [BUGFIX] Fixed lost categories when enabling/disabling a news from list module using a non-admin BE user (#265) (Commit befa197 by Julien Henchoz)
2017-02-23 Use .svg instead of .gif in iconfile (#264) (Commit 2f36110 by Christian Kuhn)
2017-02-21 [BUGFIX] Show create new tag at first position in results (#263) (Commit e3eb106 by Markus Klein)
2017-02-17 [BUGFIX] Fix tests for 8.6 (#259) (Commit 42b21e6 by Georg Ringer)
2017-02-17 [BUGFIX] Use ContextMenu instead of ClickMenu in admin module (Commit f98593d by Georg Ringer)
2017-02-14 [FEATURE] Support tx_news.tagPid in list wizard (Commit 1c46072 by Georg Ringer)
2017-02-14 [DOC] Remove unused realurl configuration option from docs (#258) (Commit 5dced06 by Markus Klein)
2017-02-13 [BUGFIX] Use proper label for refresh button in Administration module (Commit d0697ad by Georg Ringer)
2017-02-12 [TASK] Remove old table definition in ext_tables.sql (Commit 621a5f7 by Georg Ringer)
2017-02-10 [BUGFIX] Copying news with MySQL strict mode fails (#253) (Commit f82ab6a by Oliver Hader)
2017-02-10 [TASK] Allow risky fixers for php-cs-fixer 2.0.1 (#255) (Commit e5e3d60 by Jan Kiesewetter)
2017-02-09 [TASK] Disable override demand default on (Commit 6cbc667 by Georg Ringer)
2017-02-07 [TASK] Running PHP Coding Standards Fixer checks on Travis (#245) (Commit 7260be2 by Jan Kiesewetter)
2017-02-06 [FEATURE] Add gitlab-ci configuration (#244) (Commit 2660dc8 by Jan Kiesewetter)
2017-01-31 [FEATURE] Make plugin overview nice on small columns (Commit 5f75a6a by Georg Ringer)
2017-01-26 Merge branch 'master' of github.com:georgringer/news (Commit 763f25e by Georg Ringer)
2017-01-26 [BUGFIX] Remove max config from start/endtime fields (Commit 294c825 by Georg Ringer)
2017-01-26 [TASK] Remove symlink to eventnews template (#235) (Commit cdf9b15 by Jan Kiesewetter)
2017-01-26 [TASK] Update php-cs-fixer to version 2.0 (#236) (Commit 877184a by Jan Kiesewetter)
2017-01-25 [BUGIFX] Remove upper limit in admin module (Commit c43e86e by Georg Ringer)
2017-01-24 [TASK] Show template layouts in pagelayout for any action (Commit ffd90f5 by Georg Ringer)
2017-01-24 [TASK] Reapply fixer (Commit 17ea463 by Georg Ringer)
2017-01-24 [FEATURE] Add filter for achive to admin module (Commit dae4b89 by Georg Ringer)
2017-01-24 [FEATURE] Add filter for hidden in admin module (Commit 65dbcfd by Georg Ringer)
2017-01-23 [TASK] Fix typo in docheader of CommentVH (Commit f827019 by Georg Ringer)
2017-01-22 [TASK] Avoid usage of deprecated core method (Commit 299473e by Georg Ringer)
2017-01-22 Update Index.rst (#217) (Commit 2870aa3 by Tim Maurice Bayer)
2017-01-22 [TASK] Improve user_categoryOverlay (Commit 7dec113 by Georg Ringer)
2017-01-21 [FEATURE] Add description field (Commit 507a159 by Georg Ringer)
2017-01-21 [TASK] Rename FAL partials (Commit 6fbbaf5 by Georg Ringer)
2017-01-21 [DOC] Add release notes for 5.3.2 (Commit 976002e by Georg Ringer)
2017-01-21 Apply fixes from StyleCI (#224) (Commit c600292 by Georg Ringer)
2017-01-21 [BUGFIX] Use proper button group in admin module (Commit ba55574 by Georg Ringer)
2017-01-19 [BUGFIX] add check before category restriction is added to flexforms (#220) (Commit 3cd0144 by Johannes)
2017-01-19 [BUGFIX] Check for non-empty tag or category lists (#221) (Commit 0a033f4 by Markus Klein)
2017-01-19 [TASK] Simplify getters for FAL fields (Commit 623fce9 by Georg Ringer)
2017-01-14 [TASK] Make ViewHelpers compilable, part 2 (#213) (Commit ab41ad2 by Claus Due)
2017-01-12 [TASK] Add clear icon to fields in admin module (Commit c5e3b59 by Georg Ringer)
2017-01-11 [TASK] Replace deprecated method in NewsImportService (Commit 7bb87d6 by Georg Ringer)
2017-01-11 [BUGFIX] Fix PaginateBodytextViewHelper (#212) (Commit aeac0e8 by droomdre)
2017-01-10 [DOC] Add new features to changelog (Commit 0ba1a09 by Georg Ringer)
2017-01-10 [FEATURE] Rewrite import module (Commit 8378944 by Georg Ringer)
2017-01-10 Apply fixes from StyleCI (#210) (Commit 2ce49e2 by Georg Ringer)
2017-01-10 [TASK] Add refresh button to Administration module (Commit e151596 by Georg Ringer)
2017-01-10 [BUGFIX] Show filter button only if in proper action (Commit be546a0 by Georg Ringer)
2017-01-10 Merge branch 'master' of github.com:georgringer/news (Commit 7aa1705 by Georg Ringer)
2017-01-10 [TASK] Use requireJS module for Administration module (Commit 29ecddd by Georg Ringer)
2017-01-08 [TASK] Improve TCA code (Commit a18ecd6 by Georg Ringer)
2017-01-07 [TASK] Increase category tree in flexform (Commit ab45cc6 by Georg Ringer)
2017-01-07 Merge branch 'master' of github.com:georgringer/news (Commit 2958850 by Georg Ringer)
2017-01-07 [!!!][TASK] Restrict version dependencies (Commit fd9ae2d by Georg Ringer)
2017-01-04 [DOCU] Change Vendor in code example (#203) (Commit 2c1c99b by Stefan Frömken)
2017-01-04 [BUGFIX] Exclude gridelements from advanced inline preview (Commit 9ac8056 by Georg Ringer)
2017-01-04 [FEATURE] Provide tour for EXT:guide (Commit 97adb88 by Georg Ringer)
2017-01-03 [DOC] Improve Readme in root dir (Commit 295ee40 by Georg Ringer)
2017-01-03 [TASK] Add StyleCI to Readme.md (Commit 1774b52 by Georg Ringer)
2017-01-03 [TASK] Add style ci configuration (Commit b515bb6 by Georg Ringer)
2017-01-03 Apply fixes from StyleCI (#201) (Commit 726ad6b by Georg Ringer)
2017-01-03 Merge branch 'master' of github.com:georgringer/news (Commit fcfceb5 by Georg Ringer)
2017-01-03 [TASK] Optimize administration module (Commit 69a0d83 by Georg Ringer)
2017-01-02 [TASK] Make ViewHelpers static callable (#119) (Commit 8157447 by Claus Due)
2017-01-02 [TASK] Improve category tree in administration module (Commit e43bf42 by Georg Ringer)
2017-01-02 [TASK] Use a datepicker in the administration module (Commit f7a72f1 by Georg Ringer)
2017-01-02 [DOC] Mention OpenHub in manual (Commit b9c4772 by Georg Ringer)
2017-01-02 [!!!][TASK] Raise version constraints for the core (Commit bc6aa06 by Georg Ringer)
2017-01-02 [DOC] Update documentation (Commit 870d075 by Georg Ringer)
2017-01-02 [TASK] Deprecate ViewHelpers for Facebook, Google+, Twitter (Commit c986b92 by Georg Ringer)
2017-01-02 [TASK] Use mediaTag VH also in TWB templates (Commit 89a880c by Georg Ringer)
2016-12-31 [DOC] Add documentation for upcoming release (Commit b569351 by Georg Ringer)
2016-12-30 [TASK] Move toggle link in admin module to toolbar (Commit d7ace3f by Georg Ringer)
2016-12-30 [FEATURE] Provide filter by type (Commit bed8a25 by Georg Ringer)
2016-12-29 [FEATURE] Document the AJAX pagination (Commit 572fee8 by Georg Ringer)
2016-12-29 [FEATURE] First steps for an ajax based pagination (Commit 87a63c1 by Georg Ringer)
2016-12-29 [BUGFIX] Support for compatibility6 usage (Commit 4a1defb by Georg Ringer)
2016-12-29 [TASK] Adopt license (Commit 2a012d8 by Georg Ringer)
2016-12-29 [TASK] Code cleanup (Commit 5a2590d by Georg Ringer)
2016-12-29 [FEATURE] Improved content element relations (Commit 8b09b73 by Georg Ringer)
2016-12-29 [TASK][FOLLOWUP] Return null for handleNoNewsFoundError (Commit 18fee2d by Georg Ringer)
2016-12-28 [!!!][TASK] Check width & height set in Flexform (Commit 1493d0b by Georg Ringer)
2016-12-22 [FEATURE] Error msg if news not found (Commit 80d678d by Georg Ringer)
2016-12-22 [DOC] Add sponsors to release (Commit b262ffb by Georg Ringer)
2016-12-21 [DOC] Add lightbox config of fcs as well (Commit 970ebb3 by Georg Ringer)
2016-12-21 [TASK] Remove undefined from tag search (Commit fe5f4aa by Georg Ringer)
2016-12-21 [FEATURE] add ViewHelper to display media files inline (#167) (Commit fa8340c by Johannes)
2016-12-21 [BUGFIX] Render dummy image if no FAL preview media and feature is enabled (#173) (Commit 0b297a3 by Jan Kiesewetter)
2016-12-21 [DOC] Document showContentElementsInNewsSysFolder (Commit fb3ac3d by Georg Ringer)
2016-12-21 Update .travis.yml (#191) (Commit 58a1963 by Georg Ringer)
2016-12-15 Merge branch 'master' of github.com:georgringer/news (Commit 6eb3220 by Georg Ringer)
2016-12-15 [BUGFIX] Use correct label in PageLayoutView (Commit 144fc46 by Georg Ringer)
2016-12-15 removes odd brace (#188) (Commit a0fde56 by Sascha Marcel Schmidt)
2016-12-14 [BUGFIX] Remove max config from date fields (Commit d1f893a by Georg Ringer)
2016-12-14 [FEATURE] Add enclosure tag to deliver images in the stream (#185) (Commit c631ffb by Kay Strobach)
2016-12-06 [TASK] Move call to registerPageTSConfigFile to TCA/Overrides (Commit a431f39 by Georg Ringer)

This list has been created by using git log –since=”2016/11/27” –abbrev-commit –pretty=’%ad %s (Commit %h by %an)’ –date=short.

5.3.1 - 2017/01/21
Bugfix Release

This is an important bugfix release to make the extension working with latest 8.x version.

All Changes

This is a list of all changes in this release:

2017-01-21 [TASK] Prepare release of 5.3.2 (Commit 71c04b7 by Georg Ringer)
2016-12-14 [BUGFIX] Remove max config from date fields (Commit f5a4cc8 by Georg Ringer)
2017-01-19 [BUGFIX] add check before category restriction is added to flexforms (#220) (Commit 9b3d9f2 by Johannes)
2017-01-19 [BUGFIX] Check for non-empty tag or category lists (#221) (Commit f0f91da by Markus Klein)

This list has been created by using git log --since="2017/01/01" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

5.3.1 - 2016/11/24
Bugfix Release

Just a bugfix release because of an error in the date menu.

All Changes

This is a list of all changes in this release:

2016-11-24 [TASK] Add test for the datemenu (#171) (Commit c33d801 by Georg Ringer)
2016-11-24 [BUGFIX] make datemenu work again on 7.6 (#170) (Commit cefde85 by Martin Hummer)

This list has been created by using git log --since="2016/09/23" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

5.3.0 - 2016/11/24
Thanks to

Open-Source is all about community and support! I want to thank everyone who contributed reports on forge, feedback on any channel and code!

Sponsors

Features
Improved administration module

The usability of the administration module has been improved. Examples using TsConfig

// Change the used columns
tx_news.module.columns = datetime,archive,author
// Keep the filter always open
tx_news.module.alwaysShowFilter = 1

Furthermore, a new checkbox to include subcategories in the search has been added.

CLI import

The import module can now be started using the commandline using ./typo3/cli_dispatch.phpsh extbase newsimport:run.

All Changes

This is a list of all changes in this release:

2016-11-23 [DOC] Finish documentation about using the demand object (Commit 3522e3b by Georg Ringer)
2016-11-22 [DOC] Start documentation about using the demand object (Commit 6d2ea50 by Georg Ringer)
2016-11-22 [FEATURE] Add setting to keep filter in Administration module open (Commit 868a2ed by Georg Ringer)
2016-11-14 [BUGFIX] Fix wrong arguments in PaginateBodyTextVH (Commit 6a886b3 by Georg Ringer)
2016-11-14 [TASK] Updated Preview views to list view + Updated documentation (#158) (Commit 5ab2688 by Tomas Norre Mikkelsen)
2016-11-14 [TASK] Changes how showinpreview is added to palette, it eases the possibility to extend the newsPalette (#163) (Commit da1e1ae by Tomas Norre Mikkelsen)
2016-11-14 [BUGFIX] Escape argument in f:alias VH (Commit 7c19002 by Georg Ringer)
2016-11-12 Update configuration of archiveRestriction (#150) (Commit ee346b2 by cjanody)
2016-11-12 [TASK] Use better default for news sorting in BE module (#159) (Commit 2f3156f by Markus Klein)
2016-11-12 [BUGFIX] Cast array in CategoryRepository (Commit e48a654 by Georg Ringer)
2016-11-12 [TASK] add example to link viewhelper (#162) (Commit 32d6b17 by Martin Hummer)
2016-11-08 [TASK] Adapt to breaking core hook getFlexFormDSClass (#155) (Commit 968ebca by Christian Kuhn)
2016-11-08 Update hook reference (#157) (Commit 49cced4 by Tomas Norre Mikkelsen)
2016-11-08 [BUGFIX] Use correct example in documenation (Commit 08d2436 by Georg Ringer)
2016-11-07 Merge branch 'master' of github.com:georgringer/news (Commit 509da8f by Georg Ringer)
2016-11-07 [TASK] Allow failure for 8 (Commit 20e36bc by Georg Ringer)
2016-11-05 [BUGFIX] quote non-numeric values in raw sql (#154) (Commit f2e24b5 by Martin Hummer)
2016-11-04 Merge branch 'master' of github.com:georgringer/news (Commit 0ce224e by Georg Ringer)
2016-11-04 [FEATURE] Add checkbox include subcategories in administration module (Commit 2c6779a by Georg Ringer)
2016-11-02 Docs content type (#147) (Commit 0d34b0e by Markus Klein)
2016-11-02 Update Settings.yml to newest version/release (#149) (Commit 3a3f979 by Marcus)
2016-10-28 [BUGFIX] Use correct check for prefilling author/email (Commit c2f0be9 by Georg Ringer)
2016-10-28 [TASK] Check if news is null in LinkViewHelper (Commit cffcf68 by Georg Ringer)
2016-10-28 [BUGFIX] Fix raw SQL handling for 8.4 (Commit 93aa783 by Martin Hummer)
2016-10-28 [DOC] Add custom type (#142) (Commit bc3bec8 by Martin Hummer)
2016-10-13 [TASK] Remove setting dividers2tabs (Commit a093010 by Georg Ringer)
2016-10-13 [BUGFIX] Allow link table on regular pages (Commit 7573f6b by Georg Ringer)
2016-10-10 [TASK] Add example for preselecting a select-field (#124) (Commit b5a0ae5 by Martin Hummer)
2016-10-04 [BUGFIX] remove one row class from list container (#121) (Commit dfafac0 by Johannes)
2016-10-04 [TASK] Remove scrutinizer (Commit de822ec by Georg Ringer)
2016-10-03 [TASK] Improve test suite (#118) (Commit e3426e2 by Georg Ringer)
2016-10-03 [FEATURE] Improve adminstration module (Commit a717bba by Georg Ringer)
2016-09-29 [TASK] Add check icon for settings.disableOverrideDemand (Commit dc954e5 by Georg Ringer)
2016-09-28 [BUGFIX] Fix wrong insertion of fe_group on repeated import (Commit 07344f9 by Georg Ringer)
2016-09-27 [TASK] Use correct version (Commit cee53fa by Georg Ringer)
2016-09-27 [DOC] Add chapter about import service (Commit 29735e1 by Georg Ringer)
2016-09-27 [TASK] Improve PageLayoutView and categories (Commit 32e91ce by Georg Ringer)
2016-09-27 [BUGFIX] Change error message in PageLayoutView (Commit 336002a by Georg Ringer)
2016-09-26 [BUGFIX] Remove escaping the return url (Commit 12971ed by Georg Ringer)
2016-09-25 [FEATURE] Provide import CLI call (Commit 2c5c682 by Georg Ringer)
2016-09-25 [BUGFIX] Ensure import dir exists (Commit b60a9a6 by Georg Ringer)
2016-09-24 [TASK] Add .gitattributes (Commit 13e1202 by Georg Ringer)

This list has been created by using git log --since="2016/09/23" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

5.2.0 - 2016/09/23
Thanks to

Open-Source is all about community and support! I want to thank everyone who contributed reports on forge, feedback on any channel and code!

Especially I want to thank my employer Sup7even Digital. Check out our website http://www.sup7even.digital/!

Switch to GitHub

GitHub is now used as platform for this extension. The repository has moved to https://github.com/georgringer/news. The following things are changing:

Clone

Please use now git@github.com:georgringer/news.git or https://github.com/georgringer/news.git to clone the repository.

The repository github.com/TYPO3-extensions/news has been removed!

Issues

Please create issues at https://github.com/georgringer/news/issues, as the forge project will not be used anymore in the future.

Features
PreHydrate signal for the import

A new signal slot has been added which can be used to manipulate the import data before it is actually used.

Hide the page tree for the admin module

A new option in the Extension Manager can be used to hide the page tree for the administration module. In combination with the TsConfig setting tx_news.redirectToPageOnStart = 123 this can be used to build a very simple editor interface.

All Changes

This is a list of all changes in this release:

2016-09-23 [DOC] Fix more nitpicks (Commit 01f6183 by Georg Ringer)
2016-09-23 [DOC] Fix warnings in documentation (Commit 8d374de by Georg Ringer)
2016-09-22 [FEATURE] Make it possible to hide the page tree for the admin module (Commit 402b727 by Georg Ringer)
2016-09-22 [DOC] Improve documentation (Commit e045e9f by Georg Ringer)
2016-09-22 [DOC] Add example for signal slot (Commit 84d8cab by Georg Ringer)
2016-09-22 [TASK] Update php-cs-fixer (Commit a4ab31f by Georg Ringer)
2016-09-22 [TASK] Update readme.md (Commit 93a8d4d by Georg Ringer)
2016-09-22 [DOC] Improve CONTRIBUTING.md (Commit 03be588 by Georg Ringer)
2016-09-22 [DOC] Update documentation (Commit 965e050 by Georg Ringer)
2016-09-21 [FEATURE] Provide a preHydrate signal for the import (Commit 1205d21 by Georg Ringer)
2016-09-21 Merge branch 'master' of github.com:georgringer/news (Commit b7d70f2 by Georg Ringer)
2016-09-21 [BUGFIX] Fix duplicate hook key (Commit 915f63f by Georg Ringer)
2016-09-21 [BUGFIX] Allow page translations on news storages (#103) (Commit 5efe08b by Markus Klein)
2016-09-18 [TASK] Hide current news from search for related news (Commit ee64a60 by Georg Ringer)
2016-09-16 [TASK] Hide the online part from related files (Commit 26c9c68 by Georg Ringer)
2016-09-15 [BUGFIX] Importer broken (Commit d125f62 by Gerald Aistleitner)
2016-09-15 [TASK] Improve rendering of tx_news_domain_model_news (Commit 5650585 by Georg Ringer)
2016-09-14 [TASK] Cleanup TCA (Commit a11d91f by Georg Ringer)
2016-09-13 [BUGFIX] Add missing quotes (Commit 6b460e4 by Georg Ringer)
2016-09-13 [TASK] Add missing css in admin module (Commit dc690be by Georg Ringer)

This list has been created by using git log --since="2016/09/03" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

5.1.0 - 2016/09/12
Thanks to

Open-Source is all about community and support! I want to thank everyone who contributed reports on forge, feedback on any channel and code!

Especially I want to thank my employer Sup7even Digital. Check out our new website http://www.sup7even.digital/!

Features
Category Constraints for FlexForms

The listing of categories inside a news record can be restricted by settings in the Extension Manager. The restriction can now be used in the FlexForm configuration as well by enabling it with TsConfig tx_news.categoryRestrictionForFlexForms = 1.

All Changes

This is a list of all changes in this release:

2016-09-09 [FEATURE] check category constraint in flexforms as well (Commit 4b9ac8f by Georg Ringer)
2016-09-09 [BUGFIX] Change rte transformation (Commit 52d21b7 by Georg Ringer)
2016-09-09 [TASK] Fix a typo (Commit 6ac3d28 by Georg Ringer)
2016-09-09 [BUGFIX] Use different namespace for BackendUtility in PageLayoutView (Commit 4566dfc by Georg Ringer)
2016-09-05 [BUGFIX] Provide requestUri (Commit 2d0c309 by Georg Ringer)

This list has been created by using git log --since="2016/09/03" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

5.0.0 - 2016/09/03
Thanks to

Open-Source is all about community and support! I want to thank everyone who contributed reports on forge, feedback on any channel and code!

Especially I want to thank my employer Sup7even Digital. Check out our new website http://www.sup7even.digital/!

Features
Improved plugin rendering in page module

To improve the usability of the page module regarding the news plugin, the used settings are rendered with a complete new design.

Reworked administration module

The record listing in the administration module is now based on the record listing of the list module. There are several advantages

  • See translations & workspace overlays
  • Exact same behaviour as in the list module
  • Less custom code
Full support of FAL

The full range of FAL assets can now be used, e.g. videos from youtube and vimeo and every file type which is supported by the various file renderers of the core and 3rd party extensions.

Twitter card support

Twitter supports some additional meta tags if an URL is shared. The following meta tags have been added to the the default templates:

  • <meta name="twitter:card" content="..." />
  • <meta name="twitter:site" content="..." />
  • <meta name="twitter:creator" content="..." />

All 3 can be filled by using constants.

As twitter recognizes and uses the og:image meta tags as well, those are not duplicated for twitter. If you need a fine tuning, please take a look at https://dev.twitter.com/cards/getting-started.

Support of shariff

If the extension rx_shariff (https://typo3.org/extensions/repository/view/rx_shariff) is installed, it will be used for the social sharing links instead of the custom ViewHelpers. Shariff enables website users to share their favorite content without compromising their privacy.

Thanks to Markus Klein and https://reelworx.at/ for providing this extension!

Important changes
Support for 8.3

This version fully supports TYPO3 8.3. However, if you are using the master version of TYPO3, please always use the master of news itself as well.

New icons

New svg icons are used at the following places:

  • Records (News, Tag, Link)
  • Plugin wizard
Repositioning of import module

The import module is independ from the page tree and for sure nothing what an editor should be use. Therefore it is moved into the module section “System”.

Removal of old code
Pre-FAL relations

Before FAL, EXT:news used to have custom relations to own media files and related files. Those 2 relations and all related code has been removed. This includes

  • TCA
  • Model
  • Every migration and wizard
  • Any media renderer which have been based the old relations

If you are using the FAL relations and the old ones togehter in one project, you need to migrate those records! There is no migration available or planned. Either write it on your own or get in contact with me (I can not do it for free!)

Wizards & Migrations

Every previous available wizard and migration code has been removed. This includes:

  • Migration from custom category records to sys_category
  • Migration of the tt_content relation
ViewHelpers

The following ViewHelpers have been removed:

  • <n:categoryChildren />
  • <n:falMediaFactory />
  • <n:mediaFactory />
  • <n:be.buttons.iconForRecord />
  • <n:be.buttons.icon />
  • <n:be.clickmenu />
  • <n:be.editRecord />
  • <n:be.multiEditLink />

The following deprecated ViewHelpers have been removed:

  • <n:format.date />
  • <n:format.hsc />: Use <f:format.htmlspecialchars />
  • <n:format.htmlentitiesDecode />: Use <f:format.htmlentitiesDecode />
  • <n:format.striptags />: Use <f:format.striptags />
  • <n:format.fileDownload />: Use the native implementation of FAL
  • <n:format.fileSize />: Use the native implementation of FAL

Any usage will throw an exception.

Record rendering in the page module

The rendering of news records and category records in the page module has been removed.

ClassAliasMapping

The mapping from non-namespace classes to the namespace classes has been removed.

Repositioning of the tt_content relation

The relation to content elements has been moved to a separate tab.

All Changes

This is a list of all changes in this release:

2016-09-03 [TASK] Cleanup PageLayoutView (Commit 1f7546b by Georg Ringer)
2016-09-03 [TASK] Move administration.css (Commit 9fb7da9 by Georg Ringer)
2016-09-03 [FEATURE] Improve page module (Commit 38c5be8 by Georg Ringer)
2016-09-02 [BUGFIX] Fix ajax tag creation (Commit 26eb9d0 by Georg Ringer)
2016-09-02 [TASK] Add tooltips (Commit 80e52d6 by Georg Ringer)
2016-09-02 [TASK] Move category conjunction in flexform (Commit d4cb8ec by Georg Ringer)
2016-09-02 [BUGFIX] Fix tag icon (Commit 31df957 by Georg Ringer)
2016-09-02 [DOC] Add documentation for 5.0.0 (Commit a8e770a by Georg Ringer)
2016-09-02 [TASK] Fix dev branch in composer.json (Commit 0b0a811 by Georg Ringer)
2016-09-02 [BUGFIX] Remove '.html' from layout calls (Commit 6b12b3a by Georg Ringer)
2016-09-01 [TASK] Use new icons of the core (Commit 1c89306 by Georg Ringer)
2016-08-31 [TASK] Followup for icons (Commit c4e098b by Georg Ringer)
2016-08-31 [TASK] Change travis notifications (Commit dc79319 by Georg Ringer)
2016-08-31 [TASK] Make it possible to preset search form (Commit 81542b1 by Georg Ringer)
2016-08-30 [!!!][TASK] Add new icons (Commit 81a7376 by Georg Ringer)
2016-08-29 [TASK] Add overlay icon in admin module (Commit 94341c1 by Georg Ringer)
2016-08-29 [TASK] Remove not needed icon (Commit e3b49ce by Georg Ringer)
2016-08-29 [!!!][TASK] Remove ViewHelper CategoryChildrenViewHelper (Commit 03c30e6 by Georg Ringer)
2016-08-29 [TASK] Move ViewHelper arguments to registerArgument (Commit b990351 by Georg Ringer)
2016-08-29 [TASK] Use fluent setters for NewsDemand (Commit bc6ade9 by Georg Ringer)
2016-08-29 [BUGFIX] Use propper case (Commit 10c4ffe by Georg Ringer)
2016-08-29 [TASK] Remove unused partial (Commit af5c1dc by Georg Ringer)
2016-08-29 [BUGFIX] Fix error in single view lightbox (Commit c6fd191 by Georg Ringer)
2016-08-29 [BUGFIX] Fix regression in ext_tables.php (Commit 051475f by Georg Ringer)
2016-08-29 [TASK] Fix deprecations in flexform (Commit 3e64b0b by Georg Ringer)
2016-08-29 [TASK] Fix deprecations (Commit 07ffeff by Georg Ringer)
2016-08-28 [TASK] Remove dead code in ext_tables (Commit 29de1d7 by Georg Ringer)
2016-08-28 [!!!][TASK] Move import module into 'System' (Commit d9dad89 by Georg Ringer)
2016-08-28 [BUGFIX] Use correct pid for new plugins (Commit 3c1b316 by Georg Ringer)
2016-08-28 [FEATURE] Add suggest wizard to tag setting in flexforms (Commit 34b1a34 by Georg Ringer)
2016-08-28 [TASK] Add eval 'num' to settings.cropMaxCharacters (Commit c4132f1 by Georg Ringer)
2016-08-28 [BUGFIX] Fix styling of newspidlisting (Commit 55df5f9 by Georg Ringer)
2016-08-28 [TASK] Move page icon to Configuration/TCA/Overrides/pages (Commit bff6da3 by Georg Ringer)
2016-08-26 [TASK] Enforce correct value for datefield (Commit 68cb1d6 by Georg Ringer)
2016-08-26 [TASK] Change rte configuation (Commit 0e498c5 by Georg Ringer)
2016-08-26 [TASK] Remove options autoSizeMax and allowRecursiveMode (Commit 765d12e by Georg Ringer)
2016-08-25 [TASK] Use proper ajax routing for tag generation (Commit 97a8372 by Georg Ringer)
2016-08-25 [TASK] Use new icons (Commit a2f888c by Georg Ringer)
2016-08-25 [TASK] Use font icon for the showinpreview in sys_file_reference (Commit e0e0e48 by Georg Ringer)
2016-08-25 [TASK] Improve header in PageLayoutView (Commit 424897d by Georg Ringer)
2016-08-24 [FEATURE] Improve PageLayoutView (Commit 629aa56 by Georg Ringer)
2016-08-24 [TASK] Improve rendering of starting point in page module (Commit f84b231 by Georg Ringer)
2016-08-24 [!!!][TASK] Remove unused code (Commit eb67b2c by Georg Ringer)
2016-08-24 [TASK] Adopt requirements (Commit 2260302 by Georg Ringer)
2016-08-23 [TASK] Fix breaking change of core (Commit f9fdf5a by Georg Ringer)
2016-08-18 [FOLLOWUP][BUGFIX] Use correct syntax (Commit 715c368 by Georg Ringer)
2016-08-18 [FEATURE] Render og:image:width & og:image:height (Commit 11047ab by Georg Ringer)
2016-08-16 [TASK] Prepare for extbase changes (Commit b25023a by Georg Ringer)
2016-08-14 [TASK] Remove outdated code from partial (Commit a84aaa4 by Georg Ringer)
2016-08-11 [BUGFIX] Support hrDate in google sitemap (Commit 9d249e7 by Georg Ringer)
2016-08-10 [BUGFIX] Support fluid_styled_content for insert record (Commit 1954f62 by Georg Ringer)
2016-08-10 [FEATURE] Support twitter card meta tags (Commit 78db35e by Georg Ringer)
2016-08-08 [BUGFIX] Cast type and fe_group to string for imports (Commit e82e524 by Georg Ringer)
2016-08-08 [BUGFIX] Fix error in Newsrepository (Commit 933b5e4 by Georg Ringer)
2016-08-08 [!!!][TASK] Remove be ViewHelpers (Commit 2934ef5 by Georg Ringer)
2016-08-08 [TASK] Remove not required type hints (Commit 11ef0f4 by Georg Ringer)
2016-08-02 [FEATURE] Show prev next feature flag (Commit 0780fc3 by Georg Ringer)
2016-08-02 [BUGFIX] Fix unit test (Commit fe5210e by Georg Ringer)
2016-08-01 [TASK] Rewrite SimplePrevNext (Commit e6ff250 by Georg Ringer)
2016-08-01 [!!!][TASK] Remove the FileService (Commit 3e41caa by Georg Ringer)
2016-08-01 [BUGFIX] Check if idlist is empty (Commit a0fd840 by Georg Ringer)
2016-08-01 [BUGFIX] Use l10nmode 'copy' for archive date (Commit 8e6307a by Georg Ringer)
2016-08-01 [DOC] Update readme.md (Commit d87fda6 by Georg Ringer)
2016-03-05 [FEATURE] Replace administration module news rendering (Commit 622610e by Georg Ringer)
2016-07-28 [TASK] Remove deprecated GeneralUtitlity::requireOnce()  call (Commit 9431a88 by Georg Ringer)
2016-07-28 [TASK] Cleanup TS (Commit 44ddfbf by Georg Ringer)
2016-07-28 [!!!][TASK] Remove FileDownload & FileSizeViehelpers (Commit f6299d9 by Georg Ringer)
2016-07-28 [BUGFIX] Fix ce hiding in 8 (Commit f0024c0 by Georg Ringer)
2016-07-28 [TASK] Run php-cs (Commit a8a4ded by Georg Ringer)
2016-07-28 [TASK] Replace ->getMock() in unit tests (Commit 5efb015 by Georg Ringer)
2016-07-28 [TASK] Use mockBuilder instead of mock() (Commit 425543e by Georg Ringer)
2016-07-27 [FEATURE] Suggest wizard for singleNews in flexforms (Commit bdaaa11 by Georg Ringer)
2016-07-26 [TASK] Cleanup template (Commit a6f7973 by Georg Ringer)
2016-07-26 [FEATURE] Native support for EXT:rx_shariff (Commit 8d19a01 by Georg Ringer)
2016-07-26 [BUGFIX] Use new ViewHelpers (Commit 2bd27f1 by Georg Ringer)
2016-07-26 [BUGFIX] Fix import module (Commit ed7efca by Georg Ringer)
2016-07-26 [TASK] Removal of removeListActionFromFlexforms (Commit 7f36663 by Georg Ringer)
2016-07-26 [TASK] Remove news listing in page module (Commit 6dccedc by Georg Ringer)
2016-07-26 [TASK] Remove category record rendering in page module (Commit 9a52c53 by Georg Ringer)
2016-07-26 [TASK] Migrate Fluid templates to use xml namespace declarations (Commit 2a7e63e by Markus Klein)
2016-07-26 [DOC] Add the CONTRIBUTING.md file (Commit 2ef532e by Georg Ringer)
2016-07-26 [TASK] Remove usage of FlashMessage::render (Commit d269e16 by Georg Ringer)
2016-07-25 [!!!][TASK] Remove deprecated viewhelpers (Commit b2a823c by Georg Ringer)
2016-07-25 [!!!][TASK] Use native FAL rendering for FE (Commit 2fca6de by Georg Ringer)
2016-07-25 [!!!][TASK] Remove ClassALiasMap (Commit cf04d85 by Georg Ringer)
2016-07-25 [BUGFIX] Use correct TCA (Commit 3f90194 by Georg Ringer)
2016-07-25 [TASK] Use 7.6.9 for tests (Commit 8f1c420 by Georg Ringer)
2016-07-25 [!!!][TASK] Remove pre FAL implementations (Commit 60890ba by Georg Ringer)
2016-07-25 [!!!][TASK] Remove update wizards (Commit 4c5f3cd by Georg Ringer)
2016-07-24 [!!!] Move content element relation to separate tab (Commit 13598f0 by Georg Ringer)
2016-07-24 [TASK] Remove unused property (Commit c00ed22 by Georg Ringer)
2016-07-24 [TASK] Add excludeDisplayedNews VH to Detail.html (Commit 02e506d by Georg Ringer)
2016-07-24 [BUGFIX] Fix typo in TCA (Commit e69137b by Georg Ringer)
2016-07-21 [TASK] Readd feature after changes in 8 (Commit 1e5a45f by Georg Ringer)
2016-07-19 [FOLLOWUP][FEATURE] Fix test (Commit 5776ea2 by Georg Ringer)
2016-07-19 [FEATURE] Respect targets in LinkViewHelper (Commit 3065bc6 by Georg Ringer)
2016-07-19 [FEATURE] Add categories to RSS feed (Commit f572d4f by Georg Ringer)
2016-07-19 [BUGFIX] Return only unique related news (Commit 6b63e99 by Georg Ringer)
2016-07-13 [TASK] Remove test (Commit fc1043b by Georg Ringer)
2016-07-13 [BUGFIX] Followup fix test (Commit bd0d7da by Georg Ringer)
2016-04-19 [FEATURE] SEO data for tags and categories (Commit 7d51182 by Frank Naegler)
2016-07-13 [TASK] Add shariff comment to TWB template (Commit 73f1026 by Georg Ringer)

This list has been created by using git log --since="2016/07/13" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

4.3.0 - 2016/07/13
Important changes

This release is the first one which supports also version 8.

Changed sitemap generation behaviour

For multilanguage sitemaps you need to generate a sitemap for every language by providing the parameter “L”.

All Changes

This is a list of all changes in this release:

2016-07-04 [!!!][TASK] Change language behaviour for sitemap generation (Commit b733b24 by Georg Ringer)
2016-07-04 [BUGFIX] Use correct query in SiteMapGenerator (Commit 49db71d by Georg Ringer)
2016-07-04 [TASK] Add documentation about showing hidden records (Commit 863c757 by Georg Ringer)
2016-07-04 [BUGFIX] Check date for null in LinkViewHelper (Commit f08ed97 by Georg Ringer)
2016-07-04 [TASK] Register attribute shareurl in ShareViewHelper (Commit a307a0f by Georg Ringer)
2016-07-04 [BUGFIX] Use a different name for DataHandlerCore (Commit c6325b9 by Georg Ringer)
2016-06-17 [BUGFIX] fix typoscript to reference instead of copying plugins.tx_news.settings (Commit c6b0237 by Esteban Marín)
2016-05-24 [BUGFIX] Make VHs CMS 8 compatible (Commit 44b9552 by Markus Klein)
2016-05-11 [FEATURE] Add index to tt_content (Commit 3747a1a by Georg Ringer)
2016-05-11 [BUGFIX] Fix wrong TS condition (Commit 9d9324d by Georg Ringer)
2016-04-27 [FEATURE] Hide content elements in page/list module if news sys folder (Commit 4f66675 by Georg Ringer)
2016-04-27 [BUGFIX] twitter not listed twice in rx_shariff example (Commit b80beda by Markus Klein)
2016-04-19 [TASK] Add  addQueryStringMethod="GET" to paginator (Commit 5d0309a by Frank Naegler)
2016-04-15 Revert "[BUGFIX] Set l10nmode for categories & tags to exclude" (Commit 858c6f2 by Georg Ringer)
2016-04-15 [TASK] Make it compatible with core < 8.3 (Commit ea2159e by Georg Ringer)
2016-04-13 [BUGFIX][FOLLOWUP] Fix mysql strict (Commit 38842fc by Georg Ringer)
2016-04-12 [BUGFIX] Fix strict mysql checks (Commit fee4449 by Georg Ringer)
2016-03-17 [TASK] Remove unsupported categoryRestriction (Commit 780c111 by Nicole Cordes)

This list has been created by using git log --since="2016/03/11" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short

4.2.1 - 2016/03/11
Regression release

This release contains a bugfix for the administration module

All Changes

This is a list of all changes in this release:

2016-03-09 [TASK] Remove usage of n:format.hsc (Commit b326cb5 by Georg Ringer)
2016-03-04 [BUGFIX] Fix property mapping error in admin module (Commit 6c1de6d by Georg Ringer)
4.2.0 - 2016/03/02
Sponsors

Thanks a lot to the sponsors of this release!

New features

This release contains mostly bugfixes but also some mentionable changes:

Support for dd_googlesitemap

The extension dd_googlesitemap can be used to generate sitemaps. An additional renderer can now generate sitemaps out of news records.

Predefine author

By using the PageTsConfig tx_news.predefine.author = 1 the author and the email address are prefilled in the news record by the data of the current backend user.

Important changes

The ViewHelper n:format.fileDownload has been marked as deprecated and will be removed with the next version. Instead of using this ViewHelper, just use the native implementation of FAL.

<f:for each="{newsItem.falRelatedFiles}" as="relatedFile">
        <li>
            <span class="news-related-files-link">
                <a href="{relatedFile.originalResource.publicUrl -> f:format.htmlspecialchars()}" target="_blank">
                    {f:if(condition:relatedFile.originalResource.title, then:relatedFile.originalResource.title, else:relatedFile.originalResource.name)}
                </a>
            </span>
            <span class="news-related-files-size">
                {relatedFile.originalResource.size -> f:format.bytes()}
            </span>
        </li>
</f:for>
All Changes

This is a list of all changes in this release:

2016-03-02 [TASk] Link title in admin module (Commit 3602282 by Georg Ringer)
2016-03-02 [BUGFIX] Improve admin module search form (Commit abe0784 by Georg Ringer)
2016-03-01 [BUGFIX] Set l10nmode for categories & tags to exclude (Commit d67020a by Georg Ringer)
2016-02-29 [FEATURE] Hook in NewsController::injectConfigurationManager (Commit 7ed1118 by Georg Ringer)
2016-02-26 [BUGFIX] Set checkbox to hidden in admin module (Commit 2ad8fb5 by Georg Ringer)
2016-02-26 [BUGFIX] Fix unit test for 8 (Commit 5ee1afb by Georg Ringer)
2016-02-25 [FOLLOWUP][TASK] Shariff comment in cdata (Commit 25e1ed9 by Georg Ringer)
2016-02-25 [BUGFIX] Add DatabaseTreeDataProvider provider to flexform (Commit 7a21825 by Georg Ringer)
2016-02-24 [BUGFIX] Make categories shown in strict language mode (Commit 10f9644 by Georg Ringer)
2016-02-24 [TASK] Add suggestions for other extensions to EMCONF and composer (Commit d07fd63 by Markus Klein)
2016-02-24 [TASK] Add hint for social privacy sharing option (Commit a5823d3 by Markus Klein)
2016-02-22 [BUGFIX] Check for root page in admin module > pidlist (Commit 0f52e84 by Georg Ringer)
2016-02-22 [BUGFIX] Fix overrideFlexformSettingsIfEmpty with 0 values (Commit df29968 by Georg Ringer)
2016-02-22 [FEATURE] New setting "hideIdList" (Commit 1657609 by Georg Ringer)
2016-02-22 [BUGFIX] Use fluid_styled_content constants for lightbox (Commit 691670c by Georg Ringer)
2016-02-22 [BUGFIX] Add overlay in SimplePrevNextVh (Commit 5b58cfb by Georg Ringer)
2016-02-22 [TASK] Update google+ VH to latest code (Commit ee57a20 by Georg Ringer)
2016-02-22 [!!!][TASK] Deprecate VH n:format.fileDownload (Commit d97a7aa by Georg Ringer)
2016-02-21 [TASk] Remove custom softref parser (Commit b6c3305 by Georg Ringer)
2016-02-19 [FOLLOWUP][TASK] Type cast to array (Commit f0cd847 by Georg Ringer)
2016-02-19 [BUGFIX] Preview of hidden news not working for translated news (Commit 33f00fd by Georg Ringer)
2016-02-19 [TASK] Merge $tsSettings with $settings in LinkViewHelper (Commit aa29c27 by Georg Ringer)
2016-02-19 [BUGFIX] Use standard checkbox to avoid too long url (Commit a380448 by Georg Ringer)
2016-02-19 [BUGFIX] Fix redirect in administration module (Commit 86912b4 by Georg Ringer)
2016-02-19 [FEATURE] Make date field not required (Commit 8035d42 by Georg Ringer)
2016-02-19 [BUGFIX] Use English as default translation in locallang_be.xlf (Commit 5f1accb by Georg Ringer)
2016-02-18 [BUGFIX] Add headline to twb template detail (Commit 4dc3a88 by Georg Ringer)
2016-02-14 [FEATURE] Improve backend module (Commit e26c710 by Georg Ringer)
2016-02-18 [FEATURE] Respect category restrictions in administration module (Commit c2a58b4 by Georg Ringer)
2016-02-11 [TASK] Show separator only if author is set (Commit 9d2e231 by Boris Schauer)
2016-02-16 [FEATURE] Predefine author & author_email fields (Commit 556f93a by Georg Ringer)
2016-02-15 [BUGFIX] Fix double slash in meta tag VH (Commit 7eead3b by Georg Ringer)
2016-02-14 [TASK][FOLLOWUP] Fix travis (Commit 0cf75b2 by Georg Ringer)
2016-02-14 [BUGFIX] Wrap n:be.clickmenu in f:format.raw (Commit 7bb9616 by Georg Ringer)
2016-02-14 [BUGFIX] Fix travis.yml (Commit 237e6cd by Georg Ringer)
2016-02-14 [TASK] Extend size of of date fields (Commit ba6f11b by Georg Ringer)
2016-02-14 [BUGFIX] Reference locallang_tcc.xlf file correctly (Commit ef376d5 by Georg Ringer)
2016-01-30 [FEATURE] Add news sitemap generator using dd_googlesitemap (Commit 690f200 by Georg Ringer)
2016-02-03 followup (Commit b563c87 by Georg Ringer)
2016-02-03 [BUGFIX] Fix IfIsActiveVh (Commit ba6b4d2 by Georg Ringer)
2016-01-27 [TASK] Exclude news lists from indexing (Commit 77674b5 by Jan Kiesewetter)

This list has been created by using git log --since="2016/01/27" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

4.1.0 - 2016/01/27
Outlook

In the next versions, the support for non FAL fields will be removed from the extension. This includes:

  • The relation “tx_news_domain_model_media”
  • The media renderers for Youtube, Quicktime, Videosites, Vimeo, Mp3.

All features which are still state of the art will be covered by using FAL and its features.

Important changes

This release contains mostly bugfixes but also some mentionable changes:

Support of Twitter Bootstrap

Additional templates have been added which are based on the popular framework Twitter Bootstrap. Those can be used by selecting the additional entry “News Styles Twitter Bootstrap” in the section “Include Static (from extensions)” in the template record.

By changing the following constants you can use those templates as base and add your templates on top:

plugin.tx_news {
    view.twb {
        templateRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Templates
        partialRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Partials/
        layoutRootPath = EXT:news/Resources/Private/Templates/Styles/Twb/Layouts/
    }
}
Starting Point for Categories List

The category listing action Category->list checks now the setting of the starting point.

Improved RSS feed

The RSS feed contains now the tag <enclosure> which includes the url to the preview image:

<f:if condition="{newsItem.firstFalImagePreview}">
        <enclosure url="{f:uri.image(image:'{newsItem.firstFalImagePreview}',absolute:1) -> f:format.htmlentities()}"
                length="{newsItem.firstFalImagePreview.originalResource.size}"
                type="{newsItem.firstFalImagePreview.originalResource.mimeType}"
        />
</f:if>
All Changes

This is a list of all changes in this release:

2016-01-26 [BUGFIX] PHP Warning: invalid method signature inheritance (PHP 7) (Commit 8608510 by Xavier Perseguers)
2016-01-26 [BUGFIX] LinkViewHelper is not compatible with PHP7 (Commit fd70c21 by Xavier Perseguers)
2016-01-12 [BUGFIX] Generalize class name (Commit 04c2c86 by Charles Coleman)
2016-01-19 [BUGFIX] Use correct class name (Commit 4dc5927 by Charles Coleman)
2016-01-14 [BUGFIX] Remove orphaned <span> tags (Commit 7a08668 by Charles Coleman)
2016-01-20 [TASK] Allow detailPid for datemenu action (Commit b0ade26 by Georg Ringer)
2016-01-18 [BUGFIX] Check pageInfo if valid (Commit 0828fa4 by Georg Ringer)
2016-01-17 [TASK] Add allowfullscreen to YoutubeRenderer (Commit f362479 by Georg Ringer)
2016-01-15 [BUGFIX] Replace wrapClickMenuOnIcon (Commit a04508c by Georg Ringer)
2016-01-12 [BUGFIX] Add HTML to make Disqus work for Twb style (Commit d656468 by Charles Coleman)
2016-01-12 [BUGFIX] Add HTML to make Disqus work (Commit 343a6fe by Charles Coleman)
2016-01-11 [BUGFIX] Enforce new row for each list item in case image taller than news text (Commit 063d7b6 by Charles Coleman)
2016-01-12 [BUGFIX] Follow standard capitalization practice for headers (Commit ef7429f by Charles Coleman)
2016-01-11 [BUGFIX] Balance TS braces (Commit 6519801 by Charles Coleman)
2016-01-07 [FEATURE] Starting Point for Categories List (Commit dc40a1a by Juan Manuel Verges Solanas)
2016-01-01 [BUGFIX] Use IconRegistry for ce wizard (Commit b158790 by Georg Ringer)
2015-12-20 [FEATURE] Support of Twitter Bootstrap (Commit bada000 by Georg Ringer)
2016-01-01 [BUGFIX] Replace call to deprecated ContentObjectRenderer->LOAD_REGISTER (Commit 5651978 by Georg Ringer)
2016-01-01 [BUGFIX] Fix test for simpleprevnext (Commit 13a5fd2 by Georg Ringer)
2016-01-01 [TASK] Adopt travis (Commit 0236bff by Georg Ringer)
2015-12-29 [BUGFIX] Use flushCachesInGroupByTag to flush page cache (Commit 49187b3 by Benjamin Franzke)
2015-12-08 [BUGFIX] Fix category removal (Commit 215b4aa by Georg Ringer)
2015-12-17 [BUGFIX] Remove unused legacy class from class alias map (Commit 0c93314 by Thomas Schlumberger)
2015-12-09 [BUGFIX] Respect more tags in newsrepository search (Commit c16829a by Georg Ringer)
2015-11-29 [FEATURE] Add tag enclosure to RSS feed item (Commit a9843b3 by Georg Ringer)
2015-11-28 [BUGFIX] Remove double encoding in headerbar (Commit fee4843 by Georg Ringer)
2015-11-28 [TASK] Use proper label in sys_category (Commit 5958cfb by Georg Ringer)
2015-11-27 [!!!][TASK] OverwriteDemand does not care about empty values anymore (Commit 3b7fe3f by Georg Ringer)
2015-11-21 [TASK] Fix CGL (Commit 4c320f7 by Georg Ringer)
2015-11-20 [BUGFIX] Move iconregistry to ext_localconf (Commit 618bb47 by Georg Ringer)
2015-11-19 [TASK] Travis notifications (Commit 4fdf212 by Georg Ringer)
2015-11-19 [!!!][TASK] Remove custom preview handling of records (Commit ac1478f by Georg Ringer)
2015-11-19 Revert "[TASK] Add PHP 7 for travis" (Commit 96af09f by Georg Ringer)
2015-11-19 [TASK] Add PHP 7 for travis (Commit 8d2ca36 by Georg Ringer)
2015-11-19 [BUGFIX] Fix travis matrix (Commit bf2e133 by Georg Ringer)
2015-11-19 [BUGFIX] Fix tag generation (Commit cf0cc46 by Georg Ringer)
2015-11-17 [TASK] Make use of the correct f:image properties (Commit 9f7a21d by Frans Saris)
2015-11-19 [TASK] Adopt showinpreview icon to CMS7 (Commit 2a34d4e by Georg Ringer)
2015-11-16 [BUGFIX] missing Tab label in sys_category (Commit b9afeb4 by Andreas Allacher)
2015-11-13 [BUGFIX] Class Cache Manager must work with CRLF (Commit 3bbf6f1 by Sascha Egerer)
2015-11-12 [BUGFIX] TCA correct wizard link definition (Commit b6f729c by Andreas Allacher)
2015-11-10 [TASK] Remove usage of rte_disabled (Commit bff8a30 by Georg Ringer)
2015-11-10 [TASK] Fix deprecation issues in TCA (Commit 29636d6 by Georg Ringer)
2015-11-10 [TASK] Update TCA for showIconTable (Commit 84552a6 by Georg Ringer)
2015-11-10 [TASK] Release of 4.0.0 (Commit 294df6d by Georg Ringer)
2015-11-10 [DOC] 4.0.0 Release (Commit ce12f57 by Georg Ringer)

This list has been created by using git log --since="2015/11/10" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

4.0.0 - 2015/11/10
Important changes

This release targets TYPO3 CMS 7 LTS only and follows the PSR-2 standard.

The UI has been adopted to fit the new designs of the core using svg icons.

All Changes

This is a list of all changes in this release:

2015-11-06 [CLEANUP] Remove unused use statements (Commit 783f097 by Georg Ringer)
2015-11-06 [CLEANUP] Use shorthand array syntax (Commit 5eacf26 by Georg Ringer)
2015-11-04 [CLEANUP] Clean ext_localconf/ext_tables (Commit b585659 by Georg Ringer)
2015-11-03 [TASK] Change folder icon (Commit c82e14a by Georg Ringer)
2015-11-03 [BUGFIX] Remove non existing type settings (Commit 403c9dc by Georg Ringer)
2015-10-30 [TASK] Improve TCA field sys_language_uid (Commit 7bdaa9b by Gernot Schulmeister)
2015-10-27 [TASK] Remove invalid UnitTest (Commit 0e21f2d by Georg Ringer)
2015-10-20 [BUGFIX] Unexpected count of 0 exception (Commit c8527f2 by Frank Nägler)
2015-10-14 [TASK] Use stripTags for og:description (Commit 63d7dd8 by Georg Ringer)
2015-10-14 [FEATURE] Support attribute section in LinkViewHelper (Commit f6fcfc7 by Georg Ringer)
2015-10-14 [BUGFIX] Fix fatal in PageLayout (Commit cd0eaf5 by Georg Ringer)
2015-10-14 [BUGFIX] Make extending classes work with PSR-2 (Commit 0599ca5 by Georg Ringer)
2015-10-14 [!!!][TASK] Remove CacheService (Commit 521074e by Georg Ringer)
2015-10-14 [TASK] More ::class usage (Commit 749e125 by Georg Ringer)
2015-10-14 [TASK] Remove unused code (Commit 4fa4c6e by Georg Ringer)
2015-10-14 [TASK] Move to PSR-2 (Commit e2a8b62 by Georg Ringer)
2015-10-14 [BUGFIX] Fix Category title translation in BE (Commit 031c88b by Georg Ringer)
2015-10-14 [TASK] Switch module icons to SVGs (Commit 7732446 by Georg Ringer)
2015-10-14 [TASK] Use IconRegistry for icons (Commit 3662db6 by Georg Ringer)
2015-10-14 [!!!][TASK] Improve TCA for CMS7 (Commit 7aeb07c by Georg Ringer)
2015-10-13 [TASK] Followup (Commit f296d49 by Georg Ringer)
2015-10-13 [TASK] Fix wizards in TCA (Commit 5053a77 by Georg Ringer)
2015-10-13 [TASK] Set renderType in TCA (Commit b9a0fb4 by Georg Ringer)
2015-10-13 [TASK] Fix iconFile usage (Commit 776ba7f by Georg Ringer)
2015-10-13 [TASK] Use new xlf in flexforms (Commit c4e13ad by Georg Ringer)
2015-10-13 [TASK] Use new xlf file to avoid deprecations (Commit 550c6ea by Georg Ringer)
2015-10-13 [BUGFIX] Fix clickmenu in administration module (Commit 13de967 by Georg Ringer)
2015-10-13 [BUGFIX] Fix edit links in administration module (Commit 2c78182 by Georg Ringer)
2015-10-06 [FEATURE] Use new template API (Commit 3bf96c0 by Georg Ringer)
2015-10-02 [BUGFIX] Fix namespace collision! (Commit 0765930 by Georg Ringer)
2015-10-02 [BUGFIX] Remove usage of tslib_fe name (Commit 1892021 by Georg Ringer)
2015-10-02 [BUGFIX] Fluid VH tests (Commit 4d6d156 by Georg Ringer)
2015-10-02 [TASK] Raise phpunit version (Commit 8b1ea2b by Georg Ringer)
2015-10-02 [BUGFIX] Fix functional test for sys_category (Commit 2e23dc1 by Georg Ringer)
2015-10-02 [TASK] Improve composer + travis (Commit d7a03bb by Georg Ringer)
2015-10-02 [BUGFIX] Fix test (Commit c137c6f by Georg Ringer)
2015-10-02 [BUGFIX] Fix ItemsProcFuncHook for 7.5 (Commit b656e55 by Georg Ringer)
2015-10-01 [TASK] Drop langDisable from flexform (Commit 0cdc5d1 by Georg Ringer)
2015-09-30 [BUGFIX] Prefill news records (Commit e5223c6 by Georg Ringer)
2015-09-30 [BUGFIX] Fix creation of records via admin module (Commit 1d83683 by Georg Ringer)
2015-09-30 [TASK] Use ::class (Commit aa0d41e by Georg Ringer)
2015-09-30 [TASK] Remove version checks (Commit 8d15830 by Georg Ringer)
2015-09-23 [TASK] Remove deprecated IconUtility and replace with IconFactory (Commit 19dcb37 by Frank Nägler)
2015-09-30 [TASK] Set minimum required version to 7.5 (Commit 8131b97 by Georg Ringer)

This list has been created by using git log --since="2015/09/25" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

3.2.6 - 2016/07/13
Bugfix release

This release is a bugfix release only.

All Changes

This is a list of all changes in this release:

2016-06-15 [BUGFIX] Use standard checkbox to avoid too long url
3.2.5 - 2016/03/01
All Changes

This is a list of all changes in this release:

2016-03-01 [TASK] Release 3.2.5 (Commit c1450d1 by Georg Ringer)
2016-02-22 [BUGFIX] Unexpected count of 0 exception (Commit b15b67a by Georg Ringer)
2015-12-21 [BUGFIX] Preview of hidden news not working for translated news (Commit d424699 by Lorenz Ulrich)
2016-02-16 [BUGFIX] Readd icon for import (Commit f6ee325 by Georg Ringer)
2016-02-15 [BUGFIX] Fix double slash in meta tag VH (Commit 5214eac by Georg Ringer)
2016-01-30 [FEATURE] Add news sitemap generator using dd_googlesitemap (Commit cc5b0cb by Georg Ringer)
2016-01-27 [TASK] Exclude news lists from indexing (Commit 5e05f9d by Jan Kiesewetter)
2016-01-01 [BUGFIX] Fix category removal (Commit b699f86 by Georg Ringer)
2015-12-09 [BUGFIX] Respect more tags in newsrepository search (Commit 542d92a by Georg Ringer)
2015-11-27 [!!!][TASK] OverwriteDemand does not care about empty values anymore (Commit 1eca2e9 by Georg Ringer)

This list has been created by using git log --since="2015/09/25" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

3.2.4 - 2015/09/26

This release adds the version to the composer.json file which is required for 6.x.

3.2.3 - 2015/09/25
Important changes

This release targets 6.2 LTS only! To avoid entries in the deprecation log and code duplications, EXT:news for 6.2 LTS will be developed in a separated branch called 6x.

A separate release for 7.x will follow, in the meantime, just use the master branch!

Deprecation of n:format.striptags

The ViewHelper <n:format.striptags> is deprecated. Please use the one of the core <f:format.stripTags>.

All Changes

This is a list of all changes in this release:

2015-09-25 [BUGFIX] Fix tests (Commit 67d573d by Georg Ringer)
2015-09-23 [TASK] Improve TCA for l10n_diff fields (Commit 8321a7f by Georg Ringer)
2015-09-23 [TASK] Remove icons for l10n_parent (Commit dffdfd6 by Georg Ringer)
2015-09-23 [BUGFIX] Fix broken PageLayout hook (Commit 8206721 by Georg Ringer)
2015-09-15 [BUGFIX] Exclude undelete from DataHandler hook (Commit 3c4d687 by Georg Ringer)
2015-09-11 [BUGFIX] Allow target in FalMediaImage (Commit f2d4509 by Georg Ringer)
2015-09-10 [BUGFIX] User correct default for useFal setting (Commit a405472 by Markus Klein)
2015-09-10 [BUGFIX] Revert reverted title change again (Commit 6b3b63b by Markus Klein)
2015-09-09 Revert "[BUGFIX] Revert title tag change" (Commit 9a1a28a by Georg Ringer)
2015-09-09 [TASK] Remove usage of deprecated function getPageRenderer() (Commit 08b06d5 by Frank Nägler)
2015-09-07 [FEATURE] Action and class are now available in the demand object (Commit 5d6a906 by Georg Ringer)
2015-07-17 [FEATURE] Allow overwrite the variables of the controller signals (Commit 805c0ab by Tim Lochmüller)
2015-03-20 [FEATURE] Provide a sitemap for news (Commit 179a2a5 by Jan Kiesewetter)
2015-09-07 [BUGFIX] Remove placeholder to support IE11 (Commit f9def37 by Georg Ringer)
2015-09-07 [BUGFIX] Revert title tag change (Commit 92960b7 by Georg Ringer)
2015-09-07 [BUGFIX] Fix js in suggest (Commit c457291 by Georg Ringer)
2015-09-07 [BUGFIX] Let disqus work with https (Commit 59a918c by Georg Ringer)
2015-09-07 [FEATURE] Include TsConfig for only news records (Commit ea8e4d7 by Georg Ringer)
2015-09-03 [BUGFIX] Replace old class names with new ones (Commit 7e39efe by Daniel Goerz)
2015-08-20 [BUGFIX] FileDownloadViewHelper typolink configuration error (Commit 75eaf01 by Lukas Vorlicek)
2015-08-20 [TASK] Use tag constraint in tag repository (Commit e682d25 by Georg Ringer)
2015-08-12 [TASK] Remove version from composer.json (Commit e5d027b by Marc Bastian Heinrichs)
2015-08-12 [BUGFIX] Use different namespace for BackendUtility in PageLayoutView (Commit 8b300c7 by Marc Bastian Heinrichs)
2015-07-19 [TASK] Cleanup use namespaces (Commit e4e15e3 by Georg Ringer)
2015-07-19 [BUGFIX] Fix page icon in PageLayoutView (Commit df70c42 by Georg Ringer)
2015-07-19 [!!!][TASK] Deprecate striptags viewhelper (Commit e2e0c93 by Georg Ringer)
2015-07-17 [FEATURE] Set suggest config searchWholePhrase = TRUE (Commit e7e981e by Frans Saris)
2015-07-16 [BUGFIX] Fix ClassAliasMap for the PageLayoutView (Commit f4f602c by Georg Ringer)
2015-07-15 [TASK] Skip scrutinizer (Commit 89e3a59 by Georg Ringer)
2015-07-15 [CLEANUP] @author tag (Commit 81310f4 by Markus Klein)
2015-07-15 [BUGFIX] Fix template usage in BE for 7.x (Commit f72f513 by Georg Ringer)

This list has been created by using git log --since="2015/07/15" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

3.2.1 - 2015/07/13

This release is followup release of 3.2.1.

Important changes

The following changes might change the expected behaviour in your installation.

Change template configuration

The TypoScript to define the templates, partials and layouts changed a bit. With 0 now the default fallback is defined and the constants can be used to change the template to a desired value.

plugin.tx_news {
        mvc.callDefaultActionIfActionCantBeResolved = 1

        view {
                templateRootPaths {
                        0 = EXT:news/Resources/Private/Templates/
                        1 = {$plugin.tx_news.view.templateRootPath}
                }
                partialRootPaths {
                        0 = EXT:news/Resources/Private/Partials/
                        1 = {$plugin.tx_news.view.partialRootPath}
                }
                layoutRootPaths {
                        0 = EXT:news/Resources/Private/Layouts/
                        1 = {$plugin.tx_news.view.layoutRootPath}
                }
                widget.GeorgRinger\News\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = EXT:news/Resources/Private/Templates/
        }
}
All Changes

This is a list of all changes in this release:

2015-07-13 [BUGFIX] Fix widget templates (Commit 3a2724f by Georg Ringer)
2015-07-13 [TASK] Adopt constants! (Commit 1a2233d by Georg Ringer)

This list has been created by using git log --since="2015/07/11" --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short.

3.2.1 - 2015/07/11

This release is a bugfix release to support TYPO3 CMS 7.3.

Please read this document carefully before upgrading.

Important changes

The following changes might change the expected behaviour in your installation.

Drop fe_group field in sys_category

Previously EXT:news added a field in the table of sys_category to add constraints to Frontenduser groups. However, this constraint was never evaluated in the frontend. Furthermore other extension authors might not respect this additional global constraint.

Therefore this field is removed.

Drop support of rte_enabled checkbox

If you are using TYPO3 CMS 7.3+, the checkbox “Disable RTE” is removed because the core in general doesn’t support this concept anymore.

All Changes

This is a list of all changes in this release:

2015-07-11 [TASK] Raise limits for categories & tags (Commit 500068d by Georg Ringer)
2015-07-08 [TASK] Add sorting to import service (Commit b2575ac by Georg Ringer)
2015-07-06 [BUGFIX] Load ExtJS in