{"id":1532,"date":"2022-04-30T15:35:40","date_gmt":"2022-04-30T06:35:40","guid":{"rendered":"https:\/\/www.weschkalnies.de\/blog\/?p=1532"},"modified":"2026-03-24T04:13:57","modified_gmt":"2026-03-23T19:13:57","slug":"contao-tl_article-erweitern","status":"publish","type":"post","link":"https:\/\/www.weschkalnies.de\/blog\/contao-tl_article-erweitern\/","title":{"rendered":"Contao: Artikel um Hintergrundbild erweitern"},"content":{"rendered":"<p>Eine neue Datei erstellen in <code>\/contao\/dca\/tl_article.php<\/code> bzw. diese erg\u00e4nzen.<\/p>\n<h3>Eine neue Palette einf\u00fcgen<\/h3>\n<p>Als erstes soll f\u00fcr das Backend eine neue Palette eingef\u00fcgt werden. Alternativ kann man auch eine vorhandene Palette erweitern. Dies wird hier aber zun\u00e4chst nicht gemacht.<br \/>\n<!--more--><\/p>\n<p>Dazu folgenden Code einf\u00fcgen.<\/p>\n<pre>\r\nuse Contao\\CoreBundle\\DataContainer\\PaletteManipulator;\r\n\r\nPaletteManipulator::create()\r\n    \r\n    \/\/ add a new \"custom_legend\" after the \"title_legend\"\r\n    ->addLegend('custom_legend', 'title_legend', PaletteManipulator::POSITION_AFTER)\r\n\r\n     \/\/ directly add new fields to the new legend\r\n     ->addField('bgImage', 'custom_legend', PaletteManipulator::POSITION_APPEND)\r\n\r\n    \/\/ now the field is registered in the PaletteManipulator\r\n    \/\/ but it still has to be registered in the globals array:\r\n    ->applyToPalette('default', 'tl_article')\r\n    ; \r\n<\/pre>\n<p>\u00dcber den PaletteManipulator, den man im ersten Schritt importiert wird die Palette &#8218;custom_legend&#8216; hinter (POSITION_AFTER) der Palette &#8218;title_legend&#8216; eingef\u00fcgt.<br \/>\nWenn man wissen m\u00f6chte, welche Paletten es z.B. im tl_article gibt, kann man sich den Code von tl_article bei Github <a href=\"https:\/\/github.com\/contao\/core-bundle\/blob\/5.x\/src\/Resources\/contao\/dca\/tl_article.php\" target=\"_blank\" rel=\"noopener\">hier<\/a> ansehen.<\/p>\n<p>Anschlie\u00dfend wird der neuen Palette direkt ein neues Feld &#8218;bgImage&#8216; hinzugef\u00fcgt. Im letzten Schritt &#8218;applyToPalette&#8216; wird die neue Palette zum Bereich &#8218;default&#8216; hinzugef\u00fcgt.<\/p>\n<h3>DCA definieren<\/h3>\n<p>Okay die Palette haben wir, fehlt noch das Feld selbst, das wir \u00fcber einen DCA definieren m\u00fcssen.<\/p>\n<p>Der Code wird dazu, wie folgt erg\u00e4nzt:<\/p>\n<pre>\r\n$GLOBALS['TL_DCA']['tl_article']['fields']['bgImage'] =\r\n[\r\n'inputType' =&gt; 'fileTree',\r\n'reference' =&gt; &amp;$GLOBALS['TL_LANG']['tl_article'],\r\n'eval' =&gt; array(\r\n'mandatory' =&gt; false,\r\n'files_only' =&gt; true,\r\n'files' =&gt; true,\r\n'extensions' =&gt; 'svg,png,jpg',\r\n'tl_class' =&gt; 'clr',\r\n),\r\n'sql' =&gt; \"binary(16) NULL\"\r\n];\r\n<\/pre>\n<p>Hier handelt es sich um einen DCA f\u00fcr ein Bild.<\/p>\n<h3>Bezeichnungen f\u00fcr das neue Feld einf\u00fcgen<\/h3>\n<p>In der Datei &#8218;\/contao\/languages\/de\/tl_article.php&#8216; folgenden Code erg\u00e4nzen bzw. erstellen.<br \/>\nHinweis: Das ist jetzt hier nur f\u00fcr die deutsche Sprache. Wenn man mehrere Sprachen unterst\u00fctzen m\u00f6chte, entsprechend in der jeweiligen Sprachdatei z.B. &#8218;\/contao\/languages\/en\/tl_article.php&#8216; entsprechend erg\u00e4nzen.<\/p>\n<pre>\r\n$GLOBALS[\"TL_LANG\"][\"tl_article\"][\"bgImage\"] = [\r\n\"Hintergrundbild\",\r\n\"Bestimmen Sie ein Hintergrundbild des Artikels.\",\r\n];\r\n$GLOBALS[\"TL_LANG\"][\"tl_article\"][\"custom_legend\"] = \"Hintergrundbild f\u00fcr FullSize Artikel\";\r\n<\/pre>\n<h3>Contao: Installtool aufrufen<\/h3>\n<p>Das Contao Installtool aufrufen um das Feld zur Datenbank hinzuzuf\u00fcgen.<\/p>\n<h3>Contao Anwendungscache l\u00f6schen<\/h3>\n<p>Jetzt muss der Anwendungscache von Contao gel\u00f6scht werden, damit die Palette und das Feld auch im Backend erscheint. Man hat drei M\u00f6glichkeiten:<br \/>\na) \u00dcber den Contao Manager<br \/>\nb) \u00dcber die Console\/PHP direkt z.B. \u00fcber<\/p>\n<pre>\r\nvendor\/bin\/contao-console cache:clear --env=dev\r\nvendor\/bin\/contao-console cache:clear --env=prod\r\n<\/pre>\n<p>c) Die Dateien und Verzeichnisse im Verzeichnis &#8218;var\/cache\/&#8216; z.B. mit rm -R -f * l\u00f6schen und dann noch mal das Installtool aufrufen (falls man keinen Contao Manager hat und keinen Zugriff via SSH auf PHP)<\/p>\n<h3>Frontend Ausgabe &#8211; mod_article Template bearbeiten<\/h3>\n<p>Im Template f\u00fcr den Artikel &#8218;mod_article.html5&#8216; kann man jetzt den Wert des Feldes ausgeben.<\/p>\n<pre>\r\n$image = FilesModel::findByUuid($this-&gt;bgImage);\r\n$imagePath = $image-&gt;path;\r\n<\/pre>\n<p>Wenn alles funktioniert hat, sollte es im Backend z.B. so aussehen.<br \/>\n<a href=\"https:\/\/www.weschkalnies.de\/blog\/wp-content\/uploads\/2022\/04\/contao_tl_article_screen.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-thumbnail wp-image-1546\" src=\"https:\/\/www.weschkalnies.de\/blog\/wp-content\/uploads\/2022\/04\/contao_tl_article_screen-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine neue Datei erstellen in \/contao\/dca\/tl_article.php bzw. diese erg\u00e4nzen. Eine neue Palette einf\u00fcgen Als erstes soll f\u00fcr das Backend eine neue Palette eingef\u00fcgt werden. Alternativ kann man auch&#8230;<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34],"tags":[111,35,109,110],"class_list":["post-1532","post","type-post","status-publish","format-standard","hentry","category-contao","tag-artikel-erweitern","tag-contao-2","tag-tl_article","tag-tl_article-erweitern"],"_links":{"self":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts\/1532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/comments?post=1532"}],"version-history":[{"count":23,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts\/1532\/revisions"}],"predecessor-version":[{"id":1731,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts\/1532\/revisions\/1731"}],"wp:attachment":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/media?parent=1532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/categories?post=1532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/tags?post=1532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}