3D - Grafik und Animation
Software
Joomla
Internet
Projekte
Google / 4Stats Statistik
Anmelden
Finden
|
Joomla 1.5.x - Bewertung / Voting funktioniert nichtPlötzlich hatte ich jede Menge Besucher auf meiner Seite, also wollte ich doch wissen, wie denen meine Beiträge gefallen. Also habe ich zum ersten mal das Voting eingeschaltet und mich gewundert, warum nichts passiert.Bis meine Mama anrief und sagte, Dein Voting geht nicht. Ups!?Nach näherem Hinsehen stand fest, die Bewertung geht schon, sie wird auch in die Datenbank eingetragen, aber es wird kein Ergebnis angezeigt. Mein Template?Der erste Gedanke mein Template könnte die Ursache sein, konnte ich verwerfen, nachdem ich zum einen die 3 Standard-Templates ohne Erfolg probiert hatte und zum anderen auf einer frisch installierten anderen Domain (Joomla 1.5.10 frisch installiert) mit meinem Template getestet habe. Bei der funktionierte das Voting, warum auch immer. Mein Template installiert und aktiviert, geht immer noch.Beim Update etwas schiefgegangen?Das Template ist es also nicht. OK. Die Installation der betroffenen Domain ist schon etwas älter, Joomla 1.5.1 glaube ich oder 1.5.2.Allerdings habe ich immer alle Updates sauber installiert. Trotzdem noch ein Test, natürlich lokal: die Daten aus der alten Datenbank mit einem frisch installierten Joomla (ohne Installationsverzeichnis, dafür mit den nötigen Dateien .htaccess und configuration.php). Nein geht auch nicht. Also die Datenbank?Ich habe doch nicht etwa die alte Datenbank aus der Beta-Phase verwendet?Jetzt bin ich mir plötzlich nicht mehr sicher ... Nein, sowas würde ich doch nicht tun. Ein Blick in meine Aufzeichnungen beweist, ja das ist eine neue Datenbank. Das steht's auch Version 1.5.1 RC3 war die erste Version. Wie finde ich denn jetzt, woran es liegt?Ich bin total local, also kann ich alles kaputt machen, ist ja nur eine Kopie:Ich habe etwas gefunden: query.phpcomponents\com_content\helpers\query.phpZeile 104 function buildVotingQuery($params=null) Diese Funktion fragt den Parameter show_vote ab, wenn dieser nicht gesetzt ist, wird der Query nicht erstellt, d.h. selbst wenn da später einer versuchen würde den Query abzufragen, käme nichts zurück. Bei mir ist genau dies der Fall, ich könnte jetzt einfach das if streichen und schon würde es gehen. Das habe ich mal eben getetestet. Da aber das Programm ja nicht Schuld sein kann, da es sonst ja nicht in der anderen Installtion funktionieren würde, ergibt sich die Frage: Woher kommt dieses show_vote?$params = &JComponentHelper::getParams( 'com_content' );Noch ein Helper, aber nicht wirklich hilfreich? Er liest nur die Standardeinstellung für die Anzeige der Bewertung. Da ich generell keine Bewertung eingeschaltet, und nur explizit 2 Artikel zur Bewertung vorgesehen habe, bin ich hier am Ende. Bedienfehler sozusagen. Aber letzendlich ist auch das Programm ein bisschen Schuld. LösungHack im ProgrammIch nehme das if raus, dokumentiere hiermit mein Vergehen, und werde bei nächster Gelegenheit rausfinden, warum das an dieser Stelle so programmiert ist. Denn es ist nicht nachvollziehbar, warum für die Erstellung der Query abgefragt werden muss, ob sie später auch gebraucht wird. Diese Abfrage braucht genausoviel CPU, wie das Basteln der Query.HandarbeitIch setze global die Bewertung auf ein, und stelle manuell die Bewertung für Artikel, die nicht bewertet werden sollen auf aus.Immer noch auf der Suche noch der perfekten LösungMir ist immer noch nicht klar, warum das nicht geht.Das Model article.php liest in der Funktion function _loadArticleParams() die Parameter vom Artikel aus und übernimmt, nur soweit globale Einstellungen verwendet gesetzt ist, die globalen Einstellungen aus com_content. Das Model article.php liest auch die Daten für den Artikel ein und ruft dazu die Funktion function buildVotingQuery($params=null) auf, die allerdings nochmal abprüpft, ob Parameter gesetzt sind und wenn nicht die globalen Einstellungen liest. Die Funktion übergibt Teile für die endgültige Query, $select = ' , ROUND( v.rating_sum / v.rating_count ) AS rating, v.rating_count'; $join = ' LEFT JOIN #__content_rating AS v ON a.id = v.content_id'; die wenn voting gesetzt ist, die notwendigen Daten aus der Tabelle pre_content_rating berechnen. if (isset($row->rating_count) && $params->get( 'show_vote' ) && !$params->get( 'popup' )) ein Wert für rating_count vorhanden ist, das Voting für den Artikel eingeschaltet ist und es sich nicht um ein Popup-Fenster handelt. |
Joomla Voting geht nicht
