{"id":355,"date":"2015-05-18T11:54:56","date_gmt":"2015-05-18T09:54:56","guid":{"rendered":"https:\/\/schwarzer.de\/blog\/?p=355"},"modified":"2020-09-17T15:19:46","modified_gmt":"2020-09-17T13:19:46","slug":"typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden","status":"publish","type":"post","link":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/","title":{"rendered":"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden"},"content":{"rendered":"<p><!-- <ezTOC> -->Beim Programmieren von Extbase-Extensions in TYPO3 kommt es oft vor, dass die Extensions nicht nur aus dem reinen PHP-Sourcecode besteht, sondern dass auch noch externe Ressource wie CSS-Dateien oder JavaScripte mit dem gerenderten HTML-Code ausgeliefert werden m\u00fcssen.<br \/>\nAber wie bindet man diese Ressourcen, also die JavaScripte und CSS-Dateien, in die Extbase-Extension ein. Wohin geh\u00f6rt der Sourcecode, der das bewerktstelligt? Gibt es eventuell mehrere M\u00f6glichkeiten die JavaScript- und CSSDateien einzubinden? Und was sind die Vor- und Nachteile der Methoden?<br \/>\n<!--more--><\/p>\n<p>Wie fast immer gibt es in TYPO3 viele Wege, wie man ein Problem l\u00f6sen kann. Ich m\u00f6chte hier ein paar der g\u00e4ngigsten Methoden vorstellen und gleichzeitig die Vor- und Nachteile beschreiben, die diese Methoden aufweisen.<\/p>\n<h3>Externe JavaScript und CSS-Dateien im TYPOScript Page-Template einbinden<\/h3>\n<p>Die wohl gebr\u00e4uchlichste Art, eine JavaScript-Datei in TYPO3 einzubinden, so dass sie mit einer Extbase-Extension auf einer TYPO3-Seite an den Browser ausgeliefert wird, ist das Einbinden der JavaScript-Datei im Page-Template. Das kann sowohl im Haupt-Template von TYPO3 als auch in einem speziell daf\u00fcr angelegten Extension-Template auf einer beliebigen Seite im TYPO3-Backend geschehen. M\u00f6glich macht das seit TYPO3 4.5 die Funktion includeJS des PAGE Objekts, die den entsprechenden Link zu der Datei iin den Headerpart des ausgelieferten HTML-Codes einf\u00fcgt.<\/p>\n<p>Hier ein Beispiel in TYPOScript:<\/p>\n<pre>page.includeJS {\r\n  1 = http:\/\/code.jquery.com\/jquery-latest.min.js\r\n  1.external = 1\r\n  1.forceOnTop = 1\r\n  2 = http:\/\/ajax.googleapis.com\/ajax\/libs\/jqueryui\/1.10.3\/jquery-ui.min.js\r\n  2.external = 1\r\n  3 = fileadmin\/js\/jquery.cookie.js\r\n  4 = fileadmin\/js\/meine_js_datei.js\r\n}<\/pre>\n<p>der folgendes St\u00fcck HTML-Code im Header der ausgelieferten Seite generiert:<\/p>\n<pre>&lt;script src=\"http:\/\/code.jquery.com\/jquery-latest.min.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"http:\/\/ajax.googleapis.com\/ajax\/libs\/jqueryui\/1.10.3\/jquery-ui.min.js\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"fileadmin\/js\/jquery.cookie.js?1421843811\" type=\"text\/javascript\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"fileadmin\/js\/meine_js_datei.js?1424942853\" type=\"text\/javascript\">&lt;\/script&gt;<\/pre>\n<p>Unter &#8222;4&#8220; wird hier die Datei &#8222;meine_js_datei.js&#8220; aus dem Ordner &#8222;fileadmin\/js&#8220; eingebunden. TYPO3 testet dabei allerdings vorher, ob diese JavaScript-Datei \u00fcberhaupt auf dem Server vorhanden ist. Das kann nat\u00fcrlich zu Problemen f\u00fchren, wenn man JavaScript-Dateien einbinden m\u00f6chte, die auf einem externen Server liegen. F\u00fcr diesen Zweck gibt es, wie man bei &#8222;1&#8220; und &#8222;2&#8220; sehen kann, den Parameter &#8222;external&#8220; der TYPO3 mitteilt, dass die Datei nicht auf dem eigenen Server liegt und auch keine \u00dcberpr\u00fcfung stattfinden soll. In dem Codebeispiel werden hier unter &#8222;1&#8220; die neueste Version von jQuery direkt von &#8222;jquery.com&#8220; eingebunden. Bei &#8222;2&#8220; wird von der domain &#8222;googleapis.com&#8220; die User-Interface-Bibliothek &#8222;jQuery UI&#8220; eingef\u00fcgt.<br \/>\nDamit die Dateien auch in der richtigen Reihenfolge eingebunden werden und etwa nicht zuerst versucht wird eine jQuery-Erweiterung zu initialisieren bevor jQuery \u00fcberhaupt geladen wurde, kann man noch den Parameter &#8222;forceOnTop&#8220; angeben, der bewirkt, dass die entsprechende Datei zuerst geladen wird.<\/p>\n<p>\u00c4hnlich funktioniert das auch mit dem Einbinden von CSS-Dateien. Schreibt man das folgende St\u00fcck Code in ein TYPOScript-Template, vorzugsweise das Haupt-Template, dann wird TYPO3 einen Link in den HTML-Header der ausgelieferten Seite setzen, der die CSS-Datei &#8222;meine_css_datei.css&#8220; aus dem Ordner &#8222;fileadmin\/templates\/css&#8220; einbindet.<\/p>\n<pre>page.includeCSS {\r\n  1 = fileadmin\/templates\/css\/meine_css_datei.css\r\n}<\/pre>\n<p>Auch hier k\u00f6nnen wieder zus\u00e4tzliche Parameter wie &#8222;external&#8220; oder &#8222;forceOnTop&#8220; angegeben werden, die es erlauben CSS-Dateien von anderen Servern einzubinden bzw. TYPO3 dazu veranlassen die Datei als erstes einzubinden.<\/p>\n<p>M\u00f6chte man die Dateien lieber im Footer als im Header einbinden, z.B. um zu verhindern, dass die Seite erst angezeigt wird, nachdem alle Dateien aus dem HTML-Header geladen wurden, dann sollte man die Funktion &#8222;includeJSFooter&#8220; bzw. &#8222;includeCSSFooter&#8220; benutzen. Eine Referenz der Parameter der vier Funktionen findet man bei &#8222;http:\/\/docs.typo3.org\/typo3cms\/TyposcriptReference\/Setup\/Page\/Index.html&#8220;<\/p>\n<h4>Vor- und Nachteile beim Einbinden von Dateien im TYPOScript Page-Template<\/h4>\n<h5>Die Nachteile:<\/h5>\n<p>Die CSS-Dateien und JavaScripte werden, weil sie ja im Page-Template stehen, auch dann eingebunden, wenn sie eventuell gar nicht auf der Seite gebraucht werden. Das hei\u00dft es werden auch mehr Dateien bzw. Daten \u00fcber das Internet geladen als eigentlich f\u00fcr die Darstellung der Seite gebraucht werden. Zus\u00e4tzlich ist auch (beim erstmaligen Laden) f\u00fcr jede Datei ein zus\u00e4tzlicher Server-Request notwendig, was die Ladezeit unn\u00f6tig nach oben treibt.<\/p>\n<h5>Die Vorteile:<\/h5>\n<p>Da TYPO3 alle ben\u00f6tigten CSS-Dateien und JavaScripte als solche bekannt gemacht wurden, k\u00f6nnen diese mit Hilfe von systemeigenen Funktionen verkleinert, zusammengef\u00fcgt und gepackt werden (minified, concatenated and compressed). So ist beim Laden der Seite nur ein Server-Request pro CSS-Datei bzw. JavaScript notwendig und die zu ladenden Dateien sind Dank Compression auch noch sehr klein. <\/p>\n<h3>Externe JavaScript und CSS-Dateien im TS-Setup der Extbase-Extension einbinden<\/h3>\n<p>Nat\u00fcrlich hat auch Extbase selbst Mechanismen um JavaScript- und CSS-Dateien zusammen mit einer Extension auszuliefern. Wie noch bei den alten PI-Base-Extensions von TYPO3 gibt es auch bei Extbase-Extensions die M\u00f6glichkeit eine TYPOScript-Setup Datei zu schreiben, die beim Laden der Extension ber\u00fccksichtigt wird. Diese TS-Setup Datei findet man gew\u00f6hnlich im Ordner <\/p>\n<pre>\/typo3conf\/ext\/<EXTENSIONNAME>\/Configuration\/TypoScript\/setup.txt<\/pre>\n<p>Dort kann man, neben der Grundkonfiguration seiner Extbase-Extension, auch angeben ob und welche Dateien beim Ausliefern der Extension mit auf der Seite eingebunden werden sollen. M\u00f6chte man zum Beispiel eine JavaScript-Datei zusammen mit der Extbase-Extension ausliefern, so legt man sich im Ordner &#8222;\/typo3conf\/ext\/<EXTENSIONNAME>\/Resources\/Public&#8220; einen Ordner &#8222;JS&#8220; f\u00fcr Javascript-Dateien an und erstellt darin seine Datei. In meinem Beispiel ist es die Datei &#8222;meine_js_datei.js&#8220;. Jetzt muss nur noch am Ende der TYPOScript-Setup Datei die Zeile<\/p>\n<pre>page.includeJS.tx_<EXTENSIONNAME> = EXT:<EXTENSIONNAME>\/Resources\/Public\/JS\/meine_js_datei.js<\/pre>\n<p>eingetragen werden und schon wird jedesmal wenn auf einer Seite die Extbase-Extension angezeigt wird auch die JavaScript-Datei mit ausgeliefert.<\/p>\n<p>Genau so funktioniert das Ganze auch wieder mit CSS-Dateien. Man erstellt sich im Ordner &#8222;\/typo3conf\/ext\/<EXTENSIONNAME>\/Resources\/Public&#8220; einen Ordner &#8222;CSS&#8220; und legt seine CSS-Dateien dort hinein. Anschlie\u00dfend tr\u00e4gt man in der TYPOScript-Setup Datei die Zeile zum Einbinden ein:<\/p>\n<pre>page.includeCSS.tx_<EXTENSIONNAME> = EXT:<EXTENSIONNAME>\/Resources\/Public\/CSS\/meine_css_datei.css<\/pre>\n<h4>Vor- und Nachteile beim Einbinden von Dateien im TS-Setup der Extbase-Extension<\/h4>\n<h5>Die Vorteile:<\/h5>\n<p>Die Vorteile sind nat\u00fcrlich offensichtlich, es werden immer nur die f\u00fcr eine Extension relevanten Dateien mit der Seite ausgeliefert. Diese k\u00f6nnen Dateien k\u00f6nnen nat\u00fcrlich auch verkleinert und gepackt sein (minified and compressed).<\/p>\n<h5>Die Nachteile:<\/h5>\n<p>Zwar werdem beim Einbinden von CSS-Dateien und JavaScripten im TS-Setup immer nur die Dateien ausgeliefert, die zu den TYPO3-Extensions geh\u00f6ren, die auch wirklich auf der Seite angezeigt werden, aber das muss nicht hei\u00dfen, dass die Dateien auch bei jedem Controller ben\u00f6tigt werden. Das hei\u00dft eventuell wird auch hier \u00fcberfl\u00fcssiger Overhead erzeugt. Als Beispiel k\u00f6nnte man eine einfache Darstellung einer Tabelle nehmen, die die beiden Actions &#8222;list&#8220; und &#8222;show&#8220; besitzt. Die &#8222;show&#8220;-Action stellt ein einzelnes Objekt aus der Liste dar, die &#8222;list&#8220;-Action w\u00fcrde eine Listen-Darstellung bieten, die mit Hilfe eines TableSorter-JavaScripts sortiert und gefiltert werden kann. In diesem Beispiel w\u00fcrde dann auch in der Einzelansicht das JavaScript eingebunden werden, obwohl es nicht ben\u00f6tigt wird. <\/p>\n<h3>Externe JavaScript und CSS-Dateien im Controller einer Extbase-Extension einbinden<\/h3>\n<p>Die bisher vorgestellten Methoden werden f\u00fcr die meisten Anwendungen reichen, aber gerade bei gro\u00dfen Extbase-Extensions mit vielen Controllern hat man oft das Problem, dass abh\u00e4ngig vom Controller bestimmte JavaScripte geladen werden m\u00fcssen. Zum Beispiel braucht man ein TableSorter-JavaScript zwar bei der Listen-Darstellung der Daten, also der &#8222;list&#8220;-Action, aber bei der Einzeldarstellung, der &#8222;show&#8220;-Action, eines Items m\u00fcsste das Script eigentlich nicht geladen werden.<br \/>\nDie Idee dabei ist, den Link zu der Datei einfach im TSFE bei den Header-Daten einzutragen.<\/p>\n<pre>public function listAction() {\r\n   $items = $this->itemRepository->findAll();\r\n   $this->view->assign('items', items);\r\n   $GLOBALS['TSFE']->additionalHeaderData['tx_<EXTENSIONNAME>'] = '<script type=\"text\/javascript\" src=\"' . \\TYPO3\\CMS\\Core\\Utility\\ExtensionManagementUtility::siteRelPath($this->request->getControllerExtensionKey()) . 'Resources\/Public\/JS\/meine_js_datei.js\"><\/script>';\r\n}<\/pre>\n<p>Hier wieder das entsprechende Code-St\u00fcck f\u00fcr das Einbinden von CSS-Dateien.<\/p>\n<pre>$GLOBALS['TSFE']->additionalHeaderData['tx_test'] = '<link charset=\"utf-8\" href=\"' . \\TYPO3\\CMS\\Core\\Utility\\ExtensionManagementUtility::siteRelPath($this->request->getControllerExtensionKey()) . 'Resources\/Public\/CSS\/meine_css_datei.css\" rel=\"stylesheet\" \/>';<\/pre>\n<p>Dadurch wird die angegebene Zeile im Header-Teil des ausgelieferten TYPO3-Seite eingetragen.<\/p>\n<h4>Vor- und Nachteile beim Einbinden von JavaScript und CSS-Dateien im Controller einer Extbase-Extension<\/h4>\n<h5>Die Vorteile:<\/h5>\n<p>Es werden jetzt tats\u00e4chlich nur noch die Dateien ausgeliefert, die tats\u00e4chlich zum Anzeigen und zur Funktion der TYPO3-Extension gebraucht werden. Das ist nat\u00fcrlich gerade bei Webseiten interessant, die sehr viele Extensions mit sehr vielen Controllern besitzen und bei denen immer nur sehr wenige davon gleichzeitig auf einer Seite angezeigt werden.<\/p>\n<h5>Die Nachteile:<\/h5>\n<p>F\u00fcr das Verkleinern und Packen (minify and compress) der Dateien muss man bei dieser Methode leider selbst sorgen. Ein weiterer Nachteil f\u00e4llt ins Gewicht, wenn sehr viele kleine Extensions gleichzeitig auf einer Seite angezeigt werden. Dort w\u00fcrde dann ja wieder f\u00fcr jede dieser Dateien ein zus\u00e4tzlicher Server-Request notwendig, der die Ladezeit der Seite nach oben treibt.<\/p>\n<h3>Fazit:<\/h3>\n<p>F\u00fcr welche Art seine Dateien einzubinden man sich letztendlich entscheidet, h\u00e4ngt ganz von der Gr\u00f6\u00dfe und Anzahl der einzubindenden Dateien ab. Meist wird es auch eine Kombination der verschiedenen M\u00f6glichkeiten herauslaufen. Es kann durchaus sinnvoll sein die CSS-Dateien, die die generelle Struktur der Seite und das Layout der TYPO3-Inhaltselemente beschreibt, statisch im Seiten-Template und die Action spezifischen Dateien direkt im Code des Controllers der Extbase-Extension einzubauen.<br \/>\n<!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Programmieren von Extbase-Extensions in TYPO3 kommt es oft vor, dass die Extensions nicht nur aus dem reinen PHP-Sourcecode besteht, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":374,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[51,287],"tags":[79,255,256,258,262,264,266,267,269,350,351,352],"features_image":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png","rk_cat":null,"rk_date":"18.05.2015","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden - Schwarzer.de Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden - Schwarzer.de Blog\" \/>\n<meta property=\"og:description\" content=\"Beim Programmieren von Extbase-Extensions in TYPO3 kommt es oft vor, dass die Extensions nicht nur aus dem reinen PHP-Sourcecode besteht, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/\" \/>\n<meta property=\"og:site_name\" content=\"Schwarzer.de Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-18T09:54:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-17T13:19:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png\" \/>\n\t<meta property=\"og:image:width\" content=\"745\" \/>\n\t<meta property=\"og:image:height\" content=\"260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hans-J\u00fcrgen Schwarzer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\",\"url\":\"https:\/\/schwarzer.de\/blog\/\",\"name\":\"Schwarzer.de Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/schwarzer.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png\",\"contentUrl\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png\",\"width\":745,\"height\":260,\"caption\":\"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#webpage\",\"url\":\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/\",\"name\":\"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden - Schwarzer.de Blog\",\"isPartOf\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#primaryimage\"},\"datePublished\":\"2015-05-18T09:54:56+00:00\",\"dateModified\":\"2020-09-17T13:19:46+00:00\",\"author\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\"},\"breadcrumb\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\",\"name\":\"Hans-J\u00fcrgen Schwarzer\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g\",\"caption\":\"Hans-J\u00fcrgen Schwarzer\"},\"description\":\"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.\",\"url\":\"#\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden - Schwarzer.de Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/","og_locale":"de_DE","og_type":"article","og_title":"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden - Schwarzer.de Blog","og_description":"Beim Programmieren von Extbase-Extensions in TYPO3 kommt es oft vor, dass die Extensions nicht nur aus dem reinen PHP-Sourcecode besteht, [&hellip;]","og_url":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/","og_site_name":"Schwarzer.de Blog","article_published_time":"2015-05-18T09:54:56+00:00","article_modified_time":"2020-09-17T13:19:46+00:00","og_image":[{"width":745,"height":260,"url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"8 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/schwarzer.de\/blog\/#website","url":"https:\/\/schwarzer.de\/blog\/","name":"Schwarzer.de Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/schwarzer.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"ImageObject","@id":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png","contentUrl":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/05\/infografik-1-CSS-und-JavaScript-Dateien-in-Extbase-Extensions-einbinden.png","width":745,"height":260,"caption":"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden"},{"@type":"WebPage","@id":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#webpage","url":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/","name":"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden - Schwarzer.de Blog","isPartOf":{"@id":"https:\/\/schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#primaryimage"},"datePublished":"2015-05-18T09:54:56+00:00","dateModified":"2020-09-17T13:19:46+00:00","author":{"@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a"},"breadcrumb":{"@id":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/schwarzer.de\/blog\/typo3-6-2-css-und-javascript-dateien-extbase-extensions-einbinden\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"TYPO3 6.2: CSS- und JavaScript-Dateien in Extbase-Extensions einbinden"}]},{"@type":"Person","@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a","name":"Hans-J\u00fcrgen Schwarzer","image":{"@type":"ImageObject","@id":"https:\/\/schwarzer.de\/blog\/#personlogo","inLanguage":"de-DE","url":"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g","caption":"Hans-J\u00fcrgen Schwarzer"},"description":"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.","url":"#"}]}},"_links":{"self":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/355"}],"collection":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/comments?post=355"}],"version-history":[{"count":22,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/355\/revisions"}],"predecessor-version":[{"id":1303,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/355\/revisions\/1303"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/374"}],"wp:attachment":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}