Einfache Extension

Typo3 11.5.5

Ich brauchte eine Möglichkeit, ein Template, das bereits für die Seitenprogrammierung eingesetzt war, beliebig zu positionieren.

Also brauchte ich ein Inhaltselement, das damit verknüpft ist.

Ich benutze bereits ein Template Plugin, das wurde entsprechend erweitert um dies zu bewerkstelligen.

ext_emconf.php mit autoload Bereich erweitern.

$EM_CONF[$_EXTKEY] = [
    'title' => 'Template',
    'description' => 'Template',
    'author' => 'MCW',
    'author_email' => '',
...
    'autoload' => [
        'psr-4' => [
            'SM\\Template\\' => 'Classes'
        ],
    ],
];

ext_localconf.php

<?php
if (!defined('TYPO3_MODE')) {
	die ('Access denied.');
}

call_user_func(function () {

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'sm_template',
        'Searchbox',
        [
            \SM\Template\Controller\SearchboxController::class => 'custom',
        ],
        [],
        \TYPO3\CMS\Extbase\Utility\ExtensionUtility::PLUGIN_TYPE_CONTENT_ELEMENT
    );

    $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);

    $iconRegistry->registerIcon(
        'sm_template-plugin-searchbox',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:sm_template/Resources/Public/Icons/Extension.svg']
    );

});

ext_tables.php

<?php
if (!defined ('TYPO3_MODE')) {
	die ('Access denied.');
}

call_user_func(
    function() {
        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:sm_template/Configuration/TsConfig/User/config.tsconfig">');
        
        \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
            'sm_template',
            'Searchbox',
            'Searchbox positionieren'
        );
});

Classes/Controller/SearchboxController.php erstellen

<?php
namespace SM\Template\Controller;

use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;


class SearchboxController extends ActionController
{

    /**
     * action custom
     *
     * @param \SM\Template\Domain\Model\Searchbox $searchbox
     * @return void
     */
    public function customAction()
    {
        return $this->htmlResponse();
    }
}

Classes/Domain/Model/Searchox.php erstellen

<?php
namespace SM\Template\Domain\Model;

use \TYPO3\CMS\Extbase\DomainObject\AbstractEntity;

class Searchbox extends AbstractEntity
{
    
    /**
     * __construct
     */
    public function __construct()
    {

        //Do not remove the next line: It would break the functionality
        $this->initStorageObjects();
    }
    
}

Resources/Templates/Searchbox/Custom.html
 

<p>Hier benötigtes Template einfügen</p>
 <f:render partial="Searchbox" section="Default" arguments="{formname: 'mobile', siteConfig: siteConfig}"/>