---
title: "Backend module configuration examples"
manual: "TYPO3 Explained"
version: "14.3"
permalink: "https://docs.typo3.org/permalink/t3coreapi:backend-modules-configuration-examples@14.3"
source: "ExtensionArchitecture/HowTo/BackendModule/ModuleConfiguration.rst"
rendered: "2026-10-01T15:20:05+00:00"
---

# Backend module configuration examples {#backend-modules-configuration-examples}

The configuration of backend modules is placed in the
dedicated configuration file: [`Configuration/Backend/Modules.php`](../../FileStructure/Configuration/Backend/Index.md#file-extension-configuration-backend-modules-php).

See also the [Backend module configuration API](https://docs.typo3.org/permalink/t3coreapi:backend-modules-configuration@14.3).

Read more about

## Example: register two backend modules {#backend-modules-configuration-examples-example-register-two}

You can find the following example in
[EXT:examples](https://github.com/TYPO3-Documentation/t3docs-examples).

Two backend modules are being registered. The first module is based on
[Extbase](https://docs.typo3.org/permalink/t3coreapi:extbase-extension-framework@14.3) while the second uses a plain controller.

**EXT:examples/Configuration/Backend/Modules.php**

```php
<?php

declare(strict_types=1);

/*
 * This file is part of the TYPO3 CMS project.
 *
 * It is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License, either version 2
 * of the License, or any later version.
 *
 * For the full copyright and license information, please read the
 * LICENSE.txt file that was distributed with this source code.
 *
 * The TYPO3 project - inspiring people to share!
 */

use T3docs\Examples\Controller\AdminModuleController;
use T3docs\Examples\Controller\ModuleController;

/**
 * Definitions for modules provided by EXT:examples
 */
return [
  'content_examples' => [
    'parent' => 'content',
    'position' => ['after' => 'web_info'],
    'access' => 'user',
    'workspaces' => 'live',
    'path' => '/module/page/example',
    'labels' => 'examples.module.content_examples',
    'extensionName' => 'Examples',
    'iconIdentifier' => 'tx_examples-backend-module',
    'appearance' => [
      'dependsOnSubmodules' => true,
    ],
    'showSubmoduleOverview' => true,
    /*
        'controllerActions' => [
            ModuleController::class => [
                'flash', 'tree', 'clipboard', 'links', 'fileReference', 'fileReferenceCreate', 'count',
            ],
        ],
         */
  ],
  'content_examples_flash' => [
    'parent' => 'content_examples',
    'position' => ['before' => '*'],
    'access' => 'user',
    'workspaces' => 'live',
    'path' => '/module/page/example/flash',
    'labels' => 'examples.module.content_examples_flash',
    'extensionName' => 'Examples',
    'iconIdentifier' => 'tx_examples-backend-module',
    'controllerActions' => [
      ModuleController::class => [
        'flash',
      ],
    ],
  ],
  'content_examples_tree' => [
    'parent' => 'content_examples',
    'position' => ['after' => 'content_examples_flash'],
    'access' => 'user',
    'workspaces' => 'live',
    'path' => '/module/page/example/tree',
    'labels' => 'examples.module.content_examples_tree',
    'extensionName' => 'Examples',
    'iconIdentifier' => 'tx_examples-backend-module',
    'controllerActions' => [
      ModuleController::class => [
        'tree',
      ],
    ],
  ],
  'content_examples_clipboard' => [
    'parent' => 'content_examples',
    'position' => ['after' => 'content_examples_tree'],
    // Only visible to users defined in ExampleGate
    'access' => 'exampleUser',
    'workspaces' => 'live',
    'path' => '/module/page/example/clipboard',
    'labels' => 'examples.module.content_examples_clipboard',
    'extensionName' => 'Examples',
    'iconIdentifier' => 'tx_examples-backend-module',
    'controllerActions' => [
      ModuleController::class => [
        'clipboard',
      ],
    ],
  ],
  'content_examples_links' => [
    'parent' => 'content_examples',
    'position' => ['after' => 'content_examples_clipboard'],
    'access' => 'user',
    'workspaces' => 'live',
    'path' => '/module/page/example/links',
    'labels' => 'examples.module.content_examples_links',
    'extensionName' => 'Examples',
    'iconIdentifier' => 'tx_examples-backend-module',
    'controllerActions' => [
      ModuleController::class => [
        'links',
      ],
    ],
  ],
  'admin_examples' => [
    'parent' => 'system',
    'position' => ['top'],
    'access' => 'admin',
    'workspaces' => 'live',
    'path' => '/module/system/example',
    'labels' => 'examples.admin_module.mod',
    'iconIdentifier' => 'tx_examples-backend-module',
    'routes' => [
      '_default' => [
        'target' => AdminModuleController::class . '::handleRequest',
      ],
    ],
  ],
];

```

## Check if the modules have been properly registered {#backend-modules-configuration-example-debug}

All registered modules are stored as objects in a registry. They can be viewed
in the backend in the **System > Configuration > Backend Modules**
module.

![](../../../Images/ManualScreenshots/Backend/BackendModulesConfiguration.png)

The [ModuleProvider](https://docs.typo3.org/permalink/t3coreapi:backend-module-provider-api@14.3) API allows extension
authors to work with the registered modules.
