blockcategory et left_column



  • Bon, cela fait quelques temps que je rame dessus et j'ai trouvé une piste peut être?

    j'ai activé le blockcategory dans mon hook_left_column. MAIS il ne s'affiche pas à la première visite , il faut choisir un produit et revenir pour qu'il reste affiché. Certains pensent que cela vient du cache navigateur, mais mes test semblent montrer que non. vider le cache navigateur, partir d'une nouvelle session.... vider les cokkies... vider le cache smarty... la totale

    Donc je lis le code.. schématisons

    public function hookLeftColumn($params)
        {
    				
            if(!$this->setLastVisitedCategory()) {
                return;
            }
            $phpself = $this->context->controller->php_self;
            $current_allowed_controllers = array('category');
    
    blablabla
    }
    

    Si je commente ce return, elle s'affiche comme désiré. Mais disons que j'hésite à faire le bourrinr, je vais plus loin...

    public function setLastVisitedCategory()
        {
            if(method_exists($this->context->controller, 'getCategory')
                && ($category = $this->context->controller->getCategory())
            ) {
                if(!$category->active) { // c'est pas le bon controller donc on passe à la suite
                    return false;  
                }
            }
     $cache_id = 'blockcategories::setLastVisitedCategory'; // normalement vide
            if(!Cache::isStored($cache_id)) {
                if(method_exists($this->context->controller, 'getCategory') // probablement pas
                    && ($category = $this->context->controller->getCategory())
                ) {
                    $this->context->cookie->last_visited_category = $category->id; // pas de cookie déposé
                }
                elseif(method_exists($this->context->controller, 'getProduct') // non plus, sauf quand
                    && ($product = $this->context->controller->getProduct())) { // on a vu une page produit
                    if(!isset($this->context->cookie->last_visited_category)
                        || !Product::idIsOnCategoryId($product->id, array(array('id_category' => $this->context->cookie->last_visited_category)))
                        || !Category::inShopStatic($this->context->cookie->last_visited_category, $this->context->shop)
                    ) { //// la il ne dépose pas de cookie
                        $this->context->cookie->last_visited_category = (int)$product->id_category_default;
                    }
                } //// donc au saute là... ??? mais  pas de cookies non plus....
                Cache::store($cache_id, $this->context->cookie->last_visited_category);
            }
        //// et donc pas pastèque return false... tout le temps.....
            return Cache::retrieve($cache_id);
        }
    
    }
    

    De ce que je comprends... Lorsque l'on arrive sur la page la première fois, il n'y a pas de catégorie disponible donc on demande d'activer la dernière catégorie visitée, ce qui ne donne rien et renvient rien et donc return vide....
    il n'y a pas de dépôts de cookie lors de cette navigation... je vais prendre le temps d'investiguer

    "" je ne sais pas si c'est vraie ou pas, ce navigateur de m* firefox à jour, me dit qu'il n'y pas de cookie alors même qu'il y en a puisque je me suis logué sur un site... p*tain je devrais regarder d'un autre navigateur...

    en ce moment je n'ai pas le temps de faire dans la dentelle alors je vai commenter à la bourrin, mais il faudrait se pencher plus sur la question, ce que je ferais si le soucis persiste et que personne ne voit la solution évidente.


Se connecter pour répondre