Hallo Forum,
ich war schon in der Suche unterwegs, habe aber nichts passendes gefunden.
Ich bin dabei, ein eigenes Content-Element zu erstellen. Das hat bis jetzt (alte Projekte) auch immer funktioniert.
In diesem Projekt habe ich nun alles über Annotations aufgebaut. Vielleicht liegt da mein Problem, weil ich etwas grundlegendes vergesse.
Mein Problem ist, dass im Backend 'nur' das Feld Typ mit der Auswahl des Elements erscheint. Kein Feld vom Typ Text. Auch andere Felder, die ich über die DCA angelegt habe und der Palette hinzugefügt habe, werden im Backend nicht angezeigt.
Das müsste doch über die DCA einfach erweiterbar sein, oder muss ich etwa alle Felder per 'PaletteManipulator' hinzufügen? Ich möchte ja zu keiner bestehenden DCA ein Feld hinzufügen. Daher müsste es doch auch ohne gehen, oder?
Vielleicht hat jemand einen Tipp für mich...?
Ich habe mich an die Anleitung gehalten.
Erst die DCA erweitert:
PHP-Code:
// contao/dca/tl_content.php
$GLOBALS['TL_DCA']['tl_content']['palettes']['ce_stageteaser'] = '{type_legend},type;{text_legend},text';
Dann den Controller per Annotation eingebunden:
PHP-Code:
<?php
// src/Controller/ContentElement/StageTeaserController.php
namespace App\Controller\ContentElement;
use Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
use Contao\CoreBundle\ServiceAnnotation\ContentElement;
use Contao\ContentModel;
use Contao\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* @ContentElement(category="extra", template="ce_stageteaser")
*/
class StageTeaserController extends AbstractContentElementController
{
protected function getResponse(Template $template, ContentModel $model, Request $request): Response
{
$template->text = $model->text;
return $template->getResponse();
}
}
Das Template angelegt:
Code:
contao/templates/ce_stageteaser.html5
Und die Sprachdatei erstellt:
PHP-Code:
// contao/languages/de/default.php
$GLOBALS['TL_LANG']['CTE']['ce_stageteaser'] = ['Stageteaser','Bindet ein Stageteaser-Element ein.'];