---
title: actionFrontControllerSetMedia
section: hooks
slug: actionFrontControllerSetMedia
hook_type: action
category: media
location: FO
since_version: 1.5
source_url: "https://ayudaprestashop.es/hooks/actionFrontControllerSetMedia"
---

# Hook `actionFrontControllerSetMedia`

| Propiedad | Valor |
| --- | --- |
| Tipo | Action |
| Localizacion | FO |
| Categoria | media |
| Desde version | 1.5 |

## 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.

## Valor de retorno

- **Tipo**: `void`
- **Descripcion**: Sin retorno — los assets se añaden mediante los metodos del contexto

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| FrontController | `FrontController` | `setMedia()` | `classes/controller/FrontController.php` |

**Paginas**: `*`

## Registro del hook

```php
<?php
public function install()
{
    return parent::install()
        && $this->registerHook('actionFrontControllerSetMedia');
}
```

## Ejemplo de uso

```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.

## Hooks relacionados

- [`displayHeader`](https://ayudaprestashop.es/hooks/displayHeader)
- [`displayBackOfficeHeader`](https://ayudaprestashop.es/hooks/displayBackOfficeHeader)
- [`displayFooter`](https://ayudaprestashop.es/hooks/displayFooter)

## Guias relacionadas

- [themes/assets](https://ayudaprestashop.es/themes/assets)
- [modules/front-controllers](https://ayudaprestashop.es/modules/front-controllers)
- [performance/ccc](https://ayudaprestashop.es/performance/ccc)

## Historial de versiones

| Version | 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 |


---

*Fuente: [https://ayudaprestashop.es/hooks/actionFrontControllerSetMedia](https://ayudaprestashop.es/hooks/actionFrontControllerSetMedia). Version Markdown generada automaticamente para consumo por LLMs.*
