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.