Hola @lucas_tech,
@diegoonline38 tiene razón. El problema que describes es bastante común. La sección de código que has compartido indica una salida temprana si isShowHookPositionsEnabled() devuelve true, lo que impide que la lógica de renderizado del precio para listados (que presumiblemente viene después en la función) se ejecute. La condición que mencionas !$onProduct && !$this->shouldRenderOnListingViaPriceBlock() nunca se alcanza porque la función ya ha salido.
Para solucionar esto sin eliminar la funcionalidad de isShowHookPositionsEnabled() (que a veces se usa para depuración o para mostrar marcadores de hook), necesitas condicionar ese return. La idea es que si estamos en una página de listado (donde $onProduct sería false) y el módulo debe mostrar el bloque de precio según su configuración (shouldRenderOnListingViaPriceBlock() es true), entonces no debemos salir. Permitimos que el resto de la función continúe.
Aquí tienes un parche que puedes probar para omnipro/omnipro.php:
function hookDisplayProductPriceBlock($params)
{
if (!isset($params['product'])) {
return '';
}
$isListingPage = (Context::getContext()->controller->php_self != 'product' && !Tools::getValue('id_product'));
if ($this->isShowHookPositionsEnabled() && (!$isListingPage || !$this->shouldRenderOnListingViaPriceBlock())) {
return $this->renderHookPositionMarker($params);
}
Con este cambio, si isShowHookPositionsEnabled() está activo, la función solo hará un return temprano con el marcador si NO es una página de listado (es decir, es una página de producto) O si la configuración del módulo indica explícitamente que NO debe renderizarse en listados. De lo contrario, la ejecución continuará y tu bloque de precio debería aparecer.
Recuerda que modificar el código de los módulos directamente puede causar problemas con futuras actualizaciones. Para una gestión más robusta de estas directivas, te recomiendo echar un vistazo a una herramienta de directiva omnibus dedicada que maneje estas complejidades de forma más limpia.