{"id":551,"date":"2016-03-24T09:35:55","date_gmt":"2016-03-24T07:35:55","guid":{"rendered":"https:\/\/schwarzer.de\/blog\/?p=551"},"modified":"2020-09-15T14:21:25","modified_gmt":"2020-09-15T12:21:25","slug":"datenstrukturen-von-extbase-extensions-anpassen","status":"publish","type":"post","link":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/","title":{"rendered":"Datenstrukturen von Extbase-Extensions anpassen"},"content":{"rendered":"<p><!-- <ezTOC> --><\/p>\n<h2 id=\"anpassen-von-typo3-extbase-extensions-ist-nicht-trivial\">Anpassen von Typo3-Extbase-Extensions ist nicht trivial<\/h2>\n<p>So haben wir also unsere <a href=\"https:\/\/schwarzer.de\/blog\/extension-entwicklung-mit-extbase-teil-2\/\">erste Extbase-Extension angelegt<\/a> und mit dem <strong>Extenstion Builder<\/strong> die notwendigen Datenstrukturen erstellt. Alles l\u00e4uft also nach Plan. Nur jetzt kommt der Kunde und m\u00f6chte einige zus\u00e4tzliche Attribute auf der Website ausgegeben haben.<\/p>\n<p><!--more--><\/p>\n<p>Ja, das Ausgeben ist jetzt nicht das Problem. Ein bisschen die Fluid-Templates anpassen und eventuell etwas am Controller drehen. Aber wenn es um die Datenbasis geht, wird es etwas komplizierter. Die Datenbanktabelle mit den Attributen, die <strong>Model<\/strong>-Struktur und die Repositories sind hier nicht ausgenommen. Wir haben die Extension n\u00e4mlich schon mit eigenen Gettern und Settern best\u00fcckt, und sehr, sehr viel Quellcode angepasst. Nat\u00fcrlich kann man jetzt hergehen und im Extension Builder neue Attribute eintragen. Dieser wird f\u00fcr uns dann die Klassen erneut erstellen. Und je nach Konfiguration leider auch unsere Anpassungen \u00fcberschreiben. Bei wirklich komplexen Anpassungen m\u00f6chte man das aber nicht riskieren und braucht deswegen einen tieferen Einblick in die <strong>Datenstrukturen von Extbase-Extensions<\/strong>.<\/p>\n<h2 id=\"\u00e4nderungen-des-models-einer-extbase-extension\">\u00c4nderungen des Models einer Extbase-Extension<\/h2>\n<p>Langer Rede kurzer Sinn: Im Folgenden werden wir die einzelnen Schritte aufzeigen, welche Schrauben an welcher Stelle man drehen muss, um ein neues Attribut in die Extension einzubringen.<\/p>\n<h3 id=\"extbase-daten-aller-anfang-ist-...-die-datenbank\">Extbase-Daten: Aller Anfang ist &#8230; die Datenbank<\/h3>\n<p>Logischerweise liegen die Daten unserer Extbase-Extension auch in der MySQL-Datenbank. Und dort beginnt unsere Erweiterungsaktion. In der Datei <code>ext_tables.sql<\/code> befindet sich der MySQL-Code, der ausgef\u00fchrt wird, wenn die Extension installiert wird. Wenn man diese Datei aufmacht, wird man feststellen, dass dort ganz gew\u00f6hnlicher MySQL-Code mit (im ersten Moment) gew\u00f6hnlichen <code>CREATE TABLE<\/code>-Statements steht. Denn wenn wir hier eine \u00c4nderung vornehmen, indem wir eine zus\u00e4tzliche Spalte <code>info_phone<\/code> einf\u00fcgen, wird beim erneueten Installieren geschaut, ob schon eine gleichnamige Tabelle existiert. Falls ja, dann wird hier nicht die ganze Tabelle gel\u00f6scht oder geleert, sondern einfach nur unsere zus\u00e4tzliche Spalte eingef\u00fcgt. <strong>Der Inhalt der Tabelle bleibt also erhalten<\/strong>. Gut, also erst einmal durchatmen. Die Daten gehen nicht verloren. Aber wir empfehlen trotzdem vor jeder \u00c4nderung einer Extension ein Backup der Extension-Daten zu machen, in dem man im Extension-Manager einen Datenbankkopie zieht, denn auch hier ist sicherer sicher.<\/p>\n<h3 id=\"datenbank-zu-model\">Datenbank zu Model<\/h3>\n<p>Wenn die Datenbasis in Form der MySQL-Datenstruktur angepasst ist, dann geht man an das Model. Im Verzeichnis <code>Classes\/Domain\/Model<\/code> befinden sich eine oder mehrere Klassen, die die Schnittstelle zwischen Programmcode und Datenbank bilden. Diese enthalten unsere <strong>Getter<\/strong> und <strong>Setter<\/strong>. Und wenn ein neues Attribut (in unserem Fall <strong>Info Phone<\/strong>) eingef\u00fcgt werden soll, muss logischerweise auch hier etwas passieren. Dabei orientert man sich am Besten an bereits vorhandenen Attributen und kopiert diese mit einigen Anpassungen zu eigenen. Oder man ist ganz bequem und benutzt eine intelligente IDE, wie zum Beispiel <strong>PHPStorm<\/strong>. Dort hat man einige Tools zur Hand, die einem das Erweitern der Objekte leichter und vor allem schneller machen. Beim manuellen Kopieren w\u00e4re anzumerken, dass die <strong>Annotationen<\/strong>, genau wie die Funktionsnamen und Attribute im CamelCase benannt werden m\u00fcssen.<\/p>\n<h3 id=\"fluid-templates-anpassen\">Fluid-Templates anpassen<\/h3>\n<p>Somit w\u00e4re die Datenbasis fertig. Aber noch sieht man logischerweise nichts im Frontend. Deswegen ist nun das Template oder die Templates der Extension an der Reihe: Unter dem Pfad <code>Resources\/Private\/Template\/<\/code> im Extension-Verzeichnis finden Sie den HTML-Code mit <strong>Fluid<\/strong>-Tags, den man entsprechend anpassen muss &#8212; eben je nach dem, wo das neue Attribut <strong>Info Phone<\/strong> ausgegeben werden soll. Auch hier ist Extbase-Fluid wie ein strenger Mathematik-Lehrer: Das case-sensitive CamelCase darf auch hier nicht vernachl\u00e4ssigt werden, ansonsten f\u00e4llt man durch. Anmerkung am Rande: Hier kommt wieder die Genialit\u00e4t von Extbase-Extensions zum Vorschein: Unser neues Attribut kann man hier auch weiterhin z.B. mit <strong>ViewHelper<\/strong> anpassen und hat so noch mehr Kontrolle \u00fcber die Daten.<\/p>\n<h3 id=\"tca-konfiguration-f\u00fcr-extbase-extensions\">TCA-Konfiguration f\u00fcr Extbase-Extensions<\/h3>\n<p>Sch\u00f6n, dass wir die Datenstrukturen in der Datenbank ver\u00e4ndert haben. Und auch sehr sch\u00f6n, dass es nun eine M\u00f6glichkeit gibt, diese im Frontend, auf der sch\u00f6nen Website, auszugeben. Aber wo um alles in der Welt gebe ich nun die Information zur Telefonnummer (&#8222;Info Phone&#8220;) im Backend ein? Dazu muss nun das Backend angepasst werden. Man setze es auf den Stuhl binde ihm ein Tuch um den Hals und fange an, etwas am <strong>TCA<\/strong> herumzuschnibbeln. In der Datei <code>Configuration\/TCA\/*.php<\/code> kann man das Typo3-Configuration-Array bearbeiten. Alles, was man dort \u00e4ndert, spiegelt sich in der Eingabemaske im Backend wieder. Der Schl\u00fcssel <code>showRecordFieldList<\/code> in diesem Configuration-Array enth\u00e4lt unter anderem die Auflistung der sichtbaren Attribute. So m\u00fcsste in unserem Fall der String dahin gehend abge\u00e4ndert werden, dass dort auch unser frisches Attribut <code>phone_info<\/code> aufgelistet wird. So sagt man Typo3 im Grund genommen: Bitte spiele mir diese oder jene Eigenschaft im Backend aus, damit ich dort endlich meine Daten eintragen kann. Aber auch noch ein weiterer Schl\u00fcssel ist f\u00fcr uns interessant: Das <code>types<\/code>-Array. Dieses beinhaltet die Konfigurationsdaten zu den einzelnen Felder. Ist unser Feld zum Beispiel ein Datumsfeld oder ein normales Textfeld? Gibt es zu dem <code>phone<\/code>-Attribut eine m\u00f6gliche Auswahlliste? Das und noch viel mehr kann man hier justieren.<\/p>\n<h3 id=\"sprachen-f\u00fcr-alle-auch-f\u00fcr-extbase-extensions\">Sprachen f\u00fcr alle! (Auch f\u00fcr Extbase-Extensions)<\/h3>\n<p>Es gibt Kunden, die haben nicht nur eine Sprache im Backend. Die Benutzer dieser internationaler Firmen sind auf der ganzen Welt verstreut und bevorzugen logischerweise auch eine bestimmte Sprache. Wie das im Frontend geht, das ist uns als Typo3-Veteranen ja bekannt. Im Backend ist es gl\u00fccklicherweise auch sehr \u00e4hnlich. Auch dort gibt es Language-Files, die meist die Endung <code>.lxf<\/code> haben. Wenn unsere Eigenschaft auf Englisch &#8222;Info phone&#8220; hei\u00dft, dann kann man hier in der entsprechenden \u00dcbersetzungsdatei das deutsche \u00c4quivalent &#8222;Info Telefon&#8220; eintragen &#8212; und schon ist die eigene Extbase-Extension auch im Backend internationalisiert.<\/p>\n<h2 id=\"kleine-helferlein\">Kleine Helferlein<\/h2>\n<p>Je nach dem, wie die eigene Extension veranlagt ist, ist es n\u00f6tig entweder den Cache zu l\u00f6schen oder sogar die Extension neu zu installieren. Wir erinnern uns: Wenn man \u00c4nderungen an der Datenstruktur der Datenbank vorgenommen hat, dann wird die Datei <code>ext_tables.sql<\/code> mit der bereits vorhandenen Datenbank zusammengef\u00fchrt. Aber eben nur <em>bei der Installation<\/em>. Das ist zwar etwas umst\u00e4ndlicher, ist aber aufgrund der Tatsache, dass man nicht allzu oft die Struktur der Datenbanktabellen ver\u00e4ndert, noch halbwegs zu verkraften.<\/p>\n<h2 id=\"extbase-extensions-wir-machen-das\">Extbase-Extensions: Wir machen das<\/h2>\n<p>Wenn Sie sich jetzt denken: Ja, es ist sch\u00f6n, dass das so funktioniert. Aber ich m\u00f6chte aufgrund von zeitlichen oder organisatorischen Gr\u00fcnden diese Anpassungen meiner Datenbank outsourcen, dann stehen wir Ihnen sehr gerne zur Verf\u00fcgung. Ich freue mich auf Ihren Anruf!<\/p>\n<p><i>Titelbild:<\/i> By Figugegl (Own work) [<a href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/4.0\">CC BY-SA 4.0<\/a>], <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File%3A1_Kilo_Schrauben.jpg\">via Wikimedia Commons<\/a><!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anpassen von Typo3-Extbase-Extensions ist nicht trivial So haben wir also unsere erste Extbase-Extension angelegt und mit dem Extenstion Builder die [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":553,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[51,287],"tags":[255,256,266,267,269,295],"features_image":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg","rk_cat":null,"rk_date":"24.03.2016","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Datenstrukturen von Extbase-Extensions anpassen - 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\/datenstrukturen-von-extbase-extensions-anpassen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenstrukturen von Extbase-Extensions anpassen - Schwarzer.de Blog\" \/>\n<meta property=\"og:description\" content=\"Anpassen von Typo3-Extbase-Extensions ist nicht trivial So haben wir also unsere erste Extbase-Extension angelegt und mit dem Extenstion Builder die [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/\" \/>\n<meta property=\"og:site_name\" content=\"Schwarzer.de Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-24T07:35:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-15T12:21:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"5 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\/datenstrukturen-von-extbase-extensions-anpassen\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg\",\"contentUrl\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg\",\"width\":800,\"height\":500,\"caption\":\"Extbase Extension erweitern und anpassen\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#webpage\",\"url\":\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/\",\"name\":\"Datenstrukturen von Extbase-Extensions anpassen - Schwarzer.de Blog\",\"isPartOf\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#primaryimage\"},\"datePublished\":\"2016-03-24T07:35:55+00:00\",\"dateModified\":\"2020-09-15T12:21:25+00:00\",\"author\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\"},\"breadcrumb\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datenstrukturen von Extbase-Extensions anpassen\"}]},{\"@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":"Datenstrukturen von Extbase-Extensions anpassen - 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\/datenstrukturen-von-extbase-extensions-anpassen\/","og_locale":"de_DE","og_type":"article","og_title":"Datenstrukturen von Extbase-Extensions anpassen - Schwarzer.de Blog","og_description":"Anpassen von Typo3-Extbase-Extensions ist nicht trivial So haben wir also unsere erste Extbase-Extension angelegt und mit dem Extenstion Builder die [&hellip;]","og_url":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/","og_site_name":"Schwarzer.de Blog","article_published_time":"2016-03-24T07:35:55+00:00","article_modified_time":"2020-09-15T12:21:25+00:00","og_image":[{"width":800,"height":500,"url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"5 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\/datenstrukturen-von-extbase-extensions-anpassen\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg","contentUrl":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2016\/03\/infografik-Extbase-Extension-erweitern-und-anpassen.jpg","width":800,"height":500,"caption":"Extbase Extension erweitern und anpassen"},{"@type":"WebPage","@id":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#webpage","url":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/","name":"Datenstrukturen von Extbase-Extensions anpassen - Schwarzer.de Blog","isPartOf":{"@id":"https:\/\/schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#primaryimage"},"datePublished":"2016-03-24T07:35:55+00:00","dateModified":"2020-09-15T12:21:25+00:00","author":{"@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a"},"breadcrumb":{"@id":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/schwarzer.de\/blog\/datenstrukturen-von-extbase-extensions-anpassen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Datenstrukturen von Extbase-Extensions anpassen"}]},{"@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\/551"}],"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=551"}],"version-history":[{"count":9,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":1292,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/551\/revisions\/1292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/553"}],"wp:attachment":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}