{"id":1399,"date":"2018-08-08T17:14:47","date_gmt":"2018-08-08T15:14:47","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=1399"},"modified":"2018-11-09T06:23:47","modified_gmt":"2018-11-09T05:23:47","slug":"wo-joomla-die-benutzereingaben-von-modulen-speichert","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/08\/08\/wo-joomla-die-benutzereingaben-von-modulen-speichert\/","title":{"rendered":"Wo Joomla die Benutzereingaben von Modulen speichert"},"content":{"rendered":"<p>Ich hab gerade in einem kleinen Projekt ein Modul mit mehrfachen Benutzereingaben gebraucht, und daf\u00fcr kamen mir die <a href=\"https:\/\/docs.joomla.org\/Category:Standard_form_field_types\">Standard Form Field Types<\/a> von Joomla gerade recht. Wer dazu eine kurze Auffrischung braucht, <a href=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/04\/05\/joomla-modul-ein-bisschen-aufgebohrt-mit-benutzereingaben\/\">in diesem Artikel<\/a> habe ich mich n\u00e4her \u00fcber Benutzereingaben in Joomla-Modulen ausgelassen.<\/p>\n<p>Ich brauchte ein Textfeld, eine Zahl, eine Dropdown-Liste und drei Radiobuttons sowie eine Textarea, und das sieht in der XML-Datei des Moduls so aus:<\/p>\n<pre>&lt;config&gt;\r\n\u00a0\u00a0 \u00a0&lt;fields name=\"params\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;fieldset name=\"basic\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;field name=\"param1\" type=\"text\" default=\"\" label=\"Bitte Text eingeben\" description=\"Auszugebender Text\"&gt;&lt;\/field&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;field name=\"param2\" type=\"number\" default=\"\" label=\"Bitte Zahl eingeben\" description=\"Auszugebende Zahl\"&gt;&lt;\/field&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;field name=\"meineoption\" type=\"list\" default=\"\" label=\"Eine Option w\u00e4hlen\" description=\"\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;option value=\"1\"&gt;Option 1&lt;\/option&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;option value=\"2\"&gt;Option 2&lt;\/option&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/field&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;field name=\"meinradio\" type=\"radio\" default=\"\" label=\"Bitte ausw\u00e4hlen\" description=\"\" class=\"btn-group\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;option value=\"Ja\"&gt;Ja&lt;\/option&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;option value=\"Nein\"&gt;Nein&lt;\/option&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;option value=\"Weissnicht\"&gt;Weissnicht&lt;\/option&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/field&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;field name=\"meinetextarea\" type=\"textarea\" default=\"\" label=\"L\u00e4ngeren Text eingeben\" description=\"\" rows=\"10\" cols=\"5\" filter=\"raw\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/fieldset&gt;\r\n\u00a0\u00a0\u00a0 &lt;\/fields&gt;\r\n\u00a0\u00a0\u00a0 &lt;\/config&gt;<\/pre>\n<p>Das erzeugt die folgenden Eingabem\u00f6glichkeiten im Modul:<\/p>\n<div id=\"attachment_1400\" style=\"width: 498px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-1400\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1400\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/08\/basicmodul.jpg\" alt=\"basicmodul\" width=\"488\" height=\"522\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/08\/basicmodul.jpg 488w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/08\/basicmodul-280x300.jpg 280w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><p id=\"caption-attachment-1400\" class=\"wp-caption-text\">basicmodul<\/p><\/div>\n<p>Erhob sich bei mir ganz schnell die Frage: wo werden denn diese Benutzereingaben gespeichert?<\/p>\n<p>Kurzes Googlen ergab des R\u00e4tsels L\u00f6sung. In der Tabelle #__modules wird f\u00fcr jedes neu erzeugte Modul ein eigener Eintrag angelegt, man suche im Feld title nach dem Titel des Moduls, bei mir hei\u00dft es &#8222;Basic&#8220;. (Wenn man ganz sichergehen will, guckt man sich auch noch das Feld module an, da sollte der Name des betreffenden Moduls drinstehen, bei mir ist das mod_basic)<\/p>\n<p>In diesem Datensatz findet sich im Feld params ein l\u00e4ngerer String, der s\u00e4mtliche Benutzereingaben enth\u00e4lt, der sieht etwa so aus:<\/p>\n<p><em>{&#8222;param1&#8220;:&#8220;Hallo ich bin dein Basic-Modul &#8222;,&#8220;param2&#8243;:&#8220;199&#8243;,&#8220;meineoption&#8220;:&#8220;2&#8243;,&#8220;meinradio&#8220;:&#8220;Weissnicht&#8220;,&#8220;meinetextarea&#8220;:&#8220;&lt;h1&gt;Lorem ipsum&lt;\\\/h1&gt; w\\u00e4r jetzt praktisch mal schauen was der mit dem Umbruch macht&#8220;,&#8220;module_tag&#8220;:&#8220;div&#8220;,&#8220;bootstrap_size&#8220;:&#8220;0&#8243;,&#8220;header_tag&#8220;:&#8220;h3&#8243;,&#8220;header_class&#8220;:&#8220;&#8220;,&#8220;style&#8220;:&#8220;0&#8243;}<\/em><\/p>\n<p>Aber, das ist doch&#8230; ja klar! JSON ist das, und dem kommen wir ganz einfach bei. Ich m\u00f6chte mal Beispielhaft den param2 (die Zahl) ausgeben, in Joomla klappt das so:<\/p>\n<pre>$db =JFactory::getDBO();\r\n$query = 'SELECT params FROM #__modules WHERE title=\"Basic\"';\r\n$db-&gt;setQuery($query);\r\n$result = $db-&gt;loadResult();\r\n$meinarray = json_decode($result);\r\necho \"Hier kommt param2: \".$meinarray-&gt;<span style=\"color: #ff0000;\">param2<\/span>;<\/pre>\n<p>Dabei entspricht der Name der Array-Position dem Namen des Eingabefeldes in der XML-Definition, so einfach ist das. Ist vielleicht ganz n\u00fctzlich zu wissen, falls man diese Werte mal an anderer Stelle brauchen sollte.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich hab gerade in einem kleinen Projekt ein Modul mit mehrfachen Benutzereingaben gebraucht, und daf\u00fcr kamen mir die Standard Form Field Types von Joomla gerade recht. Wer dazu eine kurze Auffrischung braucht, in diesem Artikel habe ich mich n\u00e4her \u00fcber Benutzereingaben in Joomla-Modulen ausgelassen. Ich brauchte ein Textfeld, eine Zahl, eine Dropdown-Liste und drei Radiobuttons [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[33,59],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1399"}],"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=1399"}],"version-history":[{"count":1,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1399\/revisions"}],"predecessor-version":[{"id":1401,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/1399\/revisions\/1401"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=1399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=1399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=1399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}