In diesem Tutorial lernen Sie, wie Sie ein Frontend-Plugin in Ihrer Extension hinzufügen, und was dafür nötig ist.

tt_content.php - Plugin registrieren und ggf. Flexform

Wie in diesem Beispiel gleich zu sehen, heißt meine Extension einfach "contentelements"

Legen Sie ggf. Configuration/TCA/Overrides/tt_content.php an. In der Datei registrieren wir unser Plugin und fügen ggf. eine Flexform Configuration hinzu:

 

<?php
  defined('TYPO3') || die();

  \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'Contentelements',
    'Faqelement',
    'FAQ Element'
  );

  $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['contentelements_faqelement'] = 'pi_flexform';
  \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
    'contentelements_faqelement',
    'FILE:EXT:contentelements/Configuration/FlexForms/flexform_faqelement.xml'
  );

ext_localconf.php - Plugin konfigurieren

Nun wird das Plugin konfiguriert um z.B. die Verbindung der Actions mit den Fluid-Templates herzustellen:

 

<?php
  defined('TYPO3') || die();

  (static function() {

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Contentelements',
        'Faqelement',
        [
            \LdoerrDotCom\Contentelements\Controller\MainController::class => 'faqlist'
        ],
        // non-cacheable actions
        [
            \LdoerrDotCom\Contentelements\Controller\MainController::class => ''
        ]
    );

    // wizards
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
        'mod {
            wizards.newContentElement.wizardItems.plugins {
                elements {
                    faqelement {
                        iconIdentifier = contentelements-plugin-faqelement
                        title = FAQ Element
                        description = FAQ Element
                        tt_content_defValues {
                            CType = list
                            list_type = contentelements_faqelement
                        }
                    }
}
                show = *
            }
       }'
    );


  })();

Controller Actions hinzufügen

Jetzt können wir im Controller die gewünschten Actions hinzufügen:

 

class MainController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
    /**
     * action faqlist
     *
     * @return \Psr\Http\Message\ResponseInterface
     */
    public function faqListAction(): \Psr\Http\Message\ResponseInterface
    {
        $data = $this->configurationManager->getContentObject()->data;
        
        $this->view->assign('data', $data);
        return $this->htmlResponse();
    }
}

 

 

Fluid Template hinzufügen

Zum Schluss legen wir im Ressources/Private/Templates Ordner unser Fluid-Template an. In dem Fall: "FaqList.html".

 

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />

<f:section name="content">

  faqelement

</f:section>
</html>
Previous PostTYPO3 Extbase: Extensionconfig von ext_conf_template.txt laden
Next PostTYPO3 Extbase: PersistenceManager für TYPO3 V12 nutzen