Jump to content

Dégreffer module qui revient systématiquement


Recommended Posts

Bonjour la communauté,

Je rencontre un problème avec le module "Produits phares". J'utilise Prestatshop 1.7.4 avec un thème personnalisé enfant du thème "Classic".
Le module est greffé à un hook personnalisé de mon thème : "displayHomeFeaturedProduct" mais il est également greffé à "displayHome" (par défaut).

Lorsque je le dégreffe de "displayHome", que ce soit par le menu "Apparence > Position" ou directement dans la base de donnée "shop_hook_module", au premier chargement de la page d'accueil, il est bien absent, mais il est "automatiquement" re-greffé ce qui fait que les chargement suivant le font apparaître… (liaison recréée en base de donnée).

Une idée d'où pourrait venir ce problème ?

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Salut, pourquoi ne pas virer l'enregistrement du hook dans la fonction d install ? ps_featuredproducts.php

 public function install()
    {
        $this->_clearCache('*');

        Configuration::updateValue('HOME_FEATURED_NBR', 8);
        Configuration::updateValue('HOME_FEATURED_CAT', (int) Context::getContext()->shop->getCategory());
        Configuration::updateValue('HOME_FEATURED_RANDOMIZE', false);

        return parent::install()
            && $this->registerHook('addproduct')
            && $this->registerHook('updateproduct')
            && $this->registerHook('deleteproduct')
            && $this->registerHook('categoryUpdate')
           // on vire --> && $this->registerHook('displayHome')
            && $this->registerHook('displayOrderConfirmation2')
            && $this->registerHook('displayCrossSellingShoppingCart')
            && $this->registerHook('actionAdminGroupsControllerSaveAfter')
        ;
    }

cordialement

Edited by Alexandre Carette (see edit history)

Share this post


Link to post
Share on other sites

Salut, merci de te pencher sur le problème !

Je vais essayer mais je reste septique…
la méthode Install() est normalement appelée uniquement lors de l'installation du module. Dans mon cas, je n'installe/désinstalle pas le module, ni même l'active/désactive.
Donc la méthode Install() n'est pas sensé être appelée.

Je souhaite juste le dégreffer du hook "displayHome" … mais la greffe est recréée systématiquement après le premier chargement de page… par quel miracle ? là est la question !

 

Share this post


Link to post
Share on other sites

Bon, le problème est clairement ailleurs… même en commentant la ligne de création du hook dans le code de ps_featuredproducts.php, désinstallation, réinstallation, … le module se regreffe dès que l'on charge la page d'accueil en front…

J'ai également supprimé la ligne de déclaration dans le fichier de config/theme.yml du thème Classic pour être sûr.

Merci. Il faut que j'investigue ailleurs… trouver par quel méthode cette liaison est recréée en base de donnée…

Share this post


Link to post
Share on other sites

Déjà fait… 

je suspecte un lien avec le thème Classic et la fonctionnalité "Configuration de la page d'accueil" : le module : "ps_themecusto"
Même lorsque le module n'est pas installé, il apparaît dans la liste des options "Produits en page d'accueil".

Maintenant, il faut que je trouve où est gérée cette partie et le lien avec "home_products"

Capture d’écran 2019-08-22 à 15.18.22.png

Capture d’écran 2019-08-22 à 15.25.12.png

Share this post


Link to post
Share on other sites

  • 1 month later...

Ajouter un nouvel override pour ce module (overrides/modules/ps_googleanalytics/ps_googleanalytics.php ) et faites le retourner true au lieu de faire une greffe :

<?php

if (!defined('_PS_VERSION_')) {
    exit;
}

class Ps_GoogleanalyticsOverride extends Ps_Googleanalytics
{
    public function isModuleEnabled($module_name)
    {
        if (($module = Module::getInstanceByName($module_name)) !== false &&
            Module::isInstalled($module_name) &&
            $module->active) {
//            return $module->registerHook('displayHome');
            return true;
        }
    }
}


 

  • Thanks 1

Share this post


Link to post
Share on other sites

Merci beaucoup... J'ai ajouté un override, puis finalement j'ai opté pour la modification directe de ps_googleanalytics.php, car j'avais désactivé Google analytics (officiel) et ça m'avait créé une erreur 500 qui me bloquait l'accès au backoffice.

Un grand merci pour votre réponse si rapide

Share this post


Link to post
Share on other sites

  • 3 months later...
  • 8 months later...

Bonsoir à tous.

Je viens de faire les mises à jour sur Prestashop pour passer en 1.7.6.8.

Et le problème que j'avais résolu jusqu'à maintenant grâce à votre idée d'ajouter une ligne de code "return true" dans le fichier ps_googleanalytics.php, ne peut plus être fait car le fichier de Google a changé... Je vous joins le fichier suite à la mise à jour du module de Google aussi à cette occasion.

Je ne vois pas comment faire vu que le module, bien que dégreffé revient maintenant systématiquement.

Avez vous une idée ? C'est un vrai probleme.

Merci encore, Laurent

 

ps_googleanalytics.php

Share this post


Link to post
Share on other sites

  • 1 month later...

Remplacer l'override proposé précédemment par :

<?php

if (!defined('_PS_VERSION_')) {
    exit;
}

class Ps_GoogleanalyticsOverride extends Ps_Googleanalytics
{
    public function hookDisplayHome()
    {
        //$hook = new PrestaShop\Module\Ps_Googleanalytics\Hooks\HookDisplayHome($this, $this->context);
        //return $hook->run();
    }
}

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More