Jump to content

Navigazione a strati mostra quantità sbagliate


eraser80

Recommended Posts

Ciao a tutti,

 

vi presento il mio problema . Utilizzo il modulo navigazione a strati versione 2.0.4 di prestashop su Prestashop 1.6. Dopo aver selezionato tra gli attributi da mostrare l'attributo "misure" nella navigazione filtrata vengono fuori le misure di questo attributo ma mi mostra un numero sbagliato di prodotti corrispondenti ad ogni misura anche se quella misura risulta a 0. Mi spiego meglio: una scarpa a fino alla misura 14. ma se la misura 14 a 0 di regola non dovrebbe mostrarmela tra i prodotti corrispondenti, no?

 

C'è qualche impostazione da salvare per risolvere questo problema o qualche modifica del file php?

 

Chiedo a voi un consiglio .

 

Grazie a tutti in anticipo 

post-835986-0-91556100-1420821811_thumb.png

Link to comment
Share on other sites

  • 3 months later...

Ciao,

  anche io ho lo stesso problema, ho trovato la query che "sbaglia"... 

in realtà il modulo mostra la quantità di combinazioni disponibili e non la quantità di prodotti disponibili.

 

Prima di cambiare la query chiedo a te se per caso hai risolto.

 

Grazie

Link to comment
Share on other sites

Ciao,

 

grazie per la tua risposta!

no non sono riuscito a risolvere....saresti la mia salvezza se riuscissi a risolvere cambiando quella query

se hai bisogno tu un aiuto per quel che posso cerco di darti una mano ;)

 

tieni aggiornato

 

grazie mille!

Link to comment
Share on other sites

Ho modificato in questo modo:

 

attorno alla linea 2190 del file /modules/blocklayered/blocklayered.php ho la riga

case 'id_attribute_group':

ho sostituito fino a

if (!Configuration::get('PS_LAYERED_HIDE_0_VALUES'))

con questo codice

 

$sql_query['select'] = '
                            SELECT SUM(sa.quantity/sa.quantity) AS nbr, lpa.id_attribute_group,
                            a.color, al.name attribute_name, agl.public_name attribute_group_name , lpa.id_attribute, ag.is_color_group,
                            liagl.url_name name_url_name, liagl.meta_title name_meta_title, lial.url_name value_url_name, lial.meta_title value_meta_title';
                            $sql_query['from'] = '
                            FROM '._DB_PREFIX_.'layered_product_attribute lpa
                            INNER JOIN '._DB_PREFIX_.'attribute a
                            ON a.id_attribute = lpa.id_attribute
                            INNER JOIN '._DB_PREFIX_.'attribute_lang al
                            ON al.id_attribute = a.id_attribute
                            AND al.id_lang = '.(int)$id_lang.'
                            INNER JOIN '._DB_PREFIX_.'product as p
                            ON p.id_product = lpa.id_product
                            INNER JOIN '._DB_PREFIX_.'attribute_group ag
                            ON ag.id_attribute_group = lpa.id_attribute_group
                            INNER JOIN '._DB_PREFIX_.'attribute_group_lang agl
                            ON agl.id_attribute_group = lpa.id_attribute_group
                            AND agl.id_lang = '.(int)$id_lang.'
                            INNER JOIN ps_stock_available sa
                            ON sa.id_product = p.id_product
                            LEFT JOIN '._DB_PREFIX_.'layered_indexable_attribute_group_lang_value liagl
                            ON (liagl.id_attribute_group = lpa.id_attribute_group AND liagl.id_lang = '.(int)$id_lang.')
                            LEFT JOIN '._DB_PREFIX_.'layered_indexable_attribute_lang_value lial
                            ON (lial.id_attribute = lpa.id_attribute AND lial.id_lang = '.(int)$id_lang.') 
                            INNER JOIN ps_product_attribute_combination
                            ON sa.id_product_attribute = ps_product_attribute_combination.id_product_attribute
                            AND ps_product_attribute_combination.id_attribute = a.id_attribute ';


                            $sql_query['where'] = 'WHERE a.id_attribute_group = '.(int)$filter['id_value'];
                            $sql_query['where'] .= ' AND lpa.`id_shop` = '.(int)Context::getContext()->shop->id;
                            $sql_query['where'] .= ' AND '.$alias.'.active = 1 AND '.$alias.'.`visibility` IN ("both", "catalog")
                            AND p.id_product IN (
                            SELECT id_product
                            FROM '._DB_PREFIX_.'category_product cp
                            INNER JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category AND
                            '.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.'
                                AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).'
                            AND c.active = 1)
                            ) ';
                            $sql_query['group'] = '
                            GROUP BY lpa.id_attribute
                            ORDER BY ag.`position` ASC, a.`position` ASC';

fammi sapere ....

 

Link to comment
Share on other sites

  • 1 month later...

ciao, io ho fatto una prova con il tuo script, perchè sarebbe utilissimo..

Ma non mi funziona, non visualizza i filtri e dalla gestione moduli appare questo messaggio:

2 errori 

  1. blocklayered (errore di analisi in /modules/blocklayered/blocklayered.php)
  2. blocklayered (classe mancante in /modules/blocklayered/blocklayered.php)

Avevi fatto altre modifiche per caso?

 

 

Link to comment
Share on other sites

  • 2 months later...

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