{"id":872,"date":"2018-02-22T13:13:10","date_gmt":"2018-02-22T12:13:10","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=872"},"modified":"2018-02-22T13:13:10","modified_gmt":"2018-02-22T12:13:10","slug":"haett-ich-doch-beinah-uebersehen-das-bewertungsformular","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/02\/22\/haett-ich-doch-beinah-uebersehen-das-bewertungsformular\/","title":{"rendered":"H\u00e4tt ich doch beinah \u00fcbersehen: das Bewertungsformular"},"content":{"rendered":"<p>Das w\u00e4r mir doch beinah durch die Lappen gegangen, wir brauchen nat\u00fcrlich noch das Feedback-Formular bei den Rezepten. Im Original-Inselfischkochbuch sieht das so aus:<\/p>\n<div id=\"attachment_873\" style=\"width: 573px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-873\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-873\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/bewertungsformular_screenshot.jpg\" alt=\"bewertungsformular_screenshot\" width=\"563\" height=\"247\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/bewertungsformular_screenshot.jpg 563w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/bewertungsformular_screenshot-300x132.jpg 300w\" sizes=\"(max-width: 563px) 100vw, 563px\" \/><p id=\"caption-attachment-873\" class=\"wp-caption-text\">bewertungsformular_screenshot<\/p><\/div>\n<p>Ich habs in WordPress nat\u00fcrlich mit dem Contact Form 7 angelegt, und dann das Plugin\u00a0<strong>WP Post Signature<\/strong> genutzt, um das Formular automatisch am Ende jedes Beitrags einzuf\u00fcgen. Wollen mal sehen, was sich in Joomla daraus machen l\u00e4\u00dft. Ich hab mal einen ersten Versuch mit BreezingForms gestartet, schauen wir mal wie weit wir kommen.<\/p>\n<p>Die Anforderungen im Klartext:<\/p>\n<ol>\n<li>das Formular soll am Ende jedes Rezeptes automatisch angeh\u00e4ngt werden<\/li>\n<li>damit ich wei\u00df, welches Rezept bewertet wurde, muss der Titel (oder wenigstens die ID)\u00a0aus der E-Mail hervorgehen<\/li>\n<\/ol>\n<p>Zu 1.: das h\u00f6rt sich einfacher an als es ist, denn eigentlich sind es zwei Anforderungen, wenn nicht sogar drei.<\/p>\n<h2>Das BreezingForms-Plugin<\/h2>\n<p>Um ein BreezingForms-Formular \u00fcberhaupt in einem Artikel anzeigen zu k\u00f6nnen, muss man das BreezingForms-Plugin installieren. Das findet man, wenn man das BreezingForms-ZIP entpackt hat, unter\u00a0plg_breezingforms.zip . Nach der Installation muss es noch aktiviert werden, das geht unter Erweiterunge-&gt;Module-&gt; Suche nach &#8222;breezing&#8220;, Pluginname BreezingForms aktivieren. Erst jetzt hat man die M\u00f6glichkeit, ein BreezingForms Formular auch in einen Artikel einbinden zu k\u00f6nnen, und zwar\u00a0 mit der Syntax:<\/p>\n<p>{ BreezingForms : <strong>formularname<\/strong>\u00a0}<\/p>\n<p>Das fett markierte ist der Name des Formulars. Aber damit haben wir noch nicht viel gewonnen, schlie\u00dflich m\u00fc\u00dfte man diesen Code am Ende jedes Rezeptes manuell einf\u00fcgen, und das war nicht die Anforderung.<\/p>\n<h2>Wie w\u00e4rs stattdessen mit einem Modul?<\/h2>\n<p>Daf\u00fcr braucht man laut crosstec noch\u00a0das extra-Modul,\u00a0mod_breezingforms.zip. Nach der Installation freigeben nicht vergessen!\u00a0Dann kann man ein neues Modul vom Typ &#8222;BreezingForms&#8220; anlegen und das gew\u00fcnschte Formular angeben. Falls es nicht angezeigt wird kann es sein dass in den Moduloptionen in der Men\u00fczuweisung &#8222;auf keinen Seiten&#8220; steht, das muss man nat\u00fcrlich auf &#8222;auf allen Seiten&#8220; \u00e4ndern.<\/p>\n<h2>So, und was hat uns das gebracht?<\/h2>\n<p>Auch das Modul muss man erstmal per Hand am Ende jedes Rezeptes einf\u00fcgen, das ist noch kein grosser Fortschritt aber gemach, gemach, das wird schon noch.<\/p>\n<h2>Warum nicht einen Override anlegen?<\/h2>\n<p>Weil bei einer \u00c4nderung der default.php das Bewertungsformular unter allen Artikeln angezeigt werden w\u00fcrde, nicht nur unter den Rezepten. Wir machen stattdessen mal ein alternatives Layout, das ist mir sympathischer.\u00a0 Daf\u00fcr kopiert man sich in den Ordner \/templates\/dein-templates\/dein-template\/html\/com_content\/article die Datei default.php unter einem eigenen Namen, ich nenns mal meins.php. In dieser Datei sucht man dann nach dem Eintrag<\/p>\n<p>&lt;?php echo $this-&gt;item-&gt;text; ?&gt;<\/p>\n<p>Darunter kopiert man die folgende Zeile:<\/p>\n<p>&lt;?php echo JHtml::_(&#8218;content.prepare&#8216;, &#8218;{loadposition <strong>bewertungsformular<\/strong>}&#8216;); ?&gt;<\/p>\n<p>Jetzt geht man nochmal in das Modul f\u00fcr das Bewertungsformular zur\u00fcck und \u00e4ndert die Modulposition in\u00a0<strong>bewertungsformular <\/strong>&#8211; Schreibweise genau einhalten!<\/p>\n<p>Daraufhin muss man noch in einem beliebigen Rezept unter dem Reiter Optionen das Layout auf &#8222;meins&#8220; stellen, dann wird das Formular nach dem Rezepttext auch angezeigt.<\/p>\n<h2>Das war jetzt aber auch noch nicht der Bringer?<\/h2>\n<p>Schlie\u00dflich muss man auch das alternative Layout per Hand anw\u00e4hlen, ich geb zu, da ist noch nicht viel gewonnen, genauso schnell hat man ein Modul eingef\u00fcgt. Das h\u00e4ngt jetzt alles daran, dass ich keinen Weg gefunden habe, ein Modul nur f\u00fcr eine Kategorie anzeigen zu lassen, und ich hab ein paar Stunden lang danach gesucht, bislang ohne Erfolg.<\/p>\n<h2>Ich h\u00e4tte da noch so&#8217;ne Idee<\/h2>\n<p>Man k\u00f6nnte ja einen Override auf die default.php anlegen und abfragen, welche Kategorie der aktuelle Artikel hat, und abh\u00e4ngig vom Ergebnis das Modul anzeigen lassen oder nicht. Mal sehen, wie weit wir damit kommen.<\/p>\n<p>In unserem Override der default.php f\u00fcr den Artikel suchen wir nach der Stelle:<\/p>\n<p>&lt;div itemprop=&#8220;articleBody&#8220;&gt;<br \/>\n<strong>&lt;?php echo $this-&gt;item-&gt;text; ?&gt;<\/strong><br \/>\n&lt;\/div&gt;<\/p>\n<p>Danach schubsen wir eine Datenbankabfrage rein:<\/p>\n<p><em>&lt;?php<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0$db=JFactory::getDbo(); <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0<strong>$article_id<\/strong> = JFactory::getApplication()-&gt;input-&gt;get(&#8218;<strong>id<\/strong>&#8218;); <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0echo &#8222;aktuelle Artikelid= &#8222;.$article_id;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0$db-&gt;setQuery(&#8217;select catid from #__content where id= &#8218;.<strong>$article_id<\/strong>.&#8220;); <\/em><br \/>\n<em>\u00a0\u00a0 <strong>\u00a0$catid<\/strong>=<strong>$db-&gt;loadResult()<\/strong>; <\/em><br \/>\n<em>\u00a0\u00a0 \u00a0echo &#8222;aktuelle catid= &#8222;.$catid;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0if (<strong>$catid == 8<\/strong>){<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo JHtml::_(&#8218;content.prepare&#8216;, &#8218;{loadposition bewertungsformular}&#8216;);<\/em><br \/>\n<em>\u00a0\u00a0\u00a0<\/em><em> }<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0else {<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo &#8222;Dies ist kein Rezept, Kategorie: &#8222;.$catid;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0?&gt;<\/em><\/p>\n<p>Was hab ich gemacht? Mir die ID des aktuellen Artikels geholt, diese in den Select auf die #__content reingeschubst und mir so die ID der Kategorie geholt. Rezepte sind bei mir Kategorie 8, das frage ich mit dem If ab und zeige das Formular nur an, wenn dies zutrifft. Das wars schon! Die Debug-Ausgaben kann man noch rausschmeissen, aber so funktionierts. Endlich wieder mal ein bisschen Spa\u00df auf der Datenbank!<\/p>\n<h2>Was jetzt noch fehlt: die \u00dcbermittlung der Rezept-ID oder des Titels<\/h2>\n<p>Weil mir die ganze Menage nichts hilft, wenn ich nicht weiss zu welchem Rezept die Bewertung abgeschickt wurde. Da hilft nur Nachforschen beim BreezingForms-Support, aber dazu gibts einen neuen Beitrag.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das w\u00e4r mir doch beinah durch die Lappen gegangen, wir brauchen nat\u00fcrlich noch das Feedback-Formular bei den Rezepten. Im Original-Inselfischkochbuch sieht das so aus: Ich habs in WordPress nat\u00fcrlich mit dem Contact Form 7 angelegt, und dann das Plugin\u00a0WP Post Signature genutzt, um das Formular automatisch am Ende jedes Beitrags einzuf\u00fcgen. Wollen mal sehen, was [&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,36,35,31,33],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/872"}],"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=872"}],"version-history":[{"count":6,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/872\/revisions"}],"predecessor-version":[{"id":879,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/872\/revisions\/879"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}