Suchbegriffe loggen

Habe mich mal wieder in der Modulentwicklung probiert. Und habe ich die Klasse oxsearch so erweitert, dass der vom Benutzer eingegebene Suchbegriff in der Datenbank gespeichert wird. Hintergrund ist, dass ich gerne wissen möchte, nach welchen Begriffen der Besucher eigentlich sucht. Wer die Anpassungen auch nutzen will, muss die untenstehenden Änderungen durchführen. Falls ihr Verbesserungsmöglichkeiten seht, einfach her damit. Und wie immer… vor den Anpassungen ein Backup erstellen.

In der DB das folgende Script ausführen…

CREATE TABLE `oxsearchlog` (
`KEYWORD` VARCHAR( 128 ) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL , `INSERTDATE` DATETIME NULL DEFAULT '0000-00-00 00:00:00') ENGINE = MYISAM ;

Dann die Datei “searchlog.php” mit dem folgenden Inhalt erstellen und im Ordner modules ablegen.

<?php

class searchLog extends searchLog_parent
{
    public function getSearchArticles( $sSearchParamForQuery = false, $sInitialSearchCat = false, $sInitialSearchVendor = false, $sInitialSearchManufacturer = false, $sSortBy = false )
    {
        // sets active page
        $this->iActPage = (int) oxConfig::getParameter( 'pgNr' );
        $this->iActPage = ($this->iActPage < 0)?0:$this->iActPage;

        // load only articles which we show on screen
        //setting default values to avoid possible errors showing article list
        $iNrofCatArticles = $this->getConfig()->getConfigParam( 'iNrofCatArticles' );
        $iNrofCatArticles = $iNrofCatArticles?$iNrofCatArticles:10;

        $oArtList = oxNew( 'oxarticlelist' );
        $oArtList->setSqlLimit( $iNrofCatArticles * $this->iActPage, $iNrofCatArticles );

        $sSelect = $this->_getSearchSelect( $sSearchParamForQuery, $sInitialSearchCat, $sInitialSearchVendor, $sInitialSearchManufacturer, $sSortBy );
        if ( $sSelect ) {
            $oArtList->selectString( $sSelect );
        }

// aktuelles Datum und Zeit
$dt = date('Y-m-d H:i');
// Keyword in Tabelle oxsearchlog schreiben
$db = oxDb::getDb();
$sQuery = "INSERT INTO oxsearchlog (keyword, insertdate) VALUES ('$sSearchParamForQuery', '$dt')";
$db->Execute($sQuery); 

        return $oArtList;
    }
}

Danach im Adminbereich das Modul aktivieren.

oxsearch => searchlog

Das Modul trägt jeden Suchbegriff in die Tabelle oxsearchlog mit dem aktuellen DateTime-Stempel ein.

Die Wörter nach denen gesucht wird erhält man doch auch über Statisik -> ausgeben:

Suchwörter :

Folgende Suchwörter wurden in dem von Ihnen gewünschten Zeitraum eingegeben :

Wo liegen die Vorteile deiner Version ?

Hättest du mir das vorher sagen können? :stuck_out_tongue:
Ok, dann muss ich es wohl nun so erweitern, dass es einen Sinn bekommt.

Immer noch nützlich als kleines Tutorial!

Kopf hoch und vielen Dank, Roland!

Ich nutze für sowas g-analytics. Im analytics muss man nur angeben wie der “suchstring” in der Url aussieht, diese wird ausgelesen. Dadurch erhält man auch viele weitere interessante und ggf. wertvolle Hinweise.
Zum Beispiel kann ich sehen wenn etwas gesucht wurde und dann auch gekauft wird.

Hierbei ist der Vorteil das man am Shop selber nichts tun muss. Derzeit nutze ich das z.B, mit meinem XT Shop. Ich werde bald zu oxid ce wechseln, traue mich im Moment aber noch nicht :slight_smile:

Und wie kann ich das jetzt damit machen, dass wenn jemand bei Suche etwas eingibt, schon Vorschläge kommen, was andere Benutzer eingegeben haben ? Sowie bei Amazon z.B.??

Für das ist ein seperates Modul erhältlich. Schau mal im Exchange nach.

Ich krame das Thema mal wieder heraus.

roland, hast du mal die Ergebnisse deiner Version mit den aus dem Admin-> Statisitken -> ausgeben verglichen ?

Wenn die Ergebnisse für die Statistik “Suchwörter” im Admin nur doppelt gut ist, wie die für Besucher, dann kann man die vergessen. Bei Besuchern passen die Werte aus dem Admin gar nicht, sowohl in der Höhe (verglichen mit GA) als auch von der Tendenz her.

CYA