{"id":821,"date":"2018-02-12T15:33:52","date_gmt":"2018-02-12T14:33:52","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=821"},"modified":"2018-02-15T14:07:09","modified_gmt":"2018-02-15T13:07:09","slug":"ein-blick-auf-die-datenbank-content-und-konsorten","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/02\/12\/ein-blick-auf-die-datenbank-content-und-konsorten\/","title":{"rendered":"Ein Blick auf die Datenbank: Content und Konsorten"},"content":{"rendered":"<p>Einen \u00dcberblick \u00fcber die in Joomla enthaltenen Tabellen kann man hier in der <a href=\"https:\/\/docs.joomla.org\/Tables\">Joomla Documentation zum Thema Tables<\/a> finden. Da werden allerdings nur die Tabellenstruktur und die Felddefinitionen aus der Datenbank zusammengefasst und keine weitere Erkl\u00e4rung dazu geliefert &#8211; das meiste davon k\u00f6nnte man auch im phpmyadmin herausfinden. Zur Tabelle contents hei\u00dft es zum Beispiel nur lapidar: &#8222;This table is used to store the content of your Joomla! core articles.&#8220; Ah ja. Das h\u00e4tte man sich evtl. selber denken k\u00f6nnen.<\/p>\n<p>Also ist es vielleicht ganz interessant, mal ein bi\u00dfchen hinter die Kulissen zu gucken, aber mit \u00fcber 70 Tabellen macht es einem Joomla da nicht gerade einfach. Trotzdem, fangen wir mal an.<\/p>\n<h2>Die Tabelle contents<\/h2>\n<p>Wie wir am Anfang schon gesehen haben, macht Joomla im Gegensatz zu WordPress keinen Unterschied zwischen Beitr\u00e4gen und Seiten, es ist zun\u00e4chst mal alles Content. Das ist auch v\u00f6llig legitim, da sehr fein gesteuert werden kann, ob ein Element\u00a0einen Kategorieblog, einen einzelnen\u00a0Artikel, ein Modul oder sonst etwas\u00a0enthalten soll.<\/p>\n<p>Fangen wir mal von vorne an:<\/p>\n<p><strong>id<\/strong> klar, AutoIncrement und Prim\u00e4rschl\u00fcssel<\/p>\n<p><strong>asset_id<\/strong> Fremdschl\u00fcssel auf die assets-Tabelle, dazu sp\u00e4ter mehr<\/p>\n<p><strong>title<\/strong> auch klar, der Titel des Artikels, wie er im Frontend angezeigt wird<\/p>\n<p><strong>alias<\/strong> sanitized Form des Titels f\u00fcr die sprechende URL<\/p>\n<p><strong>introtext und fulltext<\/strong>: da machen wir mal einen kleinen Break und eine Erkl\u00e4rung.<\/p>\n<h2>Introtext und Fulltext<\/h2>\n<p>Joomla bietet eine sehr komfortable M\u00f6glichkeit, im Artikeleditor ein &#8222;Weiterlesen&#8220;-Tag an beliebiger Stelle im Text einzuf\u00fcgen:<\/p>\n<div id=\"attachment_825\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-825\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-825\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen.jpg\" alt=\"weiterlesen\" width=\"940\" height=\"409\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen.jpg 940w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen-300x131.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen-768x334.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen-624x272.jpg 624w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><p id=\"caption-attachment-825\" class=\"wp-caption-text\">weiterlesen<\/p><\/div>\n<p>Das hat den Effekt, dass in der Blog-Ansicht nur der Text vor dem Tag angezeigt wird und ein Button zum (eben!) weiterlesen angezeigt wird:<\/p>\n<div id=\"attachment_826\" style=\"width: 257px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-826\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-826\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen_screenshot.jpg\" alt=\"weiterlesen_screenshot\" width=\"247\" height=\"411\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen_screenshot.jpg 247w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/weiterlesen_screenshot-180x300.jpg 180w\" sizes=\"(max-width: 247px) 100vw, 247px\" \/><p id=\"caption-attachment-826\" class=\"wp-caption-text\">weiterlesen_screenshot<\/p><\/div>\n<p>Was da im Hintergrund auf der Datenbank passiert, ist recht kurios. Sobald man das Weiterlesen-Tag eingef\u00fcgt hat, landet der Text vor dem Tag im Feld introtext, der Rest im Feld fulltext, der Artikeltext wird also auf zwei Datenbankfelder aufgeteilt. Nimmt man das Tag wieder heraus (Editor auf Textmodus umschalten und das Tag &lt;hr id=&#8220;system-readmore&#8220; \/&gt; l\u00f6schen), wird wieder der gesamte Text im Feld introtext gespeichert, das Feld fulltext ist dann wieder leer.<\/p>\n<h2>Weiter gehts mit den Feldern der Tabelle content:<\/h2>\n<p><strong>state<\/strong> entspricht dem post_status von WordPress, hier gilt f\u00fcr Joomla 3.x, soweit ich das eruieren konnte:<\/p>\n<ul>\n<li>0 = unpublished<\/li>\n<li>1 = published<\/li>\n<li>2 = archived<\/li>\n<li>-2 = marked for deletion<\/li>\n<\/ul>\n<p><strong>catid<\/strong> ist die ID der Kategorie und ein Fremdschl\u00fcssel auf die categories-Tabelle.<\/p>\n<p><strong>created_by<\/strong> ist die UserID und ein Fremdschl\u00fcssel aus der #__users-Tabelle<\/p>\n<p>Dann folgen noch ein\u00a0paar Timestamps, deren Feldnamen recht selbsterkl\u00e4rend sind, und weiter hinten als kleines Zuckerl f\u00fcr SEOler ein\u00a0 Feld hits, in dem die Anzahl der Zugriffe auf den betreffenden Artikel hochgez\u00e4hlt wird.<\/p>\n<p>Lassen sie sich vom Feld <strong>images<\/strong> nicht aufs Glatteis f\u00fchren, da steht nichts weiter drin, wenn sie kein Einleitungsbild oder komplettes Beitragsbild ausgew\u00e4hlt haben. Bilder, die sie im Artikeleditor eingef\u00fcgt haben, stehen wie in WordPress gehabt als img-tag im Beitragstext, default Pfad ist das images-Verzeichnis: &lt;img src=&#8220;images\/avocado.jpg&#8220; alt=&#8220;&#8220; \/&gt;<\/p>\n<p><strong>Na, und was seh ich da?<\/strong> Der alt-Text ist leer, Schlamperei! Aber das ist eine andere Baustelle, und ich wette, das Verwirrspiel um die alt-Texte ist derselbe systemimmanente Bug wie in WordPress. Aber zur Bilderverwaltung in Joomla gibts ein andermal mehr!<\/p>\n<h2>Haben sie auch ein Deja vu?<\/h2>\n<p>Mit den hier vorgestellten Feldern aus der contents w\u00e4re es schon mal ein leichtes Spiel, einen einfachen WordPress-Beitrags-Datensatz zusammenzubauen. Vielleicht ist das der Grund, warum es eine Menge Konverter von Joomla nach WordPress schon gibt, googlen sie mal nach &#8222;joomla to wordpress converter&#8220;. Der Weg von WordPress nach Joomla ist da schon steiniger, weil die Joomla-Artikel\u00a0wesentlich komplexer aufgebaut sind, aber dar\u00fcber habe ich mich bereits <a href=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/02\/11\/jetzt-fehlt-nur-noch-der-inhalt\/\">in diesem Artikel<\/a> ausgelassen. Ich bleibe dran&#8230;<\/p>\n<p>Damit lassen wir es mal gut sein mit der Contents-Tabelle, und werfen als n\u00e4chstes einen Blick auf die Bilderverwaltung in Joomla.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einen \u00dcberblick \u00fcber die in Joomla enthaltenen Tabellen kann man hier in der Joomla Documentation zum Thema Tables finden. Da werden allerdings nur die Tabellenstruktur und die Felddefinitionen aus der Datenbank zusammengefasst und keine weitere Erkl\u00e4rung dazu geliefert &#8211; das meiste davon k\u00f6nnte man auch im phpmyadmin herausfinden. Zur Tabelle contents hei\u00dft es zum Beispiel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[29,38],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/821"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=821"}],"version-history":[{"count":7,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/821\/revisions"}],"predecessor-version":[{"id":830,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/821\/revisions\/830"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}