Jump to content

Problema scelta prodotto Productcontroller.php


Simone Buonporto

Recommended Posts

Ho problemi nel mio sito dopo aver fatto un'istallazione pulita di prestashop 1.7.2.2 nella possibilità di sceglta di un prodotto.

Ogni qual volta che scwlgo una combinazione di colore e taglia il prestashop ricarica immediatamente la combinazione base impedendo così la possibilità poter scegliere la combinazione scelta.

Nell'immagine vedete la foto del codice sostituito in file:

controllers/font/ProductController.php

in questa maniera si forza la scelta e risolve il bug ma purtroppo è una modifica troppo aggressiva qualcuno ha una soluzione migliore?

 

Schermata 2017-11-09 alle 16.11.05.png

Schermata 2018-01-16 alle 13.20.43.png

Link to comment
Share on other sites

vecchio codice

public function canonicalRedirection($canonical_url = '')
    {
        if (Validate::isLoadedObject($this->product)) {
            if (!$this->product->hasCombinations()) {
                unset($_GET['id_product_attribute']);
            } else if (!Tools::getValue('id_product_attribute') || Tools::getValue('rewrite') !== $this->product->link_rewrite) {
                $_GET['id_product_attribute'] = Product::getDefaultAttribute($this->product->id);
            }

            $id_product_attribute = $this->getIdProductAttribute();
            parent::canonicalRedirection($this->context->link->getProductLink(
                $this->product,
                null,
                null,
                null,
                null,
                null,
                $id_product_attribute
            ));
        }
    }

nuovo codice

 public function canonicalRedirection($canonical_url = '')
    {

        if (Validate::isLoadedObject($this->product)) {
            $check = Product::getDefaultAttribute($this->product->id); // Does it have any attributes / combinations?
            if($check === 0) {
                unset($_GET['id_product_attribute']);
            } else {
                // id_product_attribute will be set in the url
                
                if(!isset($_GET['id_product_attribute'])) { // if not set in url, get the default value
                    $_GET['id_product_attribute'] = Product::getDefaultAttribute($this->product->id);
                }

            }

            $id_product_attribute = $this->getIdProductAttribute();
            parent::canonicalRedirection($this->context->link->getProductLink(
                $this->product,
                null,
                null,
                null,
                null,
                null,
                $id_product_attribute
            ));
        }
    }

 

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...