Jump to content

[solved] Catégorie et multiboutique - 1.7.6


RaWMotorsports

Recommended Posts

Bonjour,

J'ai une multiboutique en 1.7, avec des catégories dans chaque boutique, jusque la rien d'anormal :)

Certaine catégories sont dispo pour les deux boutiques, donc aucun probleme.
Certaine catégories ne sont  valable que pour une seule boutique, or dans ce cas présent si je saisie : https://www.boutique2.fr/xx-categorie-de-la-boutique-1 alors cela rends une catégorie vide certe, mais une catégorie tout de meme, alors que cette catégorie n'est pas censé exister dans cette boutique !

Ne devrions pas tomber sur une 404 dans un tel cas ? Le soucis c'est que notre ami Google me réference tout un tas de page ... pour rien !

Merci pour votre retour,

Probleme résolu dans le post ci-dessous

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

Ok, donc d'apres vous c'est un "bug" de la version presta 1.7.6
Bien que je prefere eviter, j'ai donc ajouter dans le fichier CategoryController.php

$sql= 'Select id_category from `' . _DB_PREFIX_ . 'category_shop` where id_shop='.(int)Context::getContext()->shop->id.' and id_category='.$id_category;
        $category_in_shop=0;
        if ($results = Db::getInstance()->ExecuteS($sql))
            foreach ($results as $row)
                $category_in_shop=$row['id_category'];
     
        if ($category_in_shop==0) {
            header("Location: ".Context::getContext()->shop->getBaseURL(true).Context::getContext()->language->iso_code."/404", true, 301);
            exit();
        }

 

Link to comment
Share on other sites

regardez comment la chose est traité dans la version 1.6 de PrestaShop car à l'époque cela fonctionnait convenablement, en tout cas, moi je ne rencontre pas ce type de soucis.

    public function init()
    {
        // Get category ID
        $id_category = (int)Tools::getValue('id_category');
        if (!$id_category || !Validate::isUnsignedId($id_category)) {
            $this->errors[] = Tools::displayError('Missing category ID');
        }

        // Instantiate category
        $this->category = new Category($id_category, $this->context->language->id);

        parent::init();

        // Check if the category is active and return 404 error if is disable.
        if (!$this->category->active || !Validate::isLoadedObject($this->category) || !$this->category->inShop() || !$this->category->isAssociatedToShop() || in_array($this->category->id, array(Configuration::get('PS_HOME_CATEGORY'), Configuration::get('PS_ROOT_CATEGORY')))) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            $this->errors[] = Tools::displayError('Category not found');
        } else {
            // Check if category can be accessible by current customer and return 403 if not
            if (!$this->category->checkAccess($this->context->customer->id)) {
                header('HTTP/1.1 403 Forbidden');
                header('Status: 403 Forbidden');
                $this->errors[] = Tools::displayError('You do not have access to this category.');
                $this->customer_access = false;
            }
        }
    }

 

Link to comment
Share on other sites

Merci mediacom pour cette piste, je remplace, ca sera plus propre !

Il y a donc des fonctions déjà faites, surement un oubli donc, ceux qui ont le meme soucis  sur 1.7.6 il suffit donc de remplacer ligne 90 de controllers/front/listing/CategoryController.php :

if (!Validate::isLoadedObject($this->category) || !$this->category->active ) {
            Tools::redirect('index.php?controller=404');
        }

par 

 if (!Validate::isLoadedObject($this->category) || !$this->category->active || !$this->category->inShop() || !$this->category->isAssociatedToShop()) {
            Tools::redirect('index.php?controller=404');
        }

 

Edited by RaWMotorsports (see edit history)
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...