---
title: Automate your “doktype” to “backend layout” mapping
url: "https://b13.com/knowledge/simplify-your-typo3-page-configuration"
description: Save time, reduce manual labor, and minimize confusion for your TYPO3 editors with b13’s “Doktype Mapper” extension 
image: "https://b13.com/fileadmin/_processed_/6/e/csm_doktype-mapping_191-1_cf2a4069c1.png"
date: 2023-01-30
modified: 2026-08-19
lastUpdated: 2026-08-19
---

# Automate your “doktype” to “backend layout” mapping

[ TYPO3 ](https://b13.com/knowledge/typo3) [ Open Source ](https://b13.com/knowledge/open-source)

 Simplify your page configuration with our extension
=====================================================

 Save time, reduce effort, and provide clarity for your editors with the Doktype Mapper extension

![](https://b13.com/fileadmin/_processed_/a/d/csm_david_5ce18d41e2.jpg)David Steeb

  31 January 2023

 [ RSS Feed ](https://b13.com/rss.xml)

  ![Three overlapping digital documents in blue, green, and orange, featuring various layouts and design elements, with connecting lines indicating relationships or flow between them. The background is a dark gradient with abstract shapes.](https://b13.com/fileadmin/_processed_/f/f/csm_doktype-mapping_11a5bf483d.webp)

TYPO3’s separation of content and code is one of its major strengths. TYPO3 saves content in containers called content elements, which you can stack in content areas on a page record to create pages. The different parts of this highly configurable setup include “page types” (defined by the “doktype” field value in the pages database table record), a “backend layout” configuration, and possibly a third, separate “frontend layout” configuration value. We combine these components in various ways to enable different scenarios and desired outcomes.

  For the sake of clarity, we will refer to page types by the name of the field they are stored in, `doktype`, for the rest of this article.

  Contact b13 to learn more about how to use our extension.

 [ Let’s connect ](https://b13.com/lets-connect)

   The components of the doktype mapping process
-----------------------------------------------

Let’s clarify what `doktypes` and backend layouts are, then we’ll show you some examples with the [TYPO3 Demo Project](https://demo.typo3.org/).

  ###  Doktypes

`doktypes` are a subtype of a page. They show up as a database field in the “pages” table, and each page has to have a `doktype`. [Default <code class="b\_inline-code">doktypes</code>](https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/PageTypes/TypesOfPages.html) include folders, shortcuts, external links, and more, but you can also create your own `doktypes` (technically, as many as you want) to define a page.

**In the Demo Project:** We defined apples, recipes, overview pages, the start page, and the FAQ page as our custom `doktypes`, besides the default “Content page”. An apple has a set of additional fields in the page properties where we store things like the name, a teaser text, and a teaser image that we use for generating teaser overviews. Using various `doktypes` for different kinds of content pages allows you to show more (or different) form fields for the “page properties” of each page.

  ![Selecting page types in the demo project site](https://b13.com/fileadmin/_processed_/7/e/csm_doktype_mapper_selecting_pages_59c7fd26d0.webp)  Selecting page types in the demo project site

  ###  Backend layouts

Backend layouts are how you configure different content areas on a page, using various rows and column combinations in the Page module. These can be defined as a database records, or via TSconfig (and you should opt to put these configuration files in your version control system instead of the database). To make things more complicated, backend layouts can also be inherited from pages up the page tree if not explicitly set, which can trigger confusing behavior when copying or moving pages to a different part of the page tree.

**In the Demo Project:** We defined columns and rows for the header area, main content area, and footer area in the backend layout. Using the “[Content Defender](https://extensions.typo3.org/extension/content_defender)“ extension by Nicole Cordes, we can also restrict the kinds of content element types an editor can add to each of the areas of our given backend layout. For example, you could restrict content elements like the key visual so they can only be added to a page’s main header area, and not anywhere else (like the footer!).

  ```
1<br></br>2<br></br>3<br></br>4<br></br>5<br></br>6<br></br>7<br></br>8<br></br>9<br></br>10<br></br>11<br></br>12<br></br>13<br></br>14<br></br>15<br></br>16<br></br>17<br></br>18<br></br>19<br></br>20<br></br>21<br></br>22<br></br>23<br></br>24<br></br>25<br></br>26<br></br>27<br></br>28<br></br>29<br></br>30<br></br>31<br></br>32<br></br>33<br></br>34<br></br>35<br></br>36<br></br>37<br></br>38<br></br>39<br></br>40<br></br>41<br></br>42<br></br>43<br></br>44<br></br>45<br></br>46<br></br>
```

```
mod.web_layout.BackendLayouts.Startpage {<br></br>  title = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.startpage.title<br></br>  config {<br></br>    backend_layout {<br></br>      doktype = 10<br></br>      colCount = 2<br></br>      rowCount = 3<br></br>      rows {<br></br>        1 {<br></br>          columns {<br></br>            1 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.stage.name<br></br>              colPos = 1<br></br>              allowed.CType = keyvisual<br></br>              colspan = 2<br></br>            }<br></br>          }<br></br>        }<br></br>        2 {<br></br>          columns {<br></br>            1 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.maincontent.name<br></br>              colPos = 0<br></br>              allowed.CType = textmedia,mainteaser,startpageteaser,menu_pages<br></br>              colspan = 2<br></br>            }<br></br>          }<br></br>        }<br></br>        3 {<br></br>          columns {<br></br>            1 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.footercontent.name<br></br>              colPos = 21<br></br>              allowed.CType = footerinfo<br></br>            }<br></br>            2 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.resetbanner.name<br></br>              colPos = 22<br></br>              allowed.CType = resetbanner<br></br>            }<br></br>          }<br></br>        }<br></br>      }<br></br>    }<br></br>  }<br></br>}<br></br>
```

  ###  Frontend templates

Generally, a backend layout and a frontend template need to have a connection. This can be abstract in the sense that one template is able to handle content from different backend content area setups provided by different backend layouts. Or, one backend layout can be used for multiple frontend templates. In either situation, the frontend template needs to take the content from different content areas as defined in the backend layout to render the frontend accordingly.

At b13, we generally connect a backend layout to a frontend Fluid template, and use a default naming to reduce the amount of explicit configuration needed:

  ```
1<br></br>2<br></br>3<br></br>4<br></br>5<br></br>6<br></br>7<br></br>8<br></br>9<br></br>10<br></br>11<br></br>12<br></br>13<br></br>14<br></br>15<br></br>
```

```
<span class="hljs-meta"># use fluid to render page templates</span><br></br>lib.fluidPage = FLUIDTEMPLATE<br></br>lib.fluidPage {<br></br>  templateRootPaths.<span class="hljs-number">10</span> = EXT:site_t3demo/<span class="hljs-built_in">Resources</span>/<span class="hljs-keyword">Private</span>/Pages/Templates/<br></br>  layoutRootPaths.<span class="hljs-number">10</span> = EXT:site_t3demo/<span class="hljs-built_in">Resources</span>/<span class="hljs-keyword">Private</span>/Pages/Layouts/<br></br>  partialRootPaths.<span class="hljs-number">9</span> = EXT:site_t3demo/<span class="hljs-built_in">Resources</span>/<span class="hljs-keyword">Private</span>/Snippets/<br></br>  partialRootPaths.<span class="hljs-number">10</span> = EXT:site_t3demo/<span class="hljs-built_in">Resources</span>/<span class="hljs-keyword">Private</span>/Pages/Partials/<br></br><br></br>  templateName = <span class="hljs-built_in">TEXT</span><br></br>  templateName.data = pagelayout<br></br>  templateName.stdWrap.replacement {<br></br>    <span class="hljs-number">10</span>.search = pagets__<br></br>    <span class="hljs-number">10</span>.replace =<br></br>  }<br></br>}<br></br>
```

  You can take a more in-depth look at this Demo Project [example](https://git.typo3.org/services/demo.typo3.org/site/-/blob/main/src/extensions/site_t3demo/Configuration/TypoScript/Setup/baseconfig.typoscript).

  ###  We help balance TYPO3’s flexibility and complexity through our best practices

TYPO3’s setup as a system is a major reason you can build any type of project you want, in any combination you need, and for any use case you can imagine. TYPO3 separates content editing, database storage, and the logical and optical structure of any given “content group” — sometimes a page is not even a “page” in the original sense.

However, sometimes you need guidance to navigate this flexibility of TYPO3’s. In many of our projects, we’ve found that editors can get confused when confronted with a combination of

1. a page type (which we call `doktype`),
2. a backend layout, and possibly
3. a separate “frontend layout” configuration option.

You can easily end up with a combination of these three that breaks your frontend or does something your editor would not expect.

To reduce this complexity and make the system more editor-foolproof, part of our b13 best practices include removing unnecessary options. For many of our projects, we explicitly combine a `doktype` with a backend layout, and remove the option for editors to change these settings independently of one another. We wanted this practice to be available to everyone, which is where our “Doktype Mapper” extension comes in.

   Enter our Doktype Mapper extension
------------------------------------

By connecting a backend layout with a `doktype`, we select the backend layout of a given page automatically as soon as the editor selects the `doktype`. The connection of the page type to the backend layout is set automatically and the corresponding backend layout fields can (and should be) removed from your editors‘ view, while also cutting out the inheritance of backend layout configurations.

With the extension, we link every backend layout with a specific page type. For the [Demo Project](https://demo.typo3.org/), if the editor adds a “Recipe” page, we select the corresponding “Recipes” backend layout, bringing the configuration for the page properties and a recipe page’s structure in sync. The backend layout selection defines which specific elements (like an ingredients table) are used on the “Recipes” page.

  ```
1<br></br>2<br></br>3<br></br>4<br></br>5<br></br>6<br></br>7<br></br>8<br></br>9<br></br>10<br></br>11<br></br>12<br></br>13<br></br>14<br></br>15<br></br>16<br></br>17<br></br>18<br></br>19<br></br>20<br></br>21<br></br>22<br></br>23<br></br>24<br></br>25<br></br>26<br></br>27<br></br>28<br></br>29<br></br>30<br></br>31<br></br>32<br></br>33<br></br>34<br></br>35<br></br>36<br></br>37<br></br>38<br></br>39<br></br>
```

```
mod.web_layout.BackendLayouts.Recipepage {<br></br>  title = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.recipepage.title<br></br>  config {<br></br>    backend_layout {<br></br>      doktype = 12<br></br>      colCount = 1<br></br>      rowCount = 3<br></br>      rows {<br></br>        1 {<br></br>          columns {<br></br>            1 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.stage.name<br></br>              colPos = 1<br></br>              allowed.CType = keyvisual<br></br>            }<br></br>          }<br></br>        }<br></br>        2 {<br></br>          columns {<br></br>            1 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.maincontent.name<br></br>              colPos = 0<br></br>              allowed.CType = --div--,textmedia,ingredients,lead<br></br>            }<br></br>          }<br></br>        }<br></br>        3 {<br></br>          columns {<br></br>            1 {<br></br>              name = LLL:EXT:site_t3demo/Resources/Private/Language/locallang_db.xlf:backendlayout.teasercontent.name<br></br>              colPos = 2<br></br>              allowed.CType = menu_pages<br></br>            }<br></br>          }<br></br>        }<br></br>      }<br></br>    }<br></br>  }<br></br>}<br></br>
```

  Check out this configuration in more detail on TYPO3’s [Gitlab](https://git.typo3.org/services/demo.typo3.org/site/-/blob/main/src/extensions/site_t3demo/Configuration/PageTsConfig/mod/web_layout/BackendLayouts/Recipepage.tsconfig).

If you’ve linked all of the `doktypes` in use in your project to a backend layout, your “backend layout” and “backend layout next level” fields are now set automatically, so you can remove them from page properties. Your editors will thank you.

“Doktype Mapper” is not a good fit for every project, and the examples we’ve outlined in the TYPO3 Demo Project are just one way you can configure your `doktype` mapping process. But for the right project, developers and integrators can install the extension and benefit from simplified configuration and reduced amount of code.

   The Doktype Mapper extension aids your devs, integrators, and editors
-----------------------------------------------------------------------

The “Doktype Mapper” extension is custom-created to help out your TYPO3 developers, integrators, and editors—we use it at b13! By simplifying your `doktype` mapping, the extension helps TYPO3 developers, integrators, and editors enormously: it saves time during configuration, reduces unnecessary manual labor, and minimizes confusion for your editors. It also has the potential to help in the future by cutting out duplicate code in the repository and easing maintenance and updates.

   Give it a try!
----------------

Install our extension using composer

`composer req b13/doktypemapper`

Hop over to [GitHub to take a look at the code](https://github.com/b13/doktypemapper).

  Reach out to b13 to find out how Doktype Mapper keeps editors productive, focussed and fast.

 [ Let’s connect ](https://b13.com/lets-connect)

  ###  Written by:

 ![Bild von David Steeb](https://b13.com/fileadmin/_processed_/a/d/csm_david_cf042ebb7f.webp)

b13 Founder and CEO, David, is someone you’ll meet if you’re thinking about working with our agency. He is constantly learning new skills and is an influential part of our cutting-edge frontend practice.

 David Steeb  CEO

 [ more from David Steeb ](https://b13.com/team/david-steeb)

  Related Articles
------------------

- ![A purple graphic featuring a smartphone icon with three horizontal bars, surrounded by illustrations of vintage telephones.](https://b13.com/fileadmin/_processed_/2/5/csm_EXTphonenumber_Headerbild_93d5de1696.webp)

    ###  Clean Phone Numbers in TYPO3: Why We Built EXT:phone\_number

     11 August 2026 | David Steeb

     TYPO3 stores phone numbers as tel: links, but doesn’t format them for output. Meet EXT:phone\_number, a Fluid ViewHelper for clean, consistent numbers.

     [ Read more: Clean Phone Numbers in TYPO3: Why We Built EXT:phone\_number ](https://b13.com/knowledge/clean-phone-numbers-in-typo3)
- ![Cartoon trophy character surrounded by hands giving thumbs up and a heart gesture, set against a gear-patterned background.](https://b13.com/fileadmin/_processed_/f/7/csm_T3ppy_Design_Kit_Headerbild_b51eb9dc31.webp)

    ###  T3ppy Gives TYPO3 a Friendly Face

     06 August 2026 | Florian “Flix” Keitgen

     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 ](https://b13.com/knowledge/t3ppy-design-kit)
- ![Gavel labeled "AI" on a circuit-patterned background with yellow stars, symbolizing regulation or legislation related to artificial intelligence in the EU.](https://b13.com/fileadmin/_processed_/1/0/csm_EUAIAct_Headerbild_510724b3de.webp)

    ###  AI Content in TYPO3: Labelling Needs Accountability

     02 August 2026 | Benni Mack

     The EU AI Act brings the origins of AI-generated content into focus. AI Label marks AI-generated and AI-edited content in TYPO3 and records who signed off the published version—for…

     [ Read more: AI Content in TYPO3: Labelling Needs Accountability ](https://b13.com/knowledge/ai-content-in-typo3-labelling-needs-accountability)
- ![Hands holding puzzle pieces are positioned around a partially completed puzzle depicting a computer interface.](https://b13.com/fileadmin/_processed_/d/7/csm_StopBuyingPlatforms_Headerbild_8a41a82f8a.webp)

    ###  Stop Buying Platforms. Start Building Ecosystems.

     09 June 2026 | David Steeb

     The first TYPO3 Summit North America opened with a keynote that reframes how enterprise teams should think about content management—from platforms to ecosystems, from vendor…

     [ Read more: Stop Buying Platforms. Start Building Ecosystems. ](https://b13.com/knowledge/stop-buying-platforms-start-building-ecosystems)
- ![Colorful fish illustrations surround a central logo that reads "TYPO3 Summit.](https://b13.com/fileadmin/_processed_/4/3/csm_NorthAmericaSummit_Headerbild_5fbbbbb529.webp)

    ###  Notes from Atlanta—What the First TYPO3 Summit North America Says About the Next Decade of Enterprise CMS

     22 May 2026 | David Steeb

     Field report from the first TYPO3 Summit North America in Atlanta. On governance that can’t be acquired, predictable seven-year lifecycles, the FAIR distribution layer, and why the…

     [ Read more: Notes from Atlanta—What the First TYPO3 Summit North America Says About the Next Decade of Enterprise CMS ](https://b13.com/knowledge/atlanta-typo3-summit-north-america-enterprise-cms)
- ![A series of stylized figures in various poses, each with a distinctive orange hat, depict a progression from walking to standing still while looking at a phone, set against a purple grid background.](https://b13.com/fileadmin/_processed_/d/7/csm_QueuesDDEV_Headerbild_f640931350.webp)

    ###  Better scalability with decoupled queues: How to set up RabbitMQ with TYPO3

     10 April 2024 | Jochen Roth

     When built-in message transports hit their limits, RabbitMQ can provide TYPO3 with a scalable, robust message queue.

     [ Read more: Better scalability with decoupled queues: How to set up RabbitMQ with TYPO3 ](https://b13.com/knowledge/better-scalability-with-decoupled-queues-how-to-set-up-rabbitmq-with-typo3)
- ![A rocket labeled "V14" launches into the sky, surrounded by a group of people celebrating with raised arms.](https://b13.com/fileadmin/_processed_/3/d/csm_v14_Celebration_Headerbild_3d4170fdc5.webp)

    ###  Happy Release Day TYPO3 v14: Why This Release Shows the True Strength of Open Source

     21 April 2026 | Florian “Flix” Keitgen

     TYPO3 v14 improves workflows for editors, marketing teams, and developers—and shows how community-driven open source creates real impact.

     [ Read more: Happy Release Day TYPO3 v14: Why This Release Shows the True Strength of Open Source ](https://b13.com/knowledge/happy-release-day-typo3-v14-why-this-release-shows-the-true-strength-of-open-source)
- ![A cartoon character resembling a shield gives a thumbs up in front of a computer interface with various menu options.](https://b13.com/fileadmin/_processed_/e/6/csm_Header_cda1f80173.webp)

    ###  Meet T3ppy: A New Era for Editorial Work in TYPO3

     01 April 2026 | Florian “Flix” Keitgen

     T3ppy and the AiM extension bring AI directly into the TYPO3 backend—enhancing SEO, content quality, and workflows with centralized control.

     [ Read more: Meet T3ppy: A New Era for Editorial Work in TYPO3 ](https://b13.com/knowledge/meet-t3ppy-a-new-era-for-editorial-work-in-typo3)
- ![Four file folders displaying a bar graph with orange bars, set against a light blue background with abstract document outlines.](https://b13.com/fileadmin/_processed_/7/2/csm_PageInfoTabs_Headerbild_1e3eda44e5.webp)

    ###  Taming the Page Module Header—Why We Built EXT:page\_info\_tabs

     31 March 2026 | David Steeb

     When multiple TYPO3 extensions add content to the page module header, things quickly become messy. EXT:page\_info\_tabs structures everything into clean Bootstrap tabs, with zero…

     [ Read more: Taming the Page Module Header—Why We Built EXT:page\_info\_tabs ](https://b13.com/knowledge/taming-the-page-module-header-why-we-built-extpage-info-tabs)
- ![Retro microphone illustration with a shopping cart icon in the background, symbolizing e-commerce or online shopping.](https://b13.com/fileadmin/_processed_/f/8/csm_Marketplace_Headerbild_ee1575614c.webp)

    ###  Why TYPO3 Needs a Marketplace for Products

     25 March 2026 | Florian “Flix” Keitgen

     A marketplace would make TYPO3 products more discoverable, easier to compare, and benefit both agencies and clients alike.

     [ Read more: Why TYPO3 Needs a Marketplace for Products ](https://b13.com/knowledge/why-typo3-needs-a-marketplace-for-products)