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>