Hallo, Artikelbewertungen werden leider immer sofort veröffentlicht. Das Captcha bietet etwas Schutz vor Spambots, aber nicht vor Menschen. Auch die Beschränkung auf Kundengruppen mit Konto (also keine Gast-Bewertungen) bietet da nur einen geringen Schutz, da Kundenkonten schnell mit Fake-Daten anlegbar sind. Die Artikelbewertungen sind somit vergleichbar mit Kommentaren in Blogs. Und für die ist der Blog-Inhaber verantwortlich. Gleiches "Recht" dürfte vermutlich auch in Shops gelten. Im harmlosesten Fall kann jemand die Artikelbewertungen missbrauchen um schnell die Produkte mies zu machen, im schlimmsten Fall sind es bösartige Kommentare die gegen bestehendes Recht verstoßen. In beiden Fällen bekommt man es aber meist nicht schnell genug mit um zu reagieren. Ich finde es höchst bedenklich und absolut unerwünscht, dass praktisch JEDER Besucher den Inhalt des Shops SOFORT für alle sichtbar verändern kann!!! Daher der Feature-Request. die Artikelbewertung moderierbar zu machen: Nach dem Absenden einer Artikelbewertung soll diese nur gespeichert aber nicht angezeigt werden. Als Bestätigung sollte eine Meldung eingeblendet werden, dass die Bewertung erst nach einer Überprüfung freigeschaltet wird. Gleichzeitig wird der Shop-Admin über die neue Bewertung per Mail informiert. Im Backend kann man dann die Artikelbewertungen einzeln freischalten. Noch nicht freigeschaltete Bewertungen sollten natürlich an keiner Stelle zu sehen sein, also weder in der Box, noch unter oder bei dem Produkt oder auf der Reviews-Übersicht. Etwas vergleichbares habe ich für XTC gefunden (http://www.xtc-modified.org/forum/index.php?topic=2090.0), aber leider - ist es nicht für GX2 - und ich kann es nicht auf GX2 portieren, dafür fehlen mir die Programmierkenntnisse - scheint für den Bewerter keine Meldung ausgegeben zu werden, dass die Bewertung erst noch überprüft werden muss - bekommt der Admin keine Mail über die neue Artikelbewertung
@ GAMBIO: Dieses Feature würde auf jeden Fall Sinn machen und ich würde mir dies auch unbedingt wünschen. Rein rechtlich ist dies wirklich eine Grauzone, wo ein findiger Anwalt auch ganz schnell etwas hinein projetzieren könnte. Also Daumen hoch und die Artikelbewertungen in Zukunft moderierbar machen...*pls*
Ups, wir wollen die Artikelbewertungen zukünftig nutzen und ich habe gedacht (leider noch nicht nachgelesen) es wäre so, wie survival74 fordert. Das ist ja böse, also da stimme ich zu, dass hier eine Änderung dringendst Sinn macht.
Ich bin hier auch sofort dabei! Die Freischaltung der Artikelbewertungen könnte doch nach dem gleichen Prinzip "Kommentare Gästebuch" freischalten ablaufen, oder?
Hallo Daniel, es freut mich, dass du das auch sinnvoll findest. Gibt es schon einen neuen Status?! Ich will ja nicht nerven oder drängeln - aber gerne Mailbeez einsetzen um Produktbewertungen zu sammeln Und bevor ich die Produktbewertungen etwas prominenter in den Vordergrund stelle würde ich halt schon gerne dieses offene Scheunentor geschlossen wissen.
Nein, das werden wir auch nicht in den nächsten Tagen umsetzen können, wird auf jeden Fall etwas dauern.
Moderierbare Artikelbewertungen Die Problematik hat mir keine Ruhe gelassen und warten wollte ich auch nicht. Daher habe ich mich dran gesetzt und so lange getüftelt bis alles funktioniert. Nachfolgend kommt nun das Ergebnis meiner Anstrengungen, moderierbare Artikelbewertungen für GX2 ! Wie immer bei solchen Anleitungen gilt auch hier: ich habe zwar alles nach bestem Wissen und Gewissen getestet und beschrieben, trotzdem erfolgt der Einbau auf eigene Gefahr und Risiko. Dateien und Datenbank vorher sichern nicht vergessen! Und am Besten erstmal in einer reinen Testumgebung einbauen!! Die Anleitung basiert auf diesem Modul für XTC: http://www.xtc-load.de/2009/09/bewertungen-als-admin-freischalten/ Die dort vorhandene zip-Datei herunterladen und auspacken. Teile davon werden nachher benötigt! 1. Folgenden SQL Befehl ausführen: Code: ALTER TABLE `reviews` ADD `reviews_status` INT( 1 ) NOT NULL DEFAULT '0'; Damit bekommt die Tabelle reviews eine neue Spalte "review_status", die standardmäßig mit "0" gefüllt ist, das geht auch automatisch bei neuen Bewertungen. In den nächsten Schritten müssen die Dateien angepasst werden, die die Artikelbewertungen ausgeben. Und zwar so, dass nur der review_status "1" (der Status der freigegebenen Bewertungen) angezeigt wird: 2. /reviews.php (alle Reviews) suche nach: Code: $reviews_query_raw = "select r.reviews_id, left(rd.reviews_text, 250) as reviews_text, r.reviews_rating, r.date_added, p.products_id, pd.products_name, p.products_image, r.customers_name from ".TABLE_REVIEWS." r, ".TABLE_REVIEWS_DESCRIPTION." rd, ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_status = '1' and p.products_id = r.products_id and r.reviews_id = rd.reviews_id and p.products_id = pd.products_id and pd.language_id = '".(int) $_SESSION['languages_id']."' and rd.languages_id = '".(int) $_SESSION['languages_id']."' order by r.reviews_id DESC"; ersetze mit: Code: $reviews_query_raw = "select r.reviews_id, left(rd.reviews_text, 250) as reviews_text, r.reviews_rating, r.date_added, p.products_id, pd.products_name, p.products_image, r.customers_name from ".TABLE_REVIEWS." r, ".TABLE_REVIEWS_DESCRIPTION." rd, ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_status = '1' and p.products_id = r.products_id and r.reviews_id = rd.reviews_id and p.products_id = pd.products_id and r.reviews_status = '1' and pd.language_id = '".(int) $_SESSION['languages_id']."' and rd.languages_id = '".(int) $_SESSION['languages_id']."' order by r.reviews_id DESC"; 3. /product_reviews.php (Liste der Reviews) suche nach: Code: $reviews_query = xtc_db_query("select reviews_rating, reviews_id, customers_name, date_added, last_modified, reviews_read from ".TABLE_REVIEWS." where products_id = '".(int) $_GET['products_id']."' order by reviews_id DESC"); ersetze mit: Code: $reviews_query = xtc_db_query("select reviews_rating, reviews_id, customers_name, date_added, last_modified, reviews_read from ".TABLE_REVIEWS." where products_id = '".(int) $_GET['products_id']."' AND reviews_status = '1' order by reviews_id DESC"); 4. /product_reviews_info.php (eine Review) suche nach: Code: $reviews_query = "select rd.reviews_text, r.reviews_rating, r.reviews_id, r.products_id, r.customers_name, r.date_added, r.last_modified, r.reviews_read, p.products_id, pd.products_name, p.products_image from ".TABLE_REVIEWS." r left join ".TABLE_PRODUCTS." p on (r.products_id = p.products_id) left join ".TABLE_PRODUCTS_DESCRIPTION." pd on (p.products_id = pd.products_id and pd.language_id = '".(int) $_SESSION['languages_id']."'), ".TABLE_REVIEWS_DESCRIPTION." rd where r.reviews_id = '".(int) $_GET['reviews_id']."' and r.reviews_id = rd.reviews_id and p.products_status = '1'"; ersetze mit: Code: $reviews_query = "select rd.reviews_text, r.reviews_rating, r.reviews_id, r.products_id, r.customers_name, r.date_added, r.last_modified, r.reviews_read, p.products_id, pd.products_name, p.products_image from ".TABLE_REVIEWS." r left join ".TABLE_PRODUCTS." p on (r.products_id = p.products_id) left join ".TABLE_PRODUCTS_DESCRIPTION." pd on (p.products_id = pd.products_id and pd.language_id = '".(int) $_SESSION['languages_id']."'), ".TABLE_REVIEWS_DESCRIPTION." rd where r.reviews_id = '".(int) $_GET['reviews_id']."' and r.reviews_id = rd.reviews_id and p.products_status = '1' AND reviews_status = '1'"; 5. /templates/EyeCandy/source/classes/ReviewsContentView.inc.php (Box) suche nach: Code: r.reviews_id = rd.reviews_id AND füge danach ein: Code: r.reviews_status = '1' AND 6. /includes/classes/product.php (Anzeige im Produkt) suche nach (kommt 2x vor!!!): Code: where r.products_id = '".$this->pID."' ersetze (beide Fundstellen) jeweils mit: Code: where r.products_id = '".$this->pID."' and r.reviews_status = '1' 6.1 /includes/classes/product.php Zusatzschritt nur für diejenigen, die die Durchschnittssterne über dem Preis anzeigen lassen (nach der Anleitung aus dem anderen Forum)!! suche nach: Code: r.products_id = '". $this->pID ."'"); füge davor (oder eine Zeile darüber) ein: Code: r.reviews_status = '1' AND Nachfolgend ist das Backend dran, damit die neuen Bewertungen dann auch freigeschaltet werden können: 7. /inc/xtc_set_reviews_status.inc.php die Datei aus dem zip-Paket nehmen und hochladen 8. /admin/reviews.php die Datei aus dem zip-Paket nehmen, hochladen und damit die vorhandene ersetzen 9. /lang/german/admin/reviews.php suchen nach: Code: ?> davor einfügen: Code: define('TABLE_HEADING_STATUS','freischalten'); Damit funktioniert es schonmal. Damit der Besucher nicht auf die Bewertungsübersichtsseite weitergeleitet wird und sich womöglich wundert wo seine Bewertung ist, soll er stattdessen einen Hinweis angezeigt bekommen. Das geht sicherlich auch professioneller, ich habe es auf diese Weise gelöst: 10. im Content-Manager eine neue Content-Seite anlegen in der Art "Vielen Dank für Ihre Bewertung" mit dem Inhalt "Die Bewertung war erfolgreich und wird nach einer Überprüfung später freigeschaltet". Die Gruppen-ID merken, bei mir ist es die 303 11. /product_reviews_write.php suchen nach: Code: if($error!=true) xtc_redirect(xtc_href_link(FILENAME_PRODUCT_REVIEWS, htmlentities($_POST['get_params']))); ersetzen mit (natürlich eigene Content-Gruppen-ID aus Schritt 10. nehmen!): Code: if($error!=true) xtc_redirect("shop_content.php?coID=303"); Alles hochladen, Cache leeren (ggf, auch beim Testen, vor allem die Seite /reviews.php (bzw. die dazugehörige cache-html) musste ich immer manuell per ftp löschen um sie sofort zu aktualisieren.) und fast fertig. Nach dem Testen dann noch: 12. einmalig alle bereits vorhandenen Bewertungen per SQL-Befehl freischalten: Code: UPDATE `reviews` SET `reviews_status` = '1'; Leider habe ich keine Ahnung wie man dem System beibringen kann, nach dem Absenden der neuen Bewertung den Admin per Mail darüber zu informieren? Durch diese Sicherung kann man nun auch bedenkenlos Gastbewertungen zulassen und ggf. auch das Captcha abschalten. Sind dann gleich zwei Hürden weniger für den Kunden!
Hi, so viel Einsatz an einem Samstag Abend... Respekt Werde es mit Sicherheit in Kürze mal testen. Die letzte Funktion, mit der Benachrichtigung an den Admin wäre wirklich noch eine tolle Sache. Mal schauen...ggf. bekommt es ja einer hin. Ich danke dir jedoch schon mal, für die tolle Leistung...!
Auch Hi, "an einem Samstag Abend" ist gut... Angefangen habe ich gestern Nachmittag, dann die halbe Nacht dran gesessen und heute den ganzen Tag über. Mit Unterbrechungen natürlich wie Schlafen, Essen, Einkaufen etc. Jemand der richtig programmieren kann und sich mit System auskennt hätte das garantiert in einem Bruchteil der Zeit geschafft. Aber egal, mir war das Thema halt sehr wichtig... Und jetzt gönne ich mir mal etwas Wochenende
Super, hatte ich auch auf meinem Zettel fürs Wochenende, bin aber noch nicht sehr weit gekommen. Könnte es sein, dass die Codes für "4. /product_reviews_info.php (eine Review)" vertauscht sind?
@survival74 sehr saubere arbeit. bin begeistert. funzt alles tadellos. thx. vielleicht sollte gambio die paar codeschnippsel mit im shopsystem aufnehmen. bin dafür
Ich verstehe den Sinn dieser Änderung immer noch nicht so ganz. Werden die vielen Änderungen dazu gemacht, damit die geschriebenen Bewertungen nicht sofort angezeigt werden, sondern erst nach Freischaltung durch den Admin? Updatesicher ist das ganze auch nicht, oder?