ACTION FO Desde 1.5

actionFrontControllerSetMedia

~3 min de lectura

#Descripcion

Se ejecuta durante la inicializacion del FrontController, en la fase de registro de assets. Es el lugar correcto para añadir archivos CSS y JavaScript a las paginas del front office. Se dispara en TODAS las paginas del front office.

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

#Parametros

Este hook no recibe parametros via $params.

#Ejemplo de codigo

mymodule.php
php
<?php
public function install()
{
    return parent::install()
        && $this->registerHook('actionFrontControllerSetMedia');
}
mymodule.php
php
<?php
public function hookActionFrontControllerSetMedia()
{
    // Solo añadir en paginas especificas
    $controller = $this->context->controller->php_self;

    // Siempre añadir CSS principal del modulo
    $this->context->controller->registerStylesheet(
        'mymodule-main',
        'modules/' . $this->name . '/views/css/front.css',
        ['media' => 'all', 'priority' => 150]
    );

    // JS solo en la pagina de producto
    if ($controller === 'product') {
        $this->context->controller->registerJavascript(
            'mymodule-product',
            'modules/' . $this->name . '/views/js/product.js',
            ['position' => 'bottom', 'priority' => 200]
        );

        // Pasar variables PHP a JS
        Media::addJsDef([
            'mymodule_config' => [
                'api_url'   => $this->context->link->getModuleLink($this->name, 'ajax'),
                'debug'     => (bool) Configuration::get('MY_DEBUG'),
            ]
        ]);
    }

    // En pagina de carrito
    if ($controller === 'cart') {
        $this->context->controller->registerJavascript(
            'mymodule-cart',
            'modules/' . $this->name . '/views/js/cart.js',
            ['position' => 'bottom', 'priority' => 200]
        );
    }
}

#Notas y gotchas

  • ⚠️ Usa `registerStylesheet()` y `registerJavascript()` en lugar de `addCss()`/`addJs()` (obsoletos desde PS 1.7).
  • ⚠️ El ID del asset (primer parametro) debe ser **unico** en toda la tienda — usa el nombre de tu modulo como prefijo.
  • ⚠️ La `priority` controla el orden de carga: valores mas bajos cargan antes. El core de PS usa valores entre 0 y 200.
  • ⚠️ Usa `$this->context->controller->php_self` para detectar en que pagina estas.
  • ⚠️ Para el Back Office usa el hook `displayBackOfficeHeader` en su lugar.
  • ⚠️ En PS 1.7+, los assets pasan por el sistema CCC (Combine, Compress, Cache) si esta activado.

#Relacionados

#Historial de versiones

Version PSCambio
1.5 Introducido con addCss/addJs
1.7 Se recomienda usar registerStylesheet/registerJavascript con el nuevo sistema de assets
8.0 Sin cambios breaking. Compatible
Descargar en Markdown Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.