Hola @alberto_bici,
@paula94 y @raquelstore van por el buen camino. El die('0') es una forma muy rudimentaria de manejar un error en un controlador de PrestaShop, especialmente en una petición AJAX. El problema es doble:
Condiciones de Validación: Como bien sospechas, si la acción o el secure_key no coinciden con lo que el módulo espera, el die('0') se ejecuta. Te sugiero que, temporalmente, sustituyas ese die('0') por un error_log para ver los valores que se están recibiendo y los que espera el módulo, o incluso un die(json_encode(['error' => 'debug', 'action_recibida' => Tools::getValue('action'), 'key_recibida' => Tools::getValue('secure_key'), 'key_esperada' => $this->module->secure_key])); para depuración.
Configuración AJAX del Controlador: Un ModuleFrontController debe saber explícitamente que está manejando una petición AJAX para evitar renderizar el encabezado y pie de página de tu tema. Para PrestaShop 1.7.3.1, esto se logra configurando $this->ajax = true;. Aunque la lógica de procesamiento debería estar en postProcess() o displayAjax(), la configuración inicial para AJAX debe hacerse en initContent().
Aquí tienes una versión modificada de tu initContent() que soluciona ambos puntos, proporcionando una respuesta JSON clara en caso de error y preparando el controlador para AJAX:
function initContent()
{
parent::initContent(); // Llama al initContent del padre
$this->ajax = true; // Indicar que esta es una petición AJAX
if (!Module::isEnabled('cfrompro') || Tools::getValue('action') != 'sendQuestion' || Tools::getValue('secure_key') != $this->module->secure_key) {
header('Content-Type: application/json');
die(json_encode([
'status' => 'error',
'message' => 'Petición inválida o módulo deshabilitado.',
'debug' => [
Este cambio hará que, si las condiciones fallan, recibas una respuesta JSON detallada en lugar de un '0' mudo. Si las condiciones pasan, el controlador estará listo para procesar la petición AJAX sin renderizar el tema completo. Asegúrate de que tu llamada AJAX en el frontend esté enviando el action y secure_key correctos.