Jump to content
Studio Kaloa

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

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
Quote

la méthode Install() est normalement appelée uniquement lors de l'installation du module

ben oui effectivement tu commentes le code (on vire les hook), apres tu desinstalles + tu  reinstalles le module,

cordialement

Edited by Alexandre Carette (see edit history)

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

Bonjour,
Vous dites "Problème résolu"... Qu'avez-vous fait exactement ?
Quand je commente la ligne, plus rien ne s'affiche... sur 1.7.4.2.

Share this post


Link to post
Share on other sites

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;
        }
    }
}


 

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

Pour Google Analytics v3.2.0 voici la modification dans "modules/ps_googleanalytics/ps_googleanalytics.php" ligne 524 à 526

Dégreffer module qui revient systématiquement - PrestaShop pour les développeurs - dans Ps_Googleanalytics.php ligne 524.JPG

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

×
×
  • Create New...

Important Information

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