Suchprotokoll für xt:Commerce

Angeregt durch einen Forumsbeitrag werde ich hier kurz beschreiben wie Sie ein Suchprotokoll zu ihrem bestehenden xt:Commerce Shop hinzufügen können. Wir werden folgende Daten in der Datenbank speichern:

  • Suchausdruck
  • Häufigkeit
  • Treffer
  • Datum der letzten Suche

Als erstes erstellen wir eine Tabelle in der xt:Commerce Datenbank, in die wir das Ganze später speichern wollen. Dazu benutzen sie das MySQL-Frontend ihrer Wahl, was bei den Meisten wohl PHPMyAdmin sein wird. Folgender SQL-Block erledigt dann das Anlegen der Tabelle in ihrer Datenbank:

CREATE TABLE `search_history` (
  `id` int(9) NOT NULL auto_increment,
  `keywords` varchar(255) default NULL,
  `counter` int(9) NOT NULL default '1',
  `hits` int(9) NOT NULL default '0',
  `last_search` datetime default NULL,
  PRIMARY KEY  (`id`)
) COMMENT='Suchprotokoll';

Nachdem das erledigt ist können wir den PHP-Code des Shopsystems ins Auge fassen. Die Datei die für die Suchergebnisse verantwortlich ist nennt sich advanced_search_result.php und liegt im Hauptverzeichnis des Shopsystems. Laden Sie diese mit einem FTP-Programm herunter und öffnen Sie sie im Editor ihrer Wahl.
Unter der Zeile

require(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING);  

fügen sie jetzt folgenden Codeblock ein:

// Suchprotokoll - by eXanto.de

   if ($_GET['keywords'] != '') {
        $keywords = htmlentities($_GET['keywords'], ENT_COMPAT);
        $already_query = xtc_db_query("SELECT * FROM " . TABLE_SEARCH_HISTORY . 
        " WHERE keywords = '" . $keywords . "' LIMIT 1");
        if ($already_data  = xtc_db_fetch_array($already_query)) {
        if ($already_data['hits'] < $listing_split->number_of_rows) { 
            $hit_update = ", hits = '".$listing_split->number_of_rows."'"; 
        }
        xtc_db_query("UPDATE ".TABLE_SEARCH_HISTORY." SET counter = counter+1, last_search = now()" . 
        $hit_update . " WHERE id = '".$already_data['id']."'");
        } else {
        xtc_db_query("INSERT INTO " . TABLE_SEARCH_HISTORY . " (keywords, counter, hits, last_search) 
        VALUES ('" . $keywords . "', '1', '".$listing_split->number_of_rows."', now())");
        }
     }

// Suchprotokoll EOF

Speichern Sie anschließend die Datei und übertragen diese wieder auf den Server. Machen Sie sicherheitshalber ein Backup der ursprünglichen Datei.

Zu guter letzt fügen Sie in der Datei includes/database_tables.php folgende Zeile dazu:

define('TABLE_SEARCH_HISTORY', 'search_history');

Und übertragen diese natürlich auch wieder zurück auf den Webserver. Wenn jetzt jemand die Suchfunktion in ihrem Shop benutzt werden seine Eingaben in diese Tabelle protokolliert. Sie können sich die Ergebnisse mit jedem beliebigen Datenbankprogrammen auswerten lassen, oder einfach in PHPMyAdmin anschauen.
Eine interessante Suche wäre z.B.:

SELECT * FROM `search_history` WHERE hits = '0'

Damit sehen sie alle Suchanfragen in ihrem Shop die keine Treffer erzielt haben. Oder benutzen sie diese Abfrage

SELECT * FROM `search_history` WHERE 1 ORDER BY counter DESC

um die häufigsten Suchbegriffe sortiert anzuzeigen.

Wir wünschen Ihnen viel Spaß und gute Umsätze mit ihrem neuen Suchprotokoll!

Getagged mit: , , ,
2 Kommentare zu “Suchprotokoll für xt:Commerce
  1. Rainer sagt:

    Toller Beitrag, wie kann ich mir nur die Suchbegriffe anzeigen, welche mehr als 0 Treffer haben?

  2. IT sagt:

    Hallo Rainer,

    du kannst im PHPMyAdmin ja filtern nach ‚hits‘. Das Ganze sähe ungefähr so aus (SQL):

    SELECT * FROM search_history WHERE hits > 0 ORDER BY hits DESC

    Gruß, Ingo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.