Étiquette : surcharger

[Prestashop 1.6] Charger ou surcharger proprement un fichier CSS ou JS se trouvant dans un thème

Source : http://stackoverflow.com/questions/23472036/override-controller-in-prestashop-1-6 et http://www.prestashop.com/forums/topic/207770-load-css-last/.

Exemple pour l’ajout d’un fichier CSS global.css se trouvant dans _mon_thème_/css/override/

Créer un fichier FrontController.php dans /override/controllers/front (ce répertoire se trouve en-dehors du thème).

Pour une SURCHARGE du code existant, utiliser la fonction initContent() qui permet d’inclure votre fichier APRES tous les autres :


<?php
class FrontController extends FrontControllerCore
{
    public function initContent()
    {
        parent::initContent();
        $this->addCSS(_THEME_CSS_DIR_.'/override/global.css');
    }
}
?>

Pour un SIMPLE AJOUT de code qui ne surchargera pas le code existant, utiliser la fonction setMedia() qui incluera votre fichier AVANT ceux du thème (à l’exception de ceux présents dans les répertoires _mon_theme_/_mon_type_de_fichier_/autoload/ :


<?php
class FrontController extends FrontControllerCore
{
    public function setMedia()
    {
        parent::setMedia();
        $this->addCSS(_THEME_CSS_DIR_.'/override/global.css');
    }
}
?>

Remarque importante : ne pas oublier de supprimer (manuellement ?) le fichier /cache/class_index.php (ce répertoire se trouve également en-dehors du thème).