Hola @nuriadeco y @maria96,
@nuriadeco, tu enfoque de override en SearchController::postProcess() es correcto para capturar el término de búsqueda, pero como bien señaláis, la implementación de la inserción es demasiado básica para un sistema robusto.
Para un registro adecuado que considere el contexto de PrestaShop (especialmente si usas multitienda o varios idiomas, lo cual es casi estándar), necesitas incluir el id_shop y el id_lang. También es una buena práctica añadir un contador para evitar entradas duplicadas y tener un registro más eficiente. Aquí te muestro cómo podrías modificar tu Db::getInstance()->insert() para incluir estos campos y un contador inicial. Asumo que tu tabla ps_busquedas_registradas (o ps_search_words como la llamaría yo) tiene columnas para id_shop, id_lang, word, counter y date_add.
// override/controllers/front/SearchController.php (fragmento)
// ... dentro de public function postProcess()
if (($query = Tools::getValue('s'))) {
$id_shop = (int)Context::getContext()->shop->id;
$id_lang = (int)Context::getContext()->language->id;
Db::getInstance()->insert('ps_search_words', [
'id_shop' => $id_shop, 'id_lang' => $id_lang,
'word' => pSQL($query), 'counter' => 1,
'date_add' => date('Y-m-d H:i:s')
]);
Este snippet corrige la inserción, pero para una solución más completa que maneje incrementos del contador si el término ya existe, necesitarías una lógica de SELECT antes del INSERT o UPDATE. Estas modificaciones manuales, aunque funcionan, pueden ser frágiles en futuras actualizaciones. Si buscas una solución más limpia y mantenible que te permita automatizar registro de palabras clave en la tienda sin tocar el core o crear overrides, un módulo dedicado es la mejor opción. Ofrecen una gestión más completa desde el Back Office y mayor compatibilidad.