T3Extblog (T3Blog Extbase) 

Classification

t3extblog

Version

10.2

Language

en

Description

This is a TYPO3 Extbase / Fluid blog extension which aims to replace t3blog.

Keywords

blog, blogsystem, t3blog

Copyright

2026

Author

Christoph Werner, Felix Nagel

Email

info@felixnagel.com

License

This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml

Rendered

Thu, 23 Apr 2026 13:36:28 +0000

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

Table of Contents

Introduction 

Within this page

What does it do? 

A record based blog extension for TYPO3 CMS. Easy to use and packed with features. Flexible and powerful!

Currently implemented features:

General

  • Blog system with posts, categories, tags, comments and subscriptions
  • Use all TYPO3 content elements within your blog posts
  • BE Module with dashboard and lists for posts, comments and subscriptions
  • Multiple core dashboard widgets
  • Views (FE plugins): list, detail, latest, categories, tag cloud, archive, related posts, latest posts and comments
  • Filter posts by category, tag or author
  • Fields for preview text and image in list view
  • RSS feed for posts
  • Preview of hidden posts (drafts)
  • Multi language support
  • Link validator support
  • Speaking URLs support
  • Sitemap support
  • Reading time calculation
  • Menu processor for easy breadcrumb generation

Comments and subscriptions

  • Subscriptions for new comments and new blog posts
  • Wordpress like subscription manager (manage all subscriptions from a dashboard)
  • Opt-In mails for subscriptions with configurable expiration date
  • Configurable SPAM check: "I am human" checkbox, honeypot, cookie and user agent check, link count
  • Using TYPO3 core alike rate limiter implementation for throttling requests as additional SPAM check
  • Email address for comments is optional (but will be enforced if subscription checkbox is enabled)
  • Pre-fill comment author and email from session
  • Auto close comments functionality
  • Allow some HTML tags in comment message
  • GDPR / DSGVO checkboxes
  • Reasonable email sending, even when you accept comments in BE (extension module AND default list module, using TCEMAIN hooks)
  • Send HTML and / or text emails incl. support for TYPO3's FluidEmail standard

Developer related

  • Reasonable cache handling (using cache tags)
  • Default HTML markup matches Twitter Bootstrap 4 and 5
  • Using official TYPO3 localization tools (Crowdin, see https://crowdin.com/project/typo3-extension-t3extblog)
  • Using interfaces and signal / slot for easy extending
  • Supports migration from EXT:t3blog and is tested in TYPO3 6-14
  • CGL, code quality and lint (PHP, TypoScript and YAML) tests
  • Unit, functional and acceptance tests

Screenshots 

Screenshots taken from a TYPO3 CMS instance with "Introduction package" (EXT:introduction using EXT:bootstrap_package extension) and T3extblog installed.

Frontend 

Blogsystem

Blogsystem

Comment form

Comment form

Archive

Archive

Subscription Manager

Subscription Manager

Backend 

Core dashboard widgets

Core dashboard widgets

Extension module dashboard

Dashboard backend module

Post records list

Post records backend module

Quick Installation 

Target group: Integrators

Within this page

Quick installation guide 

T3Extblog can be installed quickly by using the site settings. You need to perform the following steps:

  1. Import and install the extension

    • via the extension manager
    • or using composer
  2. Include configuration (site set)

    Include the extension site set using the Sites module:

    Include site set
  3. Create a simple page structure for your blog

    At least we need a page for the actual blog and a page for the subscription manager. We recommend to create a sysfolder for your blogposts too.

    Recommended page structure for quick installation
  4. Add plugins to the pages:

    On our main blog page we insert the plugin 'Blogsystem' (see Administration manual for the other plugins we can use).

    Insert the "Blogsystem"

    On our subscription manager page, we need to add the "Subscription Manager" plugin.

  5. Configure settings in the settings module:

    Extension site set settings

    See Configuration for all possible settings.

Installation 

Target group: --Administrators--

Within this page

Installation process - step by step 

In this installation guide, we will override some values and make our blog more individual. Some steps are already described in the Quick Installation.

  1. Import and install the extension

    • via the extension manager
    • or using composer
  2. Create the following pages

    • See Quick Installation
    • Optional: add an RSS page (standard page) which will contain the RSS plugin
    • Optional: add a page (standard page) for subscribing to new blog posts
    Recommended page structure
  3. Include static TypoScript template

    This can be done on your root-page or in an extension template for a specific page.

    Minimum requirement: T3Extblog: Default Setup (needed). Do NOT include T3Extblog: RSS setup! We will need this elsewhere.

    Include static
  4. Add plugins to the pages

    • See Quick Installation
    • Optional: add the RSS plugin to your RSS page
    • Optional: add the blog subscription form plugin to the previously created page
  5. Configure settings in the constant editor module:

    Constant editor backend module

    Or use TypoScript:

  6. Start to configure your Blog. This is an TypoScript example:

    plugin.tx_t3extblog {
       settings {
          blogsystem {
             posts {
                paginate {
                   insertAbove = 1
                   maximumNumberOfLinks = 1
                }
             }
             comments {
                allowedUntil = +5 years
                approvedByDefault = 1
                subscribeForComments = 0
             }
          }
       }
    }
    module.tx_t3extblog < plugin.tx_t3extblog
    Copied!

    See Configuration for all possible settings.

Next Steps 

  1. Setup the RSS page TypoScript: RSS setup
  2. Configure speaking URLs (optional): Speaking URL configuration
  3. Copy all templates, configure the paths in TS and start adjusting the HTML markup to your needs
  4. Start blogging: Users manual.

Users manual 

Target group: Editors

General information 

You can write blog posts using the default TYPO3 CMS way: Open the folder or page you set as storagePid using the list module.

Another way to manage posts and comments is t3extblog's simple backend module. It's located in the "web" module section.

Backend module

To write a blog post, just click the plus-icon on the top.

Now you can start adding content to your blog post!

Create a blogpost 

Create blogpost

Post:

  • Author: choose the author of your blog post in a list of BE users, required
  • Title: title of your blog post, required

Preview:

  • Preview: configure a list preview for the blog post
  • There are different "Preview modes", i.e. you can add your own preview text or show the first content element

Category:

  • Select one or more categories
  • You need so select at least one category

Interactivity:

  • Configure who is allowed to comment
  • Trackback options (currently not implemented)

Metadata:

  • Add some metadata for your blog post (keywords and description text)
  • Metadata tab content is used for SEO relevant meta tags only

Content:

  • click the 'create new' button (post-tab) to add new content elements
  • You can add several content elements

Add categories 

You need to add at least one blog category to your post.

Categorize your post

Create blog categories 

Use the list module and click the button "create new record", to add categories:

Add categories

Blog administration 

The extension comes with an own backend-module. You can find it in the "web" section in the left menu. You can choose between two sections "posts" and "comments". In the comments-section all pending comments are listed. In the posts-section all posts are listed, you can add new posts by clicking the "add-icon" above. You see the number of comments too. When clicking on one of these numbers, all comments corresponding to this blog are shown.

Preview blog posts 

The extension has a preview functionality. It's possible to preview your posts before it's open to the public. Just keep the blog post hidden and use the "Save document and view page" button (at the top, next to the "Save and close record" button) within your post records.

Notification emails 

This extension comes with two types of subscriptions and there for notification emails.

New comments notification 

Admin email

Simple notification email. Sent to admin when an new comment has been created.

Subscriber opt-in email

Confirmation for new subscriber. Sent either when:

  • comment is approved by default and not SPAM or
  • comment has been approved by an admin

Notification emails

New comment notification for all subscribers. Sent if a new comment has been created when:

  • comment is approved by default and not SPAM or
  • comment has been approved by an admin

New blog posts notification 

Subscriber opt-in email

Confirmation for new subscriber. Sent when subscription is created successfully.

Notification emails

New comment notification for all subscribers. Use the provided button in BE module to start email sending.

Administrator Manual 

Target group: Administrators

Insert Plugin 

The output is managed via content modules. This means easy and flexible usage.

  1. Insert a content element, choose "Plugins" -> "General Plugin"
Insert plugin

Choose one or more of the plugins listed to build your blog. These can be distributed to different columns.

Modules

Plugins 

Blogsystem 

Main plugin of the extension. Provides post list and detail view. Enables users to create comments.

Blogsystem

Archive 

This plugin displays a list of your blog posts filtered by year, nested by month and sorted by date.

Archive

Categories 

List all blog categories including sub categories.

Tags 

Render a configurable tag cloud.

Latest Comments 

List of the latest comments. Configurable via paginate settings.

Latest Posts 

List of the latest blog posts. Configurable via categoryUid and paginate settings.

RSS Feed 

RSS output, see chapter RSS.

Subscription Manager 

This plugin manages all blog related subscriptions. All email links will point to this page. Depending on your configuration users can confirm, add and remove subscriptions for new comments and new posts.

Subscription Manager

We've already did some basic settings for this plugin in the installation process, but you should do so some more configuration.

Configure the Subscription manager via with (see /Configuration/TypoScript/Includes/Settings/SubscriptionManager.typoscript).

Blog Subscription Form 

This plugin provides a simple form which enables users to subscribe for new blog posts. Uses opt-in emails for confirmation.

Configure the Subscription manager form with TS (see /Configuration/TypoScript/Includes/Settings/BlogSubscription.typoscript).

RSS Feed 

This plugin renders a RSS feed.

The RSS-Module need some special treatment, but no need to worry. Just create a single page for the RSS-output, then:

  1. Choose the RSS plugin and insert it to that page (see above how to do this)
  2. Create an extension template and include T3Extblog: Rss setup (t3extblog)
RSS include static

When you open the page, the output should look like this:

RSS output

Have a look at /Configuration/TypoScript/RSS/setup.typoscript You can override the values by using an extension template on the page where your have insert the Rss-modul.

Preview blog posts 

The extension has a preview functionality. Add following TypoScript to your page TSconfig (where 123 is the PID of the page where the blogsystem plugin is included).

TCEMAIN.preview {
	tx_t3blog_post {
		previewPageId = 123
		useDefaultLanguageRecord = 1
		fieldToParameterMap {
			uid = tx_t3extblog_blogsystem[previewPost]
		}
		additionalGetParameters {
			tx_t3extblog_blogsystem.controller = Post
			tx_t3extblog_blogsystem.action = preview
		}
	}
}
Copied!

By default, hidden posts are only visible to authenticated backend users.

Multilanguage / Localization 

Requirements:

Working multi language TYPO3 CMS installation.

Needed steps:

  • Translate blog related page
  • Translate plugin elements
  • Translate record sysfolder
  • Translate post and category records

Email localization

All emails (post and blog subscription opt-in, new comment notify for admin and user) can be fully localized.

Target group: Administrators

Configuration 

Minimal configuration 

Make sure to setup at least the following settings (see /Configuration/TypoScript/constants.txt or /Configuration/Sets/Default/settings.definitions.yaml for more details!):

# PID of the blog sysfolder containing all blog related records
plugin.tx_t3extblog.persistence.storagePid = 456

# PID where the "Blogsystem" plugin is located
plugin.tx_t3extblog.settings.blogsystem.pid = 123

# PID where the "Subscription Manager" plugin is located
plugin.tx_t3extblog.settings.subscriptionManager.pid = 789

# E-mail address where notification mails were send to
plugin.tx_t3extblog.settings.subscriptionManager.admin.mailTo.email = mailadress@of-the-admin.tld
Copied!

General configuration 

Key prefix is plugin.tx_t3extblog.

Property Description
settings.blogName Name of your blog
settings.blogsystem All settings of your blog system, i.e. pagination, comment handling...
settings.subscriptionManager Configure the subscription process, i.e. admin email, notification email...
settings.blogSubscription Configure blog (new post) subscription form
settings.categories Some settings for the category plugin
settings.tags Some settings for the tags plugin
settings.latestPosts Some settings for the latest posts plugin
settings.latestComments Some settings for the latest comments plugin
settings.relatedPosts Some settings for the related posts plugin
settings.rss Basis rss-settings (see /Configuration/TypoScript/RSS/setup.typoscript for page config)
settings.backend Configure the backend output
settings.debug Some debug configs
settings.*.privacyPolicy.enabled Enable the privacy policy checkbox in the subscription forms
settings.*.privacyPolicy.typolink Set a typolink as the privacy policy link
lib.tx_t3extblog.date Localize date format, used within the fluid templates
lib.tx_t3extblog.month Localize month format, used within the fluid templates

Like most other extensions, settings can be overwritten via TypoScript.

Have a look at /Configuration/TypoScript/setup.typoscript and its includes (see /Configuration/TypoScript/Includes/Settings).

SPAM checks 

A comment has two additional visibility flags (besides TYPO3 default hidden and deleted flags): is approved and is spam. Comments not approved or marked as SPAM are not displayed.

Admins configure if a comment should be approved by default or always needs manual approval. In addition multiple basic SPAM checks flag every new comment as SPAM or not SPAM:

  • Simple "I am human" checkbox (no real check for bots!)
  • Honeypot fields
  • Cookie support check
  • User agent check
  • Search for links in comment text

Each of these checks has a configurable spam point value. The sum of all spam points is compared to multiple configurable threshold values in order to trigger specific actions:

  • mark comment as spam but save it anyway
  • block comment and allow user to try again
  • redirect user to a configurable page

See TypoScript for full configuration:

  • plugin.tx_t3extblog.settings.blogsystem.comments
  • plugin.tx_t3extblog.settings.blogSubscription

Speaking URLs 

This extension include a predefined setup for the TYPO3 CMS core feature speaking URL, see t3extblog/Configuration/Routes/Default.yaml for details.

Default will render URLs for blog posts like this: domain.com/page/article/2020/12/30/post-title/ but it's easy to change this by either:

  • Remove the datePrefix option completely, resulting in no date prefix in the URL:
    domain.com/page/article/post-title/
  • Use any date format string with according prefix. For example with speaking month names:
    datePrefix: 'Y/F/' and datePrefixRegex: '#^[^/]*/[^/]*/#' resulting in URLs like domain.com/page/article/2020/December/post-title/ (please note: you will need to adjust requirements.post_title to ^d{4}/p{L}{3,10}/[p{Ll}d-_]+$ in order to make this work; you might want to enable datePrefixLowercase too)

Overwrite templates 

It's possible to copy only the needed files and have a fallback.

Use the constants or change the TS setup:

plugin.tx_t3extblog {
       view {
		   # "Email/" is appended to the final template path when rendering emails
           templateRootPaths {
               20 = EXT:t3extblog/Resources/Private/Templates/
               21 = {$plugin.tx_t3extblog.view.templateRootPath}
               30 = EXT:my_theme/Resources/Private/T3extblog/Templates/
           }
           partialRootPaths {
               20 = EXT:t3extblog/Resources/Private/Partials/
               21 = {$plugin.tx_t3extblog.view.partialRootPath}
               30 = EXT:my_theme/Resources/Private/T3extblog/Partials/
           }
           layoutRootPaths {
               20 = EXT:t3extblog/Resources/Private/Layouts/
               21 = {$plugin.tx_t3extblog.view.layoutRootPath}
               30 = EXT:my_theme/Resources/Private/T3extblog/Layouts/
           }
       }
}
Copied!

FAQ 

Configure RTE 

Using TSconfig:

RTE.config.tt_content.bodytext.preset = my_rte_preset RTE.config.tx_t3blog_post.preview_text.preset = my_rte_preset

Using TCA overrides:

Create a TCA override for post records:

my_site_package/Configuration/TCA/Overrides/tx_t3blog_post.php

With this content:

$GLOBALS['TCA']['tx_t3blog_post']['columns']['content']['config']['overrideChildTca']['columns']['bodytext']['config']['richtextConfiguration'] = 'my_rte_preset';
$GLOBALS['TCA']['tx_t3blog_post']['columns']['preview_text']['config']['richtextConfiguration'] = 'my_rte_preset';
Copied!

RSS Output instead of page 

Remove static template T3Extblog: RSS setup (t3extblog). It should only be included on a separate RSS specific page.

Logging 

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',
        ],
    ]
];
Copied!

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
           }
        }
	}
[global]
Copied!

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. You should restrict indexing to the main content (blogposts) and exclude latest posts, the category module etc. to get useful 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!

Sitemap 

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 EXT: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.

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
	}
}
Copied!

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
}
Copied!

Translation / Localization 

Localization works like for any other TYPO3 extension:

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

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
Copied!

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
Copied!

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

Some output tweaks 

Category-Module 

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 detail view of a post. The following lines will do the job, add them in Templates/Post/Show.html

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

TYPO3 CMS legacy support 

Since version 6.x 

Please take a look here which branch / version suites your needs: https://github.com/fnagel/t3extblog/blob/master/README.md#installation

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

Version 1.x 

Upgrade from 1.1.x to 1.2.x 

Changelog 

https://github.com/fnagel/t3extblog/compare/1.1.0...1.2.x

  • Multi language support incl. improved BE module
  • New image and text preview fields
  • Removed ###MORE### marker support (migration update wizard is available)
  • PHP Namespaces (TYPO3 CMS 7.x compatibility preparation)
  • Support for meta tags (description, keywords, TwitterCards)
  • A lot of bugfixes
  • Removed quite a lot t3blog legacy code

###MORE### marker

This legacy functionality from t3blog was always an issue as it never worked as expected. With introducing fields for preview image and text we finally can get rid of it!

The Install Tool Wizard provided will remove the marker where needed. It will copy all text before the marker and paste it into our new previewText field. When a textpic or image content element has been found before the marker, the first of its images will be used as previewImage property.

Templating

Some post related templates and partials have been changed. Please make sure to adapt these changes in your templates.

Some major changes:

  • Now using namespaces for ViewHelpers, make sure to adjust your template references
  • ViewHelper namespace in default templates has changed. Be careful!
  • RenderPreview ViewHelper has been removed as no longer needed.

How to upgrade 

  1. "Clear all cache" in Install Tool (Important actions)
  2. Clean up DB fields by using "Compare current database with specification" in Install Tool (Important actions)
  3. Use the Install Tool Wizard if you are currently using the ###MORE### marker functionality
  4. Adjust your templates
  5. Adjust your blog post records if needed (depending on your setup)

Upgrade from 1.0.x to 1.1.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/1.0.1...1.1.0

  • Improved FlashMessage ViewHelper
  • Better localization in backend
  • Improved backend module
  • Bugfixes

How to upgrade 

Templating

Some comment related partials and code parts have been changed. Please make sure to adapt these changes in your templates.

Some backend module templates have been changed too.

FlashMessage

FlashMessage VH now extends the the Fluid default one. No more h5 and p tags, just some additional CSS classes for Bootstrap and the Fluid default ul or div mode. Note that the error partial has changed accordingly.

Make sure styling still matches your needs as the HTML is slightly different now.

Backend localization

Some backend localization keys might have changed. Please check your overriding configuration.

Upgrade from 1.0.0 to 1.0.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/1.0.0...1.0.1

  • Removed EXT:sfantispam
  • Improved documentation
  • Fix integration for EXT:dd_googlesitemap
  • Better extension and record icons
  • Bugfixes

How to upgrade 

no changes required

Upgrade from EXT:t3blog 

Please see Replace T3blog.

Version 2.x 

Upgrade from 2.2.x to 2.2.2 

Changelog 

https://github.com/fnagel/t3extblog/compare/2.2.1...2.2.2

  • Important security fix!
  • Strengthen security
  • Improve default configuration
  • Document how SPAM protection works

Breaking changes

  • Comment website url scheme is now limited to http and https only
  • Attributes for allowed tags in comments are now removed by default

How to upgrade 

  1. Run update wizard in Extension Manager to search for now invalid comment website links
  2. Fix or remove all invalid, existing comment website links (!)
  3. Please check your TypoScript configuration (SPAM protection, allowed tags, ...)
  4. Clear all caches

Upgrade from 2.2.0 to 2.2.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/2.2.0...2.2.1

  • Tested with EXT:realurl 2.x
  • Minor bugfixes for backend modules
  • Fix post preview for non-admin BE users in newer TYPO3 versions
  • Adjust TCA to match latest TYPO3 API

How to upgrade 

  1. "Clear all cache" in Install Tool
  2. Uninstall and install extension if needed (TCA issues)

Upgrade from 2.1.x to 2.2.0 

"Author improvements"

Changelog 

https://github.com/fnagel/t3extblog/compare/2.1.0...2.2.0

  • Use HTML or text files as email templates
  • Author filter for post list action
  • Show backend user (post author) avatar image (available since TYPO3 7.5)
  • New backend modules: dashboard view, list view for post and blog subscriptions
  • Use built-in image cropping (since TYPO3 7.2) for preview image
  • Greatly improved cache handling when creating new comments or editing posts in backend (no more page TS config needed!)
  • Multiple minor fixes and improvements
  • PHP 7.0 compatibility

Breaking changes

  • New TypoScript configurations for BE modules
  • Some localization keys have changed
  • Some templates have changed (mostly backend module related)
  • RealUrl configuration has been extended

How to upgrade 

  1. "Clear all cache" in Install Tool
  2. Adjust and update TypoScript configuration and template overwrites
  3. Download localizations (using the "Languages" BE module)

Upgrade from 2.0.x to 2.1.0 

This release has been sponsored by Elementare Teilchen (http://www.elementare-teilchen.de).

Changelog 

https://github.com/fnagel/t3extblog/compare/2.0.1...2.1.0

  • New major feature: Subscribe for new posts
  • Configure email template files with TypoScript
  • Some minor bugfixes and improvements
  • Documentation improvements

Subscribe for new posts

  • New plugin with simple subscription form (SPAM protected)
  • Opt-in email for new subscriber
  • Subscription management within the existing subscription manager plugin
  • Send notification emails for single posts form the BE module

See Users Manual and Administration manual for more information.

Breaking changes

  • Subscription manager TypoScript has changed:
- subscriptionManager.admin and subscriptionManager.subscriber moved to subscriptionManager.comment.*
  • subscriptionManager.admin.enable changed to subscriptionManager.admin.enableNotifications
  • subscriptionManager.subscriber.enableNewCommentNotifications changed to subscriptionManager.subscriber.enableNotifications
  • Quite some localization keys have changed (mostly subscriber and flashMessage.subscriber related)
  • Some templates have changed (e.g. changed link parameter in email templates, SPAM check partial, ...)
  • RealUrl configuration has been extended
  • Massive code refactoring (so in case you extended t3extblog, make sure to adjust your changes if needed)

How to upgrade 

  1. "Clear all cache" in Install Tool
  2. Create new DB fields by using "Compare current database with specification" in Install Tool
  3. Adjust and update TypoScript configuration, templates and localization overwrites
  4. You probably want to run the upgrade wizard in EM to mark all old posts as "notification has been sent"

Upgrade from 2.0.0 to 2.0.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/2.0.0...2.0.1

  • Bugfix for broken flash message caching in TYPO3 >= 7.3, see https://github.com/fnagel/t3extblog/issues/112
  • Bugfix for hidden or deleted BE users (author field)
  • Respect current post filter when using paginator
  • TYPO3 Link validator support

How to upgrade 

Make sure to add addQueryStringMethod = GET to all paginate TypoScript config arrays and to adopt the changes in Resources/Private/Templates/ViewHelpers/Widget/Paginate/Index.html if needed. Your RealUrl configuration needs to be updated if you're not using the auto configuration feature.

  1. "Clear all cache" in Install Tool (including Opcode caches!)
  2. Make sure to adopt TypoScript and Template changes!

Upgrade from 1.2.x to 2.0.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/1.0.0...2.0.0

  • A bunch of bugfixes
  • TYPO3 CMS 7.x support (tested up to TYPO3 7.6)
  • Removed support for TYPO3 < 6.2
  • Twitter Bootstrap 3 theme
  • New backend icons for records and module
  • New flash message proposing pages with blog records helps to find correct storage folder in backend module
  • New settings validation check in frontend and backend help to ensure proper configuration
  • Added FormError ViewHelper for easy Twitter Bootstrap form errors
  • Introduce constants for easier setup
  • Preview image now makes use of TYPO3's responsive image feature
  • Improved documentation
  • Cleaner code base and CGL improvements

Templating

Quite a few templates and partials have been changed to match Twitter Bootstrap 3. Please make sure to adapt these changes in your templates.

Responsive image rendering

T3extblog is now able to make use of TYPO3's RWD image rendering.

How to upgrade 

  1. "Clear all cache" in Install Tool (including Opcode caches!)
  2. Reload the TYPO3 backend
  3. Adjust and update all templates!

Version 3.x 

Upgrade from 3.0.1 to 3.0.2 

Changelog 

https://github.com/fnagel/t3extblog/compare/3.0.1...3.0.2

  • Migrate to use proper xml namespace declarations using html tags
  • Add new content element wizard configuration
  • Use localization for plugin titles and descriptions
  • Add link handler documentation (TYPO3 8.7 only)
  • Some minor bugfixes

Breaking changes

  • PHP 5.5 is no longer officially supported

How to upgrade 

  1. Update overwritten templates

Upgrade from 3.0.0 to 3.0.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/3.0.0...3.0.1

  • Fix documentation rendering

Breaking changes

none

Upgrade from 2.x to 3.0.0 

"TYPO3 8.x support"

Changelog 

https://github.com/fnagel/t3extblog/compare/2.0.0...3.0.0

  • Removed TYPO3 < 7.3 support - lots of legacy code has been removed!
  • Added TYPO3 8.x support and added PHP 7.1 compatibility
  • Added email layout and footer partial for easier customization
  • Updated and added new screens in documentation
  • Improved info boxes in backend modules (using default VH)
  • Add proper create user field for post records
  • Switch to PSR-2 CGL
  • Added signal / slot hooks and fixed interface implementation (see Extending T3extlog in docs)
  • Added noindex, follow meta tag in author, category and list view
  • Fix category localization
  • Fix issues with new cHashIncludePageId config and EXT:realurl 2.0.15
  • Add prev / next meta tag for paginated views
  • Add option to configure backend module date time format
  • Add option to configure author avatar image size using TypoScript
  • Add open graph meta data to blog post detail view
  • Improved documentation
  • A bunch of bugfixes

Breaking changes

  • ViewHelper changes
    • Introduced custom paginate VH
    • Removed custom flashMessages VH (use default one instead)
    • Add flashMessagesClearCache VH in Comment/New.html partial (before flashMessages VH!)
  • Changed email template configuration
    • Old plugin.tx_t3extblog.email configuration has been removed
    • Use default plugin.tx_t3extblog.view configuration instead
    • Email/ is appended to the final template path when rendering emails
    • No changes needed if default path structure has been used

How to upgrade 

  1. Make sure to fix all version 2.2.2 related security issues!
  2. Create new DB fields by using "Compare current database with specification" in Install Tool
  3. "Clear all cache" in Install Tool
  4. Use "Add current post author to cruser_id field" update script in EM
  5. You might need to reinstall the extension to rebuild class autoloading
  6. Adjust and update TypoScript configuration and template overwrites

Version 4.x 

Upgrade from 4.1.0 to 4.2.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/4.1.0...4.2.0

  • Pre-fill comment author and email field (sponsored feature, thanks to WebundWerbeWerk https://www.webundwerbe.de)
  • A few bugfixes

Breaking changes

  • none

How to upgrade 

  1. Adjust templates and configuration if needed
  2. Clear all caches

Upgrade from 4.0.x to 4.1.0 

"GDPR"

Changelog 

https://github.com/fnagel/t3extblog/compare/4.0.1...4.1.0

  • GDPR checkboxes for comment and blog post subscription form (disabled by default, see privacyPolicy constants and TS setup options) - THANKS to Kevin Ditscheid
  • Improve documentation content and configuration - THANKS to Sybille Peters and @christophbee
  • Some minor bugfixes - THANKS to Franz Kugelmann
  • Apply PHP CS Fixer

Breaking changes

  • none

How to upgrade 

  1. Use "Compare database" in install tool to add new DB fields
  2. Adjust configuration and template for GDPR checkboxes
  3. Clear all caches

Upgrade from 3.x to 4.0.0 

"Packagist support"

Changelog 

https://github.com/fnagel/t3extblog/compare/3.0.2...4.0.0

  • Extension is now available on Packagist
  • Fixed all "TCA Migrations" warnings in install tool
  • Code quality improvements
  • Use default 404 handler for hidden or deleted records
  • Add update wizard check for invalid comments (EXT:t3blog migration helper)
  • Fix SQL for using workspace and versioning
  • Some minor bugfixes

Breaking changes

  • Changed PHP class namespace
  • Changed composer package name
  • Removed support for TYPO3 7.x
  • PHP 5.6 is no longer supported

How to upgrade 

  1. Adjust your class auto loading or class overwrites to new namespace / composer package name (if needed for your setup)
  2. Use "Clear all caches including PHP opcode cache" and "Dump Autoload Information" in the install tool (if needed for your setup)
  3. Use "Compare database" in install tool to adjust changed DB fields
  4. Adjust VH namespace in your overwrite templates
  5. Clear all caches

Version 5.x 

Upgrade from 5.1.0 to 5.1.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/5.1.0...5.1.1

  • Fix issues with routing in latest TYPO3 versions
  • Improve post routing error handling
  • Some minor bugfixes and improvements

How to upgrade 

  1. Clear all caches

Upgrade from 5.0.0 to 5.1.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/5.0.0...5.1.0

  • Support for Twitter Bootstrap 4.x
  • Support for PHP 7.3
  • Support of latest TYPO3 logging functionality (PSR-3 based, see FAQ)
  • Make use of latest TYPO3 BE module menu API
  • Rework dependency injection
  • Improve documentation
  • Code clean-up (removed and replaced deprecated code usage)
  • Some minor bugfixes and improvements

Breaking changes

  • Removed support for TYPO3 < 9.4
  • Restructured some templates and partials due to TWBS4 implementation
  • Logging has changed

How to upgrade 

  1. Adjust your templates to structure change if needed
  2. Clear all caches

Please note 

Since TYPO3 9.5.15 the old post URL structure (yyyy/mm/dd/my-post-title) is possible again.

Override the routing

routeEnhancers:
  T3extblogBlogsystemPlugin:
    aspects:
      post_title:
        datePrefix: 'Y/m/d/'
Copied!

htaccess redirect

This will work for the default routing:

RewriteRule ^blog/article/(\d{4})-(\d{2})-(\d{2})-(.+)$ /blog/article/$1/$2/$3/$4 [R=301,NC,L]
Copied!

Upgrade from 4.x to 5.0.0 

"TYPO3 9.5 support"

Changelog 

https://github.com/fnagel/t3extblog/compare/4.0.0...5.0.0

  • Support for TYPO3 9.x
  • Support of new TYPO3 core routing functionality
  • Support of new TYPO3 core SEO sitemap functionality
  • Fixed all "strong" issues in the "Scan Extension Files"
  • Code clean-up (removed quite a lot legacy code and workarounds)
  • Lots of minor bugfixes and improvements

Breaking changes

  • Removed support for TYPO3 8.x
  • Post URL structure has changed (yyyy-mm-dd-my-post-title instead of yyyy/mm/dd/my-post-title)
  • Removed support for EXT:realurl
  • Removed support for EXT:dd_googlesitemap
  • Removed blogsystem.comments.allowSomeTagAttributes setting
  • Replaced RWD image TypoScript lib (whose functionality is no longer available) with default image VH
  • Rename TS and TSconfig files to newer file extensions
  • Split TS configuration into multiple files

How to upgrade 

  1. Use "Compare database" in install tool to adjust changed DB fields
  2. Run "Create missing post URL slugs" update wizard in extension manager (you might need to do this multiple times!)
  3. Run "Create missing category URL slugs" update wizard in extension manager (you might need to do this multiple times!)
  4. Add extension routing configuration to your site configuration
  5. Make sure your site configuration has an absolute URL as "Entry Point" (or base) configured (so no / but something like https://domain.com/. Otherwise TYPO3 will NOT RENDER ABSOLUTE URLs in email templates!
  6. Add a htaccess rule for redirecting old post URLs to the new one (see "URL redirect" below)
  7. Update your TS and TSconfig includes if needed
  8. Update your TS linkhandler configuration if needed
  9. Add "Sitemap setup" static TS to your template in order to enable SEO sitemap support
  10. Clear all caches

URL redirect

This will work for the default routing:

RewriteRule ^blog/article/(\d{4})/(\d{2})/(\d{2})/(.+)$ /blog/article/$1-$2-$3-$4 [R=301,NC,L]
Copied!

Please note that it is now possible to configure the URLs as you wish, even without a date!

Version 6.x 

Upgrade from 6.2.0 to 6.2.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/6.2.0...6.2.1

How to upgrade 

  1. Adjust templates and routing configuration if needed
  2. Clear caches

Upgrade from 6.1.0 to 6.2.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/6.1.1...6.2.0

How to upgrade 

  1. Make sure the new routeEnhancers.T3extblogBlogsystemPlugin.aspects.post_title.datePrefixRegex routing option is available (either by adding it you your config or by importing the default)
  2. Pull latest localization data
  3. Clear caches

Upgrade from 6.0.3 to 6.1.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/6.0.3...6.1.0

  • Pre-fill comment author and email field (see settings.blogsystem.comments.prefillFields,
    sponsored feature, thanks to WebundWerbeWerk https://www.webundwerbe.de )
  • Allow comment email address to be an optional property (see settings.blogsystem.comments.requireEmail)
  • Add items amount configuration to latest records plugins
  • Minor refactoring and improvements

How to upgrade 

  1. Adjust templates and configuration if needed
  2. Clear caches

Upgrade from 6.0.2 to 6.0.3 

Changelog 

https://github.com/fnagel/t3extblog/compare/6.0.2...6.0.3

  • Support for PHP 7.4
  • Fix some issues with MySQL 5.7 and DB mode (thanks to Philipp Kuhlmay)
  • Fix post preview functionality
  • Improve TS constants editor categories
  • Add Github action based commit message check

How to upgrade 

  1. Clear caches

Upgrade from 6.0.1 to 6.0.2 

Changelog 

https://github.com/fnagel/t3extblog/compare/6.0.1...6.0.2

  • Fix issues with routing in latest TYPO3 versions
  • Add Github action based code quality tests
  • Some minor bugfixes and improvements

How to upgrade 

  1. Clear caches

Upgrade from 6.0.0 to 6.0.1 

Changelog 

https://github.com/fnagel/t3extblog/compare/6.0.0...6.0.1

  • RSS template improvements (CGL, added item categories and image closure tags, introduce item partial)
  • Improve routing error logging
  • Some SQL and TCA clean-up
  • Some minor bugfixes and improvements

How to upgrade 

  1. Remove obsolete table in DB using "Analyze Database" in Install tool / Maintenance module
  2. Adjust your RSS templates if needed
  3. Clear caches

Upgrade from 5.1.0 to 6.0.0 

"TYPO3 10 LTS support"

Changelog 

https://github.com/fnagel/t3extblog/compare/5.1.0...6.0.0

  • Support for TYPO3 10.4 LTS
  • Support of new TYPO3 core dashboard module
  • Update and improve BE module templates and configuration
  • Make use of new table mapping configuration
  • Remove auto generated core DB fields
  • Code clean-up (removed and replaced deprecated code usage)
  • Some minor bugfixes and improvements

Breaking changes

  • Removed support for TYPO3 9.x
  • Backend module template changes
  • Reverted blog post structure change of version 5.0.0 (see upgrade guide for version 5.1)

How to upgrade 

  1. "Change fields" in DB using "Analyze Database" in Install tool / Maintenance module
  2. Adjust your BE templates to structure change if needed
  3. Clear all caches

Version 7.x 

Upgrade from 7.2.0 

"Anti SPAM"

Changelog 

https://github.com/fnagel/t3extblog/compare/7.1.0...7.2.0

How to upgrade 

  1. Enable and adjust request rate limiter configuration if needed
  2. Adjust templates with titleTag VH if needed
  3. Clear caches

Upgrade from 7.1.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/7.0.0...7.1.0

  • Add support for PHP 8.1
  • Change post content rendering to a TypoScript RECORDS approach (and removed RenderContent VH)
  • Minor improvements and bug fixes
  • Minor code clean-up

How to upgrade 

  1. Adjust post content rendering related templates if needed (see "Content rendering templates" section below)
  2. Adjust post content rendering related TypoScript (see Configuration/TypoScript/Includes/Libraries.typoscript) if needed
  3. Clear caches

Content rendering templates

You need to replace the removed <t3b:frontend.renderContent /> view helper. Please check the following templates and partials:

  • Resources/Private/Partials/Post/Content.html
  • Resources/Private/Partials/Post/RssItem.xml
  • Resources/Private/Partials/Post/Teaser.html
  • Resources/Private/TwitterBootstrap4/Partials/Post/Teaser.html

Upgrade to 7.0.0 

"TYPO3 11 LTS support"

Changelog 

https://github.com/fnagel/t3extblog/compare/6.2.0...7.0.0

  • Support for TYPO3 11.5 LTS
  • Support for PHP 8.0 and 8.1
  • Implement custom pagination (as core VH widget is no longer available)
  • Migrated EM update class to upgrade wizards
  • Lots of bugfixes and other improvements
  • Massive code clean-up and quality improvements

Breaking changes

  • Removed support for TYPO3 10.x
  • Routing and TCA has changed
  • Page URL structure has changed (my-blog/page-123 instead of my-blog/page/123)
  • Template changes
  • Some classes and methods have been renamed (be careful when extending EXT:t3extblog)

How to upgrade 

  1. "Change fields" in DB using "Analyze Database" in Install tool / Maintenance module
  2. Adjust your routing configuration (pagination has changed)
  3. Add a htaccess rule for redirecting old page URLs (see "URL redirect" below)
  4. Adjust your templates (pagination and a few other changes)
  5. Run upgrade wizards in admin tools
  6. Clear all caches

URL redirect

This will work for the pagination URL change when using the default routing:

RewriteRule ^blog/page/(\d+)/$ /blog/page-$1 [R=301,NC,L]
RewriteRule ^blog/(.*)/page/(\d+)/$ /blog/$1/page-$2 [R=301,NC,L]
Copied!

Version 8.x 

Upgrade to 8.0.2 

Changelog 

https://github.com/fnagel/t3extblog/compare/8.0.0...8.0.2

  • Fix RSS links
  • Fixes for workspaces and permissions
  • Replace deprecated core functionality
  • Some more bugfixes

How to upgrade 

  1. Clear all caches

Upgrade to 8.0.0 

"TYPO3 12 LTS support"

Changelog 

https://github.com/fnagel/t3extblog/compare/7.0.0...8.0.0

  • Support for TYPO3 12.4 LTS and PHP 8.2
  • Improved configuration checks in BE module
  • Make use of new file, datetime, email and number TCA types
  • Use new registration API for upgrade wizards, backend modules and dashboard widgets
  • Introduce PSR-14 events
  • Lots of small bugfixes and other improvements
  • Code clean-up and lots of code quality improvements

Breaking changes

  • Removed support for TYPO3 11
  • Removed support for PHP 7
  • Replaced removed core BE user model with custom one
  • Signal / Slot functionality has been removed

How to upgrade 

  1. Migrate your signal / slot extension points to PSR-14 events (optional)
  2. "Change fields" in DB using "Analyze Database" in Install tool / Maintenance module
  3. Adjust your TypoScript configuration (RSS configuration has changed)
  4. Adjust your templates if needed (FormErrors and FlashMessages partials have changed)
  5. Clear all caches

Version 9.x 

Upgrade to 9.2.0 

"Deprecation free"

Changelog 

https://github.com/fnagel/t3extblog/compare/9.1.0...9.2.0

  • Added PHP 8.4 support
  • Deprecation free (in TYPO3 v13)
  • Migrated docs to PHP rendering
  • Clean-up documentation
  • Clean-up TCA configuration
  • Some small bugfixes and improvements

Breaking changes

  • Migrated the plugin to a custom content element type

How to upgrade 

  1. Use provided upgrade wizard in "Upgrade" BE module to migrate existing plugins to content elements
  2. Use "Compare database" in install tool to adjust changed DB fields
  3. Clear all caches

Upgrade to 9.1.0 

"Site sets support"

Changelog 

https://github.com/fnagel/t3extblog/compare/9.0.0...9.1.0

  • Support for site sets
  • Support for Twitter Bootstrap 5
  • Bugfix Fluid namespace in RSS templates
  • Fix comment and post subscription delete
  • Some small bugfixes and improvements
  • Clean-up documentation

Breaking changes

  • Removed support for twitter cards

How to upgrade 

  1. Adjust Fluid namespace of RSS template and partial if overridden
  2. Adjust your templates if needed (post meta partial)
  3. Clear all caches

Upgrade to 9.0.0 

"TYPO3 13 LTS support"

Changelog 

https://github.com/fnagel/t3extblog/compare/8.0.2...9.0.0

  • Support for TYPO3 13.4 LTS and PHP 8.3
  • Replace BackendConfigurationManager override with improvements in settings service class
  • Updated images of the CMS backend in documentation
  • Categories collapsible functionality is now configurable
  • Lots of small bugfixes and replacements for deprecated core functionality
  • Code clean-up and lots of code quality improvements

Breaking changes

  • Removed support for TYPO3 12
  • Removed support for PHP 8.1

How to upgrade 

  1. "Change fields" in DB using "Analyze Database" in Install tool / Maintenance module
  2. Adjust your templates if needed (some BE templates and partials, category list template)
  3. Clear all caches

Version 10.x 

Upgrade to 10.2.0 

Changelog 

https://github.com/fnagel/t3extblog/compare/10.1.0...10.2.0

  • Support for TYPO3 14.3 LTS
  • Important email bugfix

Breaking changes

  • Removed support for Twitter Boostrap version 3

How to upgrade 

  1. Adjust templates if you need the old Twitter Boostrap templating
  2. Clear all caches

Upgrade to 10.1.0 

"Features & Tests"

Changelog 

https://github.com/fnagel/t3extblog/compare/10.0.0...10.1.0

  • Support for TYPO3 14.2
  • Added new "related posts" plugin
  • Added related posts to post detail view
  • Added reading time calculation to list and detail view (new ReadingTimeViewHelper)
  • Added "this is an old post" notice for detail view
  • Added year filter to archive plugin
  • Added tag cloud plugin
  • Option to configure recursive level in category list view
  • Added menu processor for breadcrumbs and EXT:schema support
  • Switched from SimplePagination to SlidingWindowPagination pagination
  • Added unit, functional and acceptance tests incl. CI
  • Added YAML lint test in CI
  • Some small bugfixes and improvements

Breaking changes

  • Removed support for TYPO3 < 14.2
  • Some templates have changed
    • Post show
    • Post list
    • Post archive
    • Category list

How to upgrade 

  1. Adjust templates if needed
  2. Add new archive plugin routing configuration (Configuration/Routes/Archive.yaml) if needed
  3. Clear all caches

Upgrade to 10.0.0 

"TYPO3 14 support"

Changelog 

https://github.com/fnagel/t3extblog/compare/9.2.0...10.0.0

  • Support for TYPO3 14
  • Support for TYPO3 FluidMail email standard
  • Support for fully localized emails
  • Make use of new meta tag view helpers
  • Lots of small bugfixes and replacements for deprecated core functionality
  • Code clean-up and lots of code quality improvements

Breaking changes

  • Removed support for TYPO3 13
  • Email templates have changed
  • Removed some custom view helpers (MetaTag and HeaderData VH)

How to upgrade 

  1. Replace MetaTag view helper, e.g. <t3b:metaTag property="keywords" content="xyz" /> with core VH - Check Resources/Private/Partials/Post/Meta.html template if overridden
  2. Replace HeaderData view helper, e.g. <t3b:headerData>...</t3b:headerData> with core VH - Check Resources/Private/Partials/PaginationMeta.html template if overridden
  3. Configure email type in site settings (plugin.tx_t3extblog.settings.emailType) or TypoScript: - mailMessage: MailMessage: standalone Fluid template rendering (legacy) - fluidEmail: FluidEmail is the newer TYPO3 standard for themed emails
  4. Adjust your email templates if overridden - Update layout from <f:layout name="Email" /> to <f:layout name="{layout}" /> - Update section from <f:section name="main"> to <f:section name="Main"> - Adjust TypoScript template configurations to use plain, HTMl or both (default) email templates (see e.g. plugin.tx_t3extblog.settings.subscriptionManager.comment.admin.template) - Add HTML email templates if not existing yet
  5. Clear all caches

Replace T3Blog 

Target group: Developers

You have a TYPO3 4.5. with T3Blog (EXT:t3blog) installed. Goal is to get your blog running with TYPO3 6.2.

  1. Recommended: clone your system and make it ready for the update (update extensions, remove unused extensions...)
  2. Update to TYPO3 6.2, run the update wizard. If needed, deinstall t3blog. Important: When running the database analyser, DON“T remove any t3blog tables!
  3. When used deinstall dam/dam index. Otherwise go on to 4.
  4. Deinstall t3blog if not done before (Don't remove any t3blog tables!)
  5. Install t3extblog! Make sure to create / modify database fields.
  6. Run the "Find existing comments with invalid author or email" update-script (in Extensions-Manager) and update invalid comments (empty author or email)
  7. Run the "Set mails_sent flag for existing comments" update-script (in Extensions-Manager)
  8. Run the Install Tool Wizard (in Install Tool)
  9. Clean up (deleting deinstalled extensions, run the database analyser)

You will need to adjust your templates and TS configuration, but all your blogposts, comments etc. should be already available.

Developer Guide 

Target group: Developers

Extending T3extlog 

Using interfaces 

Some internal services are implemented as interfaces. The actual class to use could be configured. This way it is possible to use custom implementations.

Before TYPO3 10 See config.tx_extbase.objects configuration in [ext_typoscript_setup.txt](../../ext_typoscript_setup.txt).

TYPO3 10 and later See interface registration configuration in [Services.yml](../../Configuration/Services.yml).

More info on the topic: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/DependencyInjection/Index.html

Events 

T3extblog provides a couple of events to extend or change the default behavior. This is done by using PSR-14 events functionality provided by TYPO3.

Available events

  • CommentCreatePrePersistEvent (former prePersist signal)
    in FelixNagelT3extblogControllerCommentController:createAction
  • CommentSubscriberConfirmEvent (former subscriberConfirmAction signal)
    in FelixNagelT3extblogControllerPostSubscriberController:confirmAction
  • CommentSubscriberDeleteEvent (former subscriberDeleteAction signal)
    in FelixNagelT3extblogControllerPostSubscriberController:deleteAction
  • PostSubscriberConfirmEvent (former subscriberConfirmAction signal)
    in FelixNagelT3extblogControllerBlogSubscriberController:confirmAction
  • PostSubscriberDeleteEvent (former subscriberDeleteAction signal)
    in FelixNagelT3extblogControllerBlogSubscriberController:deleteAction
  • CommentNotificationCreateEvent (former processNewComment signal)
    in FelixNagelT3extblogServiceCommentNotificationService
  • CommentNotificationChangedEvent (former processChangedComment signal)
    in FelixNagelT3extblogServiceCommentNotificationService
  • CommentNotificationSubscribersEvent (former notifySubscribers signal)
    in FelixNagelT3extblogServiceCommentNotificationService
  • PostNotificationCreateEvent (former processNewSubscriber signal)
    in FelixNagelT3extblogServiceBlogNotificationService
  • PostNotificationChangedEvent (former processChangedSubscriber signal)
    in FelixNagelT3extblogServiceBlogNotificationService
  • PostNotificationSubscribersEvent (former notifySubscribers signal)
    in FelixNagelT3extblogServiceBlogNotificationService
  • SpamCheckEvent (former spamCheck signal)
    in FelixNagelT3extblogServiceSpamCheckService
  • SendEmailEvent (former sendEmail signal) in FelixNagelT3extblogServiceEmailService

More info

on PSR-14 events in TYPO3:

Code insights 

This section is incomplete

Table mapping

This extension uses TYPO3 Extbase table mapping to make use of existing EXT:t3blog tables. Take a look at Configuration/Extbase/Persistence/Classes.php to see how this is done.

Translations 

Translations could be added here: https://crowdin.com/project/typo3-extension-t3extblog

Please consider opening a GitHub ticket so we can review new translations as soon as possible!

Documentation 

Anyone is very welcome to help improving our documentation! Just send a pull request or add an issue at GitHub.

This extension uses the PHP based rendering approach. See here for more info:

Use this command to render the documentation locally (Docker is needed):

docker run --rm --pull always -v "./:/project" -t ghcr.io/typo3-documentation/render-guides:latest --config=Documentation

Testing 

Automated Tests 

Install development dependencies:

composer install
Copied!

Run all checks and tests:

composer test
Copied!

Run individual test suites:

# Unit tests only (fast, no database required)
composer test-unit

# Functional tests only (requires pdo_sqlite PHP extension)
composer test-functional

# Acceptance tests only (requires pdo_sqlite PHP extension)
composer test-acceptance
Copied!

Tests use SQLite by default. To use MySQL/MariaDB instead:

typo3DatabaseDriver=mysqli \
typo3DatabaseHost=127.0.0.1 \
typo3DatabaseName=typo3_test \
typo3DatabaseUsername=root \
typo3DatabasePassword=root \
composer test-functional
Copied!

Code Coverage 

Coverage reports require either PCOV (recommended, faster) or Xdebug PHP extension.

# Unit test coverage (Clover XML + HTML report)
composer test-coverage-unit

# Functional test coverage (Clover XML + HTML report)
composer test-coverage-functional

# Acceptance test coverage (requires running Selenium + webserver)
composer test-coverage-acceptance
Copied!

Reports are written to:

  • .Build/coverage/unit-html/ and .Build/coverage/unit.xml
  • .Build/coverage/functional-html/ and .Build/coverage/functional.xml
  • .Build/var/log/_output/coverage.xml (acceptance, Clover XML)

On GitHub Actions, coverage is collected automatically on the latest PHP version matrix entry. A summary is displayed in the workflow job summary.

Manual Testing 

This needs to be done for latest supported TYPO3 versions in a multi-language site setup. It is recommenced to install T3extblog in TYPO3's introduction package.

https://extensions.typo3.org/extension/introduction

What needs to be tested:

  • Creating blog posts (with and without preview image and text)
    • Check post preview
  • Posting comments and subscribe for new comments
    • With and without SPAM check triggered
    • Test field validation
    • Test prefilling fields
  • Using the subscription manager (confirm and delete for new comment and post subscription)
  • New comment subscription
    • Admin, subscriber opt-in and notification emails
    • Triggered by:
      • Frontend & backend (confirm and un-spam a comment)
      • Edit button (BE module and core dashboard) and direct spam / confirmed toggle buttons

Make sure mails are sent with localized links for multi language setups New post subscription Subscriber opt-in (frontend) and notification emails (button in BE module) Dashboard widgets work as expected Test RSS feed Test request throttling * PSR-14 events

Quick test procedure

Make sure to have all related pages, folders and blog categories localized!

  • Create a new post and translate it
  • Add comment with subscription (saved but marked as SPAM)
    • admin email sent
  • Mark as non SPAM using the dashboard (in blog BE module)
    • subscription mail sent
  • Confirm subscription by email link (check localization and link)
  • When in subscription manager -> add new article subscription
  • Add another comment (saved but marked as SPAM)
    • admin email sent
  • Edit the comment record you just created (in list BE module)
  • Un-check the SPAM checkbox, save record
    • new comment mail sent (check localization and link)
  • Add a valid comment for the translated post
    • admin mail sent (check localization and link)
  • Make sure there
    • are two comments displayed for the default language post and only one for the localized post
    • is no "new comment" email for the default language subscription
  • Click envelope icon in "all post" view (T3extblog BE module) -> New post subscription mail sent
  • Check dashboard blog widgets functionality
  • Check RSS functionality (and check localization and links)

TER deployment 

TYPO3 TER deployment is done automated via GitHub action workflow. Just add a version tag and push to GitHub. See /.github/workflows/release.yml for more information.

How to release

  • Create upgrade guide!
  • Change version information in /ext_emconf.php
  • Change year in /Documentation/guides.xml if needed
  • Change year in /Documentation/Index.rst if needed
  • Commit changes: Use [RELEASE] prefix, this commit message will be the TYPO3 TER release notice
  • Add tag to release commit (format: "1.2.3")
  • Change version information in /ext_emconf.php to next bugfix version + "-dev" (example: "1.2.4-dev")
  • Push GIT changes incl. tag

After a release

Manual release

Sometimes the tag based Github workflow fails. You can manually upload the release: