Jump to content

Activer custom.js en mode maintenance


Recommended Posts

Bonjour à tous,

J'essaie de faire fonctionner custom.js (et éventuellement theme.js) quand le magasin est en mode maintenance.
J'ai réussi avec custom.css mais les scripts javascript ne veulent pas se charger...

Pour ce faire, j'ai édité le fichier /shop/classes/controller/FrontControler.php comme ceci:

/**
     * Displays maintenance page if shop is closed.
     */
    protected function displayMaintenancePage()
    {
        if ($this->maintenance == true || !(int) Configuration::get('PS_SHOP_ENABLE')) {
            $this->maintenance = true;
            if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))) {
                header('HTTP/1.1 503 Service Unavailable');
                header('Retry-After: 3600');

                $this->registerStylesheet('theme-main', '/assets/css/theme.css', ['media' => 'all', 'priority' => 50]);
                $this->registerStylesheet('theme-error', '/assets/css/error.css', ['media' => 'all', 'priority' => 1000]);
                $this->registerStylesheet('theme-custom', '/assets/css/custom.css', ['media' => 'all', 'priority' => 2000]);
                
                $this->registerJavascript('corejs', '/themes/core.js', ['position' => 'bottom', 'priority' => 0]);
                $this->registerJavascript('theme-main', '/assets/js/theme.js', ['position' => 'bottom', 'priority' => 50]);
                $this->registerJavascript('theme-custom', '/assets/js/custom.js', ['position' => 'bottom', 'priority' => 1000]);


                $this->context->smarty->assign(array(
                    'shop' => $this->getTemplateVarShop(),
                    'HOOK_MAINTENANCE' => Hook::exec('displayMaintenance', array()),
                    'maintenance_text' => Configuration::get('PS_MAINTENANCE_TEXT', (int) $this->context->language->id),
                    'stylesheets' => $this->getStylesheets(),
                    'javascript' => $this->getJavascript(),
                    'js_custom_vars' => Media::getJsDef(),
                    'notifications' => $this->prepareNotifications(),
                ));
                $this->smartyOutputContent('errors/maintenance.tpl');

                exit;
            }
        }
    }

Malheureusement rien ne se passe...

Avez-vous une idée ?

Merci

 

Edited by llohoz (see edit history)
Link to comment
Share on other sites

  • 8 months later...

Salut,

Ça fait quelques mois mais voici les modifications que j'ai faites, avec $assets

    /**
     * Displays maintenance page if shop is closed.
     */
    protected function displayMaintenancePage()
    {
        if ($this->maintenance == true || !(int) Configuration::get('PS_SHOP_ENABLE')) {
            $this->maintenance = true;
            if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))) {
                header('HTTP/1.1 503 Service Unavailable');
                header('Retry-After: 3600');

                $this->registerStylesheet('theme-main', '/assets/css/theme.css', ['media' => 'all', 'priority' => 50]);
                $this->registerStylesheet('theme-error', '/assets/css/error.css', ['media' => 'all', 'priority' => 1000]);
                $this->registerStylesheet('theme-custom', '/assets/css/custom-error.css', ['media' => 'all', 'priority' => 2000]);

                $assets = $this->context->shop->theme->getPageSpecificAssets($this->php_self);
                if (!empty($assets)) {
                    foreach ($assets['css'] as $css) {
                        $this->registerStylesheet($css['id'], $css['path'], $css);
                    }
                    foreach ($assets['js'] as $js) {
                        $this->registerJavascript($js['id'], $js['path'], $js);
                    }
                }
        
                $this->context->smarty->assign(array(
                    'shop' => $this->getTemplateVarShop(),
                    'HOOK_MAINTENANCE' => Hook::exec('displayMaintenance', array()),
                    'maintenance_text' => Configuration::get('PS_MAINTENANCE_TEXT', (int) $this->context->language->id),
                    'stylesheets' => $this->getStylesheets(),
                    'javascript' => $this->getJavascript(),
                    'js_custom_vars' => Media::getJsDef(),
                    'notifications' => $this->prepareNotifications(),
                ));
                $this->smartyOutputContent('errors/maintenance.tpl');

                exit;
            }
        }
    }

Je ne me rappelle plus la source...

En espérant vous avoir aidé !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...