Attention
TYPO3 v11 has reached end-of-life as of October 31th 2024 and is no longer being maintained. Use the version switcher on the top left of this page to select documentation for a supported version of TYPO3.
Need more time before upgrading? You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here: TYPO3 ELTS.
Configuration
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
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.
Extension configuration
Extension configuration is defined in the file ext_
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 typo3conf/
.
Use this file for general options that should be globally applied to the extension.
See also
FlexForms
FlexForms can be configured in the backend by editors. With FlexForms you can
configure each plugin or content element individually without adding extra fields to the tt_
table.
In Extbase plugins, settings made in the FlexForm of a plugin override settings made in the TypoScript configuration of that plugin.
Note
If you wish to access a setting set via FlexForm in Extbase from your controller via
$this->settings
, the name of the setting must begin with settings,
directly followed by a dot (.
).
See also
Example
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Options</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.postsPerPage>
<TCEforms>
<label>Max. number of posts to display per page
</label>
<config>
<type>input</type>
<size>2</size>
<eval>int</eval>
<default>3</default>
</config>
</TCEforms>
</settings.postsPerPage>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
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
use Psr\Http\Message\ResponseInterface;
class PostController extends \FriendsOfTYPO3\BlogExample\Controller\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
Some extensions offer configuration in the format YAML, see YAML.
There is a YamlFileLoader which can be used to load YAML files.