RSS Output instead of page

Remove static template T3Extblog: Rss setup (t3extblog). It should only be included on a seperate rss-page.


Versions later than 5.0.0 of this extension use the TYPO3 PSR-3 logging: https://docs.typo3.org/m/typo3/reference-coreapi/9.5/en-us/ApiOverview/Logging/Configuration/Index.html

By default, all errors are logged into var/logs/typo3_t3extblog_xyz.log. When in Development application context all debug and notice messages will be logged too.

Feel free to adjust this as you wish. For example configure the log to include messages about blocked comments and subscriptions:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['FelixNagel']['T3extblog']['writerConfiguration'] = [
    \TYPO3\CMS\Core\Log\LogLevel::NOTICE => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFileInfix' => 't3extblog',

Add canonical tag to page header

Use following TS config:

[globalVar = GP:tx_t3extblog_blogsystem|post > 0]
        page.headerData.123 {
           wrap = <link rel="canonical" href="|">
 htmlSpecialChars = 1

 typolink {
    parameter.data = TSFE:id
    forceAbsoluteUrl = 1
    returnLast = url
    additionalParams.cObject = COA
    additionalParams.cObject {
       10 = TEXT
       10.dataWrap = &tx_t3extblog_blogsystem[controller]=Post&tx_t3extblog_blogsystem[action]=show&tx_t3extblog_blogsystem[post]={GP:tx_t3extblog_blogsystem|post}&tx_t3extblog_blogsystem[year]={GP:tx_t3extblog_blogsystem|year}&tx_t3extblog_blogsystem[month]={GP:tx_t3extblog_blogsystem|month}&tx_t3extblog_blogsystem[day]={GP:tx_t3extblog_blogsystem|day}
       10.if.isTrue.data = GP:tx_t3extblog_blogsystem|post

Does it work together with “indexed search engine”?

Yes! T3extblog works together with “indexed search engine”. Once your posts are indexed, your visitors can search through all your posts. Your sould restrict indexing to the main content (blogposts) and exclude latest posts, the categorie module etc. to get usefull results.

Can I override the basic templates?

Copy the template files (t3extblogResourcesPrivateSetLayouts +Partials +Templates) in your fileadmin or custom extension and set the path via TS or constant editor.

See Configuration for code snippets!



Make sure to install EXT:seo (package name typo3/cms-seo)!

This extension include a preconfigured setup for the TYPO3 CMS core feature sitemap which could be included as a static template. See t3extblog/Configuration/TypoScript/Sitemap/setup.typoscript for details.

Does it work with dd_googlesitemap?

Yes! Use this syntax: ?eID=dd_googlesitemap&sitemap=t3extblog&pidList=123 (where 123 is your storage folder page id). Add an optional ‘limit’ parameter for very large blogs. Example: &limit=100.


No longer support since version 5.x! Use the new core feature instead: SEO sitemap support


Since google supports RSS-Feeds, we recommend to use this solution!

Filtering tags doesn’t work?

To avoid filling the cache with not existing pages, the filter only works with tags => 3 letters.

Set default post category

Add this to the page or user TSconfig:

TCAdefaults {
        tx_t3blog_post {
                # CSV of category UIDs
                cat = 1,2,3

                # Works for other fields too!
                hidden = 0

Disable post fields

Add something similar to the page or user TSconfig:

TCEFORM.tx_t3blog_post {
        # Just some examples...
        hidden.disabled = 1
        starttime.disabled = 1
        endtime.disabled = 1

        preview_mode.disabled = 1
        preview_text.disabled = 1


Do not hide the date field as it’s needed for sorting!

Translation / Localization

Localization works like for any other TYPO3 extension:

plugin.tx_t3extblog._LOCAL_LANG {
        en {
                comment.human = Please confirm!

Adding localizations

Feel free to add new localization!

Crowdin project: https://crowdin.com/project/typo3-extension-t3extblog

More information about TYPO3 translations: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Internationalization/TranslationServer/Crowdin.html

Clear frontend cache

Since version 2.2.0 this extension makes use of cache tags. The following cache tags are available:

  • tx_t3extblog
  • tx_t3extblog_PID
  • tx_t3blog_post_uid_UID
  • tx_t3blog_post_pid_PID
  • tx_t3blog_com_pid_PID
  • tx_t3blog_cat_pid_PID

PID = page uid, UID = record uid

Cache tags are cleared by a built-in functionality when a record is modified or created in backend and frontend.

This works by adding cache tags for each page rendered with a t3extblog plugin. Each time a blog record is edited, deleted or created, this cache entry is flushed. No additional cache configuration is needed.

It’s still possible to use TS config for adjusting the cache behaviour. This could be basic configuration (see below) or using a more advanced tag approach:

# Flushes all blog related caches
TCEMAIN.clearCacheCmd = cacheTag:tx_t3extblog

# Flushes cache for all records in page with UID 123
TCEMAIN.clearCacheCmd = cacheTag:tx_t3extblog_123

Before version 2.2.0

When a frontend user adds a new comment the blogsystem plugin page cache is cleared using default TYPO3 extbase functionality.

When editing records in backend (for example posts or comments) as a non admin user the cache needs to be cleared manually or by using page TS config:

# PIDs of page which need to be cleared
TCEMAIN.clearCacheCmd = 123,456,789

The code needs to be added to the sys folder where the blog records are edited.


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

Some output tweaks


Add number of articles per category

Just add <f:count>{category.posts}</f:count> to Templates/Category/List.html. This function is expensive, so we don’t add it to the standard template files.

Detail-View (Show post)

Add prev/next-function

Link the previous / next article in the detais-view of a post. The following lines will do the job, add them in Templates/Post/Show.html

<f:if condition="{nextPost.linkParameter}">
                <f:link.action controller="Post" action="show" pageUid="{settings.blogsystem.pid}" arguments="{nextPost.linkParameter}"> &lt; {nextPost.title} </f:link.action>
<f:if condition="{previousPost.linkParameter}">
                <f:link.action controller="Post" action="show" pageUid="{settings.blogsystem.pid}" arguments="{previousPost.linkParameter}"> {previousPost.title} &gt; </f:link.action>

TYPO3 CMS legacy support

Version 7.x

Version 3.0.0 of this extension supports TYPO3 7 LTS. See this branch: https://github.com/fnagel/t3extblog/tree/3.x

Version 6.0 - 6.2

Version 3.0.0 of this extension will no longer support TYPO3 6.2 LTS. Some bugfixes and small features might be backported to this branch: https://github.com/fnagel/t3extblog/tree/2.x

Version 4.5 - 4.7

There is a legacy branch for TYPO3 4.5-4.7. It’s functional (tested in TYPO3 4.7) but needs some fixes backported. Please open an issue on GitHub if you are interested in a bugfixed 4.5 branch.

Version 0.9.1 of this extension is NOT compatible with TYPO3 4.5 or 4.7 even if TER says otherwise. You will need to use this branch: https://github.com/fnagel/t3extblog/tree/legacy