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 PS | Cambio |
|---|---|
| 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.