---
title: "Configuration methods for extensions"
manual: "TYPO3 Explained"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/t3coreapi:extension-configuration@13.4"
source: "ExtensionArchitecture/HowTo/Configuration.rst"
rendered: "2026-09-18T05:52:58+00:00"
---

# Configuration methods for extensions {#configuration-methods-for-extensions}

There are several possibilities to make your extension configurable. From the
various options described here each differs in:

-   the scope to what the configuration applies (extension, pages,
    plugin)
-   the access level required to make the change (editor, admin)

## TypoScript and constants {#typoscript-and-constants}

You can define configuration options using TypoScript.
These options can be changed via TypoScript constants and setup in the backend.
The changes apply to the current page and all subpages.

> [!NOTE]
> **See also**
>
> -   [Extbase TypoScript configuration](https://docs.typo3.org/permalink/t3coreapi:extbase-typoscript-configuration@13.4)
> -   [Constants](https://docs.typo3.org/m/typo3/reference-typoscript/13.4/en-us/UsingSetting/Constants.html#typoscript-syntax-what-are-constants)

## Extension configuration {#extension-configuration-1}

Extension configuration is defined in the file [`ext_conf_template.txt`](../FileStructure/ExtConfTemplate.md#file-extension-ext-conf-template-txt)
using TypoScript constant syntax.

The configuration options you define in this file can be changed in the
backend **Admin Tools > Settings > Extension Configuration** and is
stored in `config/system/settings.php`.

Use this file for general options that should be globally applied to
the extension.

> [!NOTE]
> **See also**
>
> -   [ext_conf_template.txt](https://docs.typo3.org/permalink/t3coreapi:extension-options@13.4)

## FlexForms {#flexforms}

[FlexForms](https://docs.typo3.org/permalink/t3coreapi:flexforms) define
forms that can be used by editors to configure plugins and content elements.

In Extbase plugins, settings made in the FlexForm of a plugin
override settings made in the TypoScript configuration of that plugin.

If you want to access a setting via FlexForm in Extbase from your controller via
`$this->settings`, the name of the setting must begin with **settings**,
directly followed by a dot (`.`).

> [!NOTE]
> **See also**
>
> -   [FlexForms](https://docs.typo3.org/permalink/t3coreapi:flexforms)

## Access settings {#access-settings}

The settings can be read using `$this->settings` in an
Extbase controller action and via `{settings}` within Fluid.

### Example: Access settings in an Extbase controller {#example-access-settings-in-an-extbase-controller}

**Class T3docs\\BlogExample\\Controller\\PostController**

```php
<?php

use Psr\Http\Message\ResponseInterface;

class PostController extends AbstractController
{
  public function displayRssListAction(): ResponseInterface
  {
    $defaultBlog = $this->settings['defaultBlog'] ?? 0;
    if ($defaultBlog > 0) {
      $blog = $this->blogRepository->findByUid((int)$defaultBlog);
    } else {
      $blog = $this->blogRepository->findAll()->getFirst();
    }
    $this->view->assign('blog', $blog);
    return $this->responseFactory->createResponse()
        ->withHeader('Content-Type', 'text/xml; charset=utf-8')
        ->withBody($this->streamFactory->createStream($this->view->render()));
  }
}

```

## YAML {#yaml}

Some extensions offer configuration in the format YAML,
see [YAML](https://docs.typo3.org/permalink/t3coreapi:config-overview-yaml@13.4).

There is a [YamlFileLoader](https://docs.typo3.org/permalink/t3coreapi:yamlfileloader@13.4) which can be used to load YAML
files.
