DISPLAY FO Desde 1.5

displayHeader

~3 min de lectura

#Descripcion

Permite inyectar contenido en la seccion `<head>` del HTML del front office. Es el hook mas utilizado para añadir CSS personalizado, meta tags, scripts de tracking (Google Analytics, Facebook Pixel), y cualquier contenido que deba estar en el head del documento. Se ejecuta en TODAS las paginas del front office.

📍
Disparado por
  • FrontControllerCore::initHeader()classes/controller/FrontController.php

#Parametros

Este hook no recibe parametros via $params.

#Ejemplo de codigo

mymodule.php
php
public function install()
{
    return parent::install()
        && $this->registerHook('displayHeader');
}
mymodule.php
php
/**
 * Hook displayHeader — Añade CSS/JS y meta tags al head
 */
public function hookDisplayHeader($params)
{
    // Metodo moderno (PS 1.7+): usar registerStylesheet/registerJavascript
    // en hookActionFrontControllerSetMedia en su lugar
    
    // Metodo legacy/compatible con todas las versiones:
    $this->context->controller->addCSS(
        $this->_path . 'views/css/front.css',
        'all'
    );
    $this->context->controller->addJS(
        $this->_path . 'views/js/front.js'
    );

    // Inyectar meta tag personalizado
    $html = '<meta name="my-module" content="active">';

    // Inyectar tracking script (solo si cookie aceptada)
    if (Module::isEnabled('psgdpr')) {
        $html .= '<!-- Mi script de tracking -->';
    }

    return $html;
}
template.tpl
smarty
{hook h='displayHeader'}

#Notas y gotchas

  • ⚠️ Desde PS 1.7, se recomienda usar `actionFrontControllerSetMedia` con `registerStylesheet()`/`registerJavascript()` para CSS/JS. Son mas eficientes y permiten CCC (Combine, Compress, Cache).
  • ⚠️ Este hook se ejecuta en TODAS las paginas del front. Para condicionar, comprueba `$this->context->controller->php_self` o la clase del controlador.
  • ⚠️ No añadas scripts grandes aqui — son render-blocking. Usa `defer` o `async` si inyectas `<script>` directamente.
  • ⚠️ El HTML devuelto se inserta DENTRO de `<head>`, no despues. Asegurate de devolver HTML valido para `<head>`.
  • ⚠️ En temas modernos (PS 1.7+), prefiere `{block name='head'}` en Smarty si puedes modificar el tema.

#Relacionados

#Historial de versiones

Version PSCambio
1.5 Introducido para inyeccion de contenido en el head
1.7 Se recomienda actionFrontControllerSetMedia como alternativa para CSS/JS
Descargar en Markdown Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.