{"id":418,"date":"2016-01-14T18:22:42","date_gmt":"2016-01-14T16:22:42","guid":{"rendered":"https:\/\/schwarzer.de\/blog\/?p=418"},"modified":"2020-09-15T14:29:22","modified_gmt":"2020-09-15T12:29:22","slug":"einfuehrung-typo3-extension-entwicklung-mit-extbase","status":"publish","type":"post","link":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/","title":{"rendered":"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase"},"content":{"rendered":"<p><!-- <ezTOC> -->&nbsp;<\/p>\n<h2 id=\"einstieg\">Einf\u00fchrung in die Typo3-Extension Entwicklung: Welche Version?<\/h2>\n<p>Das allgemein bekannte Content Management System Typo3 ist weit verbreitet und in verschiedenen Versionen im Einsatz. Die Version <strong>Typo3 4.3<\/strong> zum Beispiel gibt es seit Ende 2009 und erst im Jahre 2011 kam die Abl\u00f6sung in der Version 4.5. Ganze drei Jahre sp\u00e4ter gab es einen gr\u00f6\u00dferen Versionsprung &#8211; die <strong>Version 6.2<\/strong> tauchte im Showcase der CMS-Systeme auf. Nun ja, das waren bei weitem noch nicht alle Typo3 Versionen, aber f\u00fcr uns im Moment die wichtigsten.<\/p>\n<h2 id=\"entwicklung-von-typo3-erweiterungen-mit-pibase\">Entwicklung von Typo3-Erweiterungen mit Pibase<\/h2>\n<p>F\u00fcr die Extension-Entwicklung war seit einer l\u00e4ngeren Zeit <code>pibase<\/code> der Standard. Genauer gesagt bis zur Version 4.5. Dieses System zur <strong>Implementierung eigener Erweiterungen<\/strong> f\u00fcr das Content Management System Typo3 hat allerdings seinen Dienst getan und wird ab Typo3 6.2 zum Beispiel nicht standardm\u00e4\u00dfig unterst\u00fctzt. Das scheint im ersten Augenblick zwar ein Problem zu sein &#8212; der eine oder andere Entwickler mag in Stress verfallen und anfangen, seine <code>pibase<\/code>-Extensions an die n\u00e4chste Version anpassen. Dieser Gedanke ist durchaus berechtigt, aber dar\u00fcber sind sich die Typo3 Entwickler im Klaren. Damit auf die alte Art entwickelten Erweiterungen auch in der neuen Version 6.2 funktionieren, gibt es einen sogenannten Compatibility Layer, oder zu deutsch: eine Kompatibilit\u00e4tsschicht, welche die <strong>pibase Extensions<\/strong> auch auf neueren Versionen von Typo3 laufen l\u00e4sst.<\/p>\n<h2 id=\"-berlegungen\">Pibase und Extbase: \u00dcberlegungen<\/h2>\n<p>Aber irgendwo im Hinterkopf schwirrt trotzdem der beunruhigende Gedanke herum: Was passiert mit meiner <code>pibase<\/code>-Extension wenn die Typo3-Versionen weiter voranschreiten. Gibt es dann immer noch den Kompatibilit\u00e4ts-Layer? Als moderner Entwickler im 21. Jahrhundert kommt man also fr\u00fcher oder sp\u00e4ter zu dem Schluss, dass man seine Extension portieren sollte. Und zwar von <strong>pibase<\/strong> nach <strong>Extbase<\/strong>. Aber was macht dieses &#8222;Extbase&#8220; so anders?<\/p>\n<h2 id=\"extension-entwicklung-mit-extbase-was-sonst\">Extension Entwicklung mit Extbase, was sonst<\/h2>\n<p>Seit geraumer Zeit sind Entwickler von CMS-Systemen auf den Trichter gekommen, dass es Sinn machen w\u00fcrde, die Daten an sich, die Verabeitung dieser Daten und die Darstellung strikt von einander zu trennen. Damit hat man einiges gewonnen:<\/p>\n<ul>\n<li>Die \u00dcbersichlichkeit des Quellcodes steigt schon allein aufgrund der physischen Trennung der Dateien<\/li>\n<li>Das Bugfixing l\u00e4sst sich meist auf einen dieser Bereiche reduzieren<\/li>\n<\/ul>\n<p>Konkret sieht das so aus: Der f\u00fcr das Auslesen und Speichern der Daten zust\u00e4ndige Code ist in einem Teil der Extension abgelegt. Man spricht hier von dem <strong>model<\/strong> (englisch). Wird hier z.B. vom Kunden gew\u00fcnscht, dass ein bestimmter Datensatz neue Attribute bekommt, muss man nur dieses Datenmodell ge\u00e4ndert werden. Die anderen Teile (die Anzeige und Verabeitung) bleiben davon unber\u00fchrt. Das Konzept zieht sich selbstverst\u00e4ndlich auch durch die anderen Teile der Extbase-Extension-Entwicklung. Nehmen wir an, der besagte Kunde m\u00f6chte die Daten einer Einkaufliste statt in einer Tabelle in einer Checkliste und zus\u00e4tzlich auch in einer CSV-Datei zur Verf\u00fcgung stellen. Auch hier kommt die St\u00e4rke von Extbase zum Vorschein: Da es eben <em>nur<\/em> um die ver\u00e4nderte Darstellung (<strong>view<\/strong>) geht, muss auch <em>nur<\/em> diese angefasst werden. Und wenn der Preis auf der Einkaufsliste anders kalkuliert werden sollen, dann hat das logischerweise nichts mit den Daten selber, aber auch nichts mit der Datenausgabe zu tun, sondern <strong>nur<\/strong> mit der Verarbeitung, im Extbase-Jargon <strong>controller<\/strong> genannt.<\/p>\n<p>Somit ist es nur logisch, dass dieses Konzept von modernen Content Management Systemen <strong>Model-View-Controller<\/strong> hei\u00dft. Dieses ist nicht nur in Typo3 als <strong>MVC<\/strong> bekannt, sondern auch z.B. in Symfony. F\u00fcr den Entwickler liegt es also deswegen auf der Hand: Habe ich dieses Prinzip der Aufteilung zwischen Daten, Funktionsweise und Anzeige einmal verstanden, kann ich es in modernen CMS-Systemen &#8211; nat\u00fcrlich mit entsprechenden Abwandlungen &#8211; verwenden.<\/p>\n<p>Zur Anzeige der Daten bei der Extbase-Extension Entwicklung ist noch anzumerken, dass auch hier schon mitgedacht wurde. Man muss nicht irgendwelche eigens gestrickten Template-Dateien anlegen, diese einlesen und verarbeiten. Das alles ist schon da und hat auch einen Namen: Die <strong>Fluid Templating Engine<\/strong>. Die Template Dateien lassen sich mit Werten f\u00fcttern und mit Schleifen verzieren. Die Integration in das MVC-Konzept l\u00e4uft im Sinne der Bezeichnung &#8222;fl\u00fcssig&#8220;, weil Konventionen besonders in Typo3 6.2 \u00fcber der Konfiguration stehen (englisch: <strong>convention over configuration<\/strong> oder <strong>coding by convention<\/strong>).<\/p>\n<p>Alles in allem ist die Programmierung von Extensions auf Extbase-Basis im Vergleich zum mittlerweile veralteten <code>extbase<\/code> der Standard schlechthin und sollte zumindest bei neuen Projekten unbedingt angegangen werden.<\/p>\n<p>Das alles h\u00f6rt sich im ersten Moment vielleicht abstrakter an, als es ist. Deswegen hier ein leicht nachzuvollziehendes Fallbeispiel.<\/p>\n<h2 id=\"extbase-extension-entwicklung-einfaches-file-sharing\">Extbase-Extension-Entwicklung: Einfaches File-Sharing<\/h2>\n<p>Wenn man die Entwicklung einer Extension angehen m\u00f6chte, ist es essenziell sich zuerst nicht zu wenig Gedanken dar\u00fcber zu machen, welche Daten gebraucht werden. Dabei sollte man ein bisschen um die Ecke denken, um sp\u00e4teren unn\u00f6tigen \u00c4nderungsaufwand zu vermeiden. In unserem Beispiel m\u00f6chten wir einen simplen File-Sharing Service erstellen. Ein wildfremder Benutzer findet auf unsere Website, wo er eine oder mehrere Dateien hochladen kann. Zum einfachen Schutz vor Missbrauch unseres kostenlosen Dienstes muss er noch vor dem Hochladen weiter unten auf der Webseite seine E-Mail-Adresse angeben, \u00fcber die er sich mehr oder weniger authentifizieren kann. Der User selber kann verschiedenartige Dateien hochladen. So zum Beispiel Bilder und Code-Snippets. Je nach dem, welche Datei das dann ist, kann er zus\u00e4tzliche Metadaten eingeben: Bildh\u00f6he, -breite oder im Falle der Snippets zum Beispiel die Programmiersprache des hochgeladenen Codes.<\/p>\n<p>Aufgrund dieser Vorstellung brauchen wir definitiv einen Speicherort f\u00fcr die Daten des Benutzers und die Dateien selbst. Die Dateien haben zwar gemeinsame Informationen (Dateiname, MD5-Checksumme, Dateigr\u00f6\u00dfe), aber unterscheiden sich abh\u00e4ngig von Dateiendung in anderen Bereichen. F\u00fcr einen auf Optimierung geschulten Entwickler schreit das einfach nach Vererbung. In einem Diagramm kann und sollte man sich noch <em>vor<\/em> der eigentlichen Entwicklung der neuen Extbase-Typo3-Extension aufzeichnen, wie das <strong>Datenmodell<\/strong> aussehen soll:<\/p>\n<figure id=\"attachment_420\" aria-describedby=\"caption-attachment-420\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension.png\"><img class=\"size-medium wp-image-420\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension-300x195.png\" alt=\"Infografik 1: Datenmodell der Extbase-Typo3-Extension\" width=\"300\" height=\"195\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension-300x195.png 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension-768x499.png 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension-214x140.png 214w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension.png 1000w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension-300x195@2x.png 600w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Infografik-1-Datenmodell-der-Extbase-Typo3-Extension-214x140@2x.png 428w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-420\" class=\"wp-caption-text\">Infografik 1: Datenmodell der Extbase-Typo3-Extension<\/figcaption><\/figure>\n<p>Wenn man seine Vorstellungen oder die des Kunden auf dem Papier schwarz auf wei\u00df stehen sieht, f\u00e4llt es vielen leichter, Datenstrukturen und gemeinsam genutzte Attribute, wie in unserem Beispiel Bilder, Snippet und Dateien, zu erkennen und zusammenzuf\u00fchren. Dieses Prozedere wird auch <strong>Domain-Driven-Design<\/strong> genannt und &#8211; um noch einmal auf den Anfang zur\u00fcckzukommen &#8211; das hat seine Vorteile: Wenn ein neuer Dateityp hinzukommen soll, muss man unser Modell nur erweitern. Die bestehenden Strukturen werden also nicht angefasst. Und wenn der Kunde den Wunsch \u00e4u\u00dfert, zu jeder hochgeladenen Datei zus\u00e4tzlich einen Zeitstempel hinzuzuf\u00fcgen, wird der Programmierer nur die Datenstruktur &#8222;Datei&#8220; \u00e4ndern, weil das neue Attribut an die <code>Bilder<\/code> und <code>Snippet<\/code> vererbt wird.<\/p>\n<p>Somit w\u00e4re f\u00fcr eine neue Erweiterung der erste Schritt getan: Man hat ein Modell der Daten entworfen. Die n\u00e4chsten Schritte, was mit den Daten gemacht werden soll und wie diese Daten dargestellt werden, folgen dann direkt danach.<\/p>\n<p>Titelbild: By The Photographer (Own work) [<a href=\"http:\/\/creativecommons.org\/publicdomain\/zero\/1.0\/deed.en\">CC0<\/a>], <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File%3AOld_TV.jpg\">via Wikimedia Commons<\/a> und By Netspy (Own work) [<a href=\"http:\/\/www.gnu.org\/copyleft\/fdl.html\">GFDL<\/a> or <a href=\"http:\/\/creativecommons.org\/licenses\/by\/3.0\">CC BY 3.0<\/a>], <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File%3AIPad_Air_2_Wikipedia.png\">via Wikimedia Commons<\/a>, Infografik \u00a9 Schwarzer.de<!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Einf\u00fchrung in die Typo3-Extension Entwicklung: Welche Version? Das allgemein bekannte Content Management System Typo3 ist weit verbreitet und in [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":429,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[51,287],"tags":[255,266,316],"features_image":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png","rk_cat":null,"rk_date":"14.01.2016","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase - 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\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase - Schwarzer.de Blog\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Einf\u00fchrung in die Typo3-Extension Entwicklung: Welche Version? Das allgemein bekannte Content Management System Typo3 ist weit verbreitet und in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/\" \/>\n<meta property=\"og:site_name\" content=\"Schwarzer.de Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-14T16:22:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-15T12:29:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1111\" \/>\n\t<meta property=\"og:image:height\" content=\"904\" \/>\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=\"6 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\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png\",\"contentUrl\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png\",\"width\":1111,\"height\":904,\"caption\":\"Einfuehrung Extbase vs. Pibase bei der Typo3 Extension Entwicklung\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#webpage\",\"url\":\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/\",\"name\":\"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase - Schwarzer.de Blog\",\"isPartOf\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#primaryimage\"},\"datePublished\":\"2016-01-14T16:22:42+00:00\",\"dateModified\":\"2020-09-15T12:29:22+00:00\",\"author\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\"},\"breadcrumb\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase\"}]},{\"@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":"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase - 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\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/","og_locale":"de_DE","og_type":"article","og_title":"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase - Schwarzer.de Blog","og_description":"&nbsp; Einf\u00fchrung in die Typo3-Extension Entwicklung: Welche Version? Das allgemein bekannte Content Management System Typo3 ist weit verbreitet und in [&hellip;]","og_url":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/","og_site_name":"Schwarzer.de Blog","article_published_time":"2016-01-14T16:22:42+00:00","article_modified_time":"2020-09-15T12:29:22+00:00","og_image":[{"width":1111,"height":904,"url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"6 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\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png","contentUrl":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/01\/Einfuehrung-Extbase-vs-Pibase-in-Typo3.png","width":1111,"height":904,"caption":"Einfuehrung Extbase vs. Pibase bei der Typo3 Extension Entwicklung"},{"@type":"WebPage","@id":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#webpage","url":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/","name":"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase - Schwarzer.de Blog","isPartOf":{"@id":"https:\/\/schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#primaryimage"},"datePublished":"2016-01-14T16:22:42+00:00","dateModified":"2020-09-15T12:29:22+00:00","author":{"@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a"},"breadcrumb":{"@id":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/schwarzer.de\/blog\/einfuehrung-typo3-extension-entwicklung-mit-extbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Einf\u00fchrung in die Typo3-Extension Entwicklung mit Extbase"}]},{"@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\/418"}],"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=418"}],"version-history":[{"count":14,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/418\/revisions"}],"predecessor-version":[{"id":1297,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/418\/revisions\/1297"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/429"}],"wp:attachment":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}