
T3ppy Gives TYPO3 a Friendly Face
TYPO3 is powerful—but it doesn’t have to feel impersonal. Meet T3ppy, our friendly companion for the backend.
Read more: T3ppy Gives TYPO3 a Friendly Face
Anyone who regularly works with larger TYPO3 installations knows the situation: the website becomes more and more sophisticated, the number of custom content elements keeps growing—but in the backend—the editor interface—very little of that quality is actually visible.
Custom Content Types (CTypes) in particular often end up with very rudimentary or even practically empty previews in the page module. Apart from the headline, all that remains is a soup of gray boxes—from an editor’s perspective, this is the worst case.
Of course, there are also installations where custom preview templates already exist for individual content elements. That is generally an improvement. Without an overarching concept, however, this quickly leads to new problems: isolated templates, different rendering approaches, and over time an increasingly confusing mix of styles. Editorial work becomes harder, maintenance effort increases, and frustration grows as projects scale.
This is exactly where our extension backendpreviews comes into play. We now use it in all of our projects—and in this post, we want to explain why we built it, which problem it solves, and how it can be used.

TYPO3 already provides a way to define custom backend previews for content elements:
1
mod.web_layout.tt_content.preview.my_custom_ctype = my_custom_element.html
With a single line of PageTSConfig, a custom Fluid template can be assigned to a content element. This is fundamentally useful—but it comes with a decisive limitation:
In small projects, this is often still manageable. In larger installations with many custom CTypes—and developer teams changing over the course of several years—this approach simply does not scale.
What we regularly see in practice is gradual wild growth in the backend. Every new content element introduces its own preview logic. Without a shared foundation, many slightly different solutions emerge for essentially the same problems.
Typical symptoms include:
Some concrete examples we encounter again and again:
Link: <url>, sometimes including labels or descriptionsThe result is an inconsistent backend preview experience that is neither easy to maintain nor particularly editor-friendly. The concepts of content blocks, where there is an isolated component for each new “CType” does not address this either.
With EXT:backendpreviews, our goal was to solve exactly this structural problem.
The core idea is simple:
Instead of defining a single, self-contained template per CType, use the full Fluid toolset—with layouts, partials, and templates.
This allows to:
Rather than building a fully independent preview template for each element, previews are composed by including reusable partials.

Using the extension, you can:
In day-to-day project work, this has a noticeable impact:
Proven defaults out of the box—shipped partials that have proven themselves across many real-world projects

Installation works as usual via Composer:
1
composer require b13/backendpreviews
No further steps in the Extension Manager are required.

Instead of configuring a fixed template path per CType, EXT:backendpreviews relies on a central view configuration. You define template, partial, and layout paths, including the standard Fluid fallback mechanism via root paths—once, regardless of the amount of used CTypes.
When rendering a preview, the extension automatically looks for a template whose file name matches the CType (for example my_custom_element.html) within the configured paths. If such a template is found, it is rendered—including layouts and partials.
If no matching template exists, EXT:backendpreviews gracefully falls back to other preview renderers or, ultimately, TYPO3’s default behavior.
Example configuration:
1
2
3
4
5
6
7
8
9
10
plugin.tx_backendpreviews.view {
templateRootPaths.10 = EXT:backendpreviews/Resources/Private/Templates/
templateRootPaths.20 = EXT:sitepackage/Resources/Private/BackendPreviews/Templates/
partialRootPaths.10 = EXT:backendpreviews/Resources/Private/Partials/
partialRootPaths.20 = EXT:sitepackage/Resources/Private/BackendPreviews/Partials/
layoutRootPaths.10 = EXT:backendpreviews/Resources/Private/Layouts/
layoutRootPaths.20 = EXT:sitepackage/Resources/Private/BackendPreviews/Layouts/
}
EXT:backendpreviews ships with a set of sensible defaults:
These defaults can be used out of the box, overridden, or extended as needed.
Thanks to the modular structure, teams can easily establish their own default baseline—even across multiple projects or clients. This makes EXT:backendpreviews particularly useful for agencies and long-running TYPO3 installations.
Backend content previews are not a luxury—they are a core part of a good TYPO3 editor experience.
With EXT:backendpreviews, we built a solution that:
That’s why EXT:backendpreviews has become a fixed part of every project we build.
Documentation and source code are available on GitHub: https://github.com/b13/backendpreviews
Especially in larger TYPO3 installations or agency-wide setups, a structured approach to backend previews pays off quickly.
If you need support introducing EXT:backendpreviews, defining your own defaults, or integrating it into an existing TYPO3 project, feel free to get in touch with us.