---
title: "EXTBASEPLUGIN"
manual: "TypoScript Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3tsref:cobj-extbaseplugin@main"
source: "ContentObjects/Extbaseplugin/Index.rst"
rendered: "2026-09-18T05:17:19+00:00"
---

# EXTBASEPLUGIN {#extbaseplugin}

The content object `EXTBASEPLUGIN` allows to render
[Extbase](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/Extbase/Index.html#extbase) plugins.

-   [Properties](https://docs.typo3.org/permalink/t3tsref:properties@main)
-   [Example: Display an Extbase plugin via TypoScript](https://docs.typo3.org/permalink/t3tsref:example-display-an-extbase-plugin-via-typoscript@main)
-   [Example: Display an Extbase plugin in a Fluid template](https://docs.typo3.org/permalink/t3tsref:example-display-an-extbase-plugin-in-a-fluid-template@main)

## Properties {#properties}

### cache {#cache}

-   **cache**

    -   *Type:* [cache](https://docs.typo3.org/permalink/t3tsref:cache@main)

    See [cache function description](https://docs.typo3.org/permalink/t3tsref:cache@main) for details.

### extensionName {#extensionname}

-   **extensionName**

    -   *Type:* [string](https://docs.typo3.org/permalink/t3tsref:data-type-string@main)

    The [extension name](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/BestPractises/NamingConventions.html#extension-naming-extensionName).

### pluginName {#pluginname}

-   **pluginName**

    -   *Type:* [string](https://docs.typo3.org/permalink/t3tsref:data-type-string@main)

    The plugin name.

## Example: Display an Extbase plugin via TypoScript {#example-display-an-extbase-plugin-via-typoscript}

**EXT:my_extension/Configuration/Sets/Main/setup.typoscript**

```typoscript
page.10 = EXTBASEPLUGIN
page.10.extensionName = MyExtension
page.10.pluginName = MyPlugin
```

## Example: Display an Extbase plugin in a Fluid template {#example-display-an-extbase-plugin-in-a-fluid-template}

It is possible to display an Extbase plugin in Fluid using the
[CObject ViewHelper \<f:cObject>](https://docs.typo3.org/other/typo3/view-helper-reference/main/en-us/Global/CObject.html#typo3-fluid-cobject):

**EXT:my_extension/Resources/Private/Templates/Pages/SomeTemplate.fluid.html**

```html
<!-- ... -->
<f:cObject
        typoscriptObjectPath="lib.myPlugin"
        data="{someValue: page.pageRecord.someValue, someSetting: site.someSetting}"
/>

```

Create a lib object which utilizes the `EXTBASEPLUGIN` into
a `lib` object:

**EXT:my_extension/Configuration/Sets/Main/setup.typoscript**

```typoscript
lib.myPlugin = EXTBASEPLUGIN
lib.myPlugin {
  extensionName = MyExtension
  pluginName = MyPlugIn1
  settings.detailPid = 42
}

```

For `extensionName` and `pluginName` use the names as configured in
`\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin()`:

**EXT:my_extension/ext_localconf.php**

```php
<?php

use MyVendor\MyExtension\Controller\MyController;
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;

defined('TYPO3') || die('Access denied.');

ExtensionUtility::configurePlugin(
  'MyExtension',
  'MyPlugIn1',
  [MyController::class => 'list, show'],
  [],
  ExtensionUtility::PLUGIN_TYPE_CONTENT_ELEMENT,
);

```

If you passed data to the ViewHelper, you can access the data in the controller's
action by getting the currentContentObject from the request:

**EXT:my_extension/Classes/Controller/MyController.php**

```php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Controller;

use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;

class MyController extends ActionController
{
  public function listAction(): ResponseInterface
  {
    /** @var ContentObjectRenderer $contentObject */
    $contentObject = $this->request->getAttribute('currentContentObject');
    $dataFromTypoScript = $contentObject->data;
    $someValue = (int)($dataFromTypoScript['someValue'] ?? 0);
    $someSetting = $dataFromTypoScript['someSetting'] ?? '';
    // Do something
    return $this->htmlResponse();
  }
}

```

> [!NOTE]
> You should treat all data from the
> `ContentObjectRenderer` as
> potential user input. Do not use it unescaped and do not trust to receive
> certain types.
