Hola @hectormadrid57,
Entiendo perfectamente el problema. En PrestaShop 1.7.x, el comportamiento de los parámetros pasados a los hooks puede variar ligeramente entre versiones y contextos (página de producto, listado, etc.). La línea if (!isset($params['product'])) { return ''; } en tu omnipro/omnipro.php es demasiado estricta para ciertos escenarios.
Cuando el hook es llamado en contextos como listados de categoría o módulos de productos relacionados, a veces el parámetro product no está inicializado o viene de una forma diferente a la esperada. Para asegurar que la lógica interna de tu módulo Omnipro siempre tenga algo con lo que trabajar y evitar ese retorno temprano, puedes modificar esa sección de la siguiente manera:
function hookDisplayProductPriceBlock($params)
{
// Aseguramos que 'product' siempre exista como un array asociativo.
// Esto evita el retorno temprano si el parámetro no se ha pasado en ciertos contextos.
if (!isset($params['product']) || !is_array($params['product'])) {
$params['product'] = [];
}
// La lógica del módulo Omnipro ahora puede continuar asumiendo
// que $params['product'] está presente (aunque pueda estar vacío).
if ($this->isShowHookPositionsEnabled()) {
Con este cambio, si $params['product'] no está definido, se inicializa como un array vacío en lugar de retornar directamente. Esto permite que el resto del código del módulo procese la solicitud y decida si hay datos suficientes para mostrar el bloque de precio. Pruébalo y dime si resuelve el problema.