Jump to content
  • 0

Sortowanie cech produktu - filtry nawigacyjne


EwelinaCSI

Question

Witam,

 

Potrzebuję pomocy przy sortowaniu cech, które wyświetlają się w bloku z lewej strony (left column). ( post-1404820-0-00653000-1498036707_thumb.jpg ) Przeszukałam już chyba całe forum, znalazłam kilka informacji, niestety nie działają w wersji Presty, którą posiadam (1.6.1)

Próbowałam dodawać im przedrostki 01.cecha, 02.cecha  (wcześniej w pliku classes/Product.php aby je wycinało

 

Za kodem:

* Select all features for a given language
    *
    * @param $id_lang Language id
    * @return array Array with feature's data
    */
    public static function getFrontFeaturesStatic($id_lang, $id_product)
    {
        if (!Feature::isFeatureActive()) {
            return array();
        }
        if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache)) {
            self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
				SELECT name, value, pf.id_feature
				FROM '._DB_PREFIX_.'feature_product pf
				LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
				LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
				LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
				'.Shop::addSqlAssociation('feature', 'f').'
				WHERE pf.id_product = '.(int)$id_product.'
				ORDER BY f.position ASC'
            );

dodałam poniższy kod:

$resultsArray = array();        foreach ($result AS $row)        {            $row['name'] = preg_replace('/^[0-9]+\./', '', $row['name']);            $resultsArray[] = $row;        }        return $resultsArray;    }

Korzystałam z informacji zawartej na : https://www.prestashop.com/forums/topic/9709-edit-features-order-list/?hl=features

 

Niestety nie rozwiązało to mojego problemu.

 

Będę wdzięczna za pomoc.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Dzięki za odpowiedź. Chciałabym aby wartości były sortowane od najmniejszej do największej. Tak jak widać na obrazku, który dołączyłam wartość 1,92 TB wskoczyła mi przed wartość 16 GB ;/  Rozwiązanie, które zaproponowałeś niestety nie jest więc dla mnie..
Dlatego przyszło mi na myśl wycinanie sztucznie dodanych przedrostków w postaci numeracji 01., 02. etc.

Jakby Ci wpadł do głowy jakiś inny pomysł, będę wdzięczna za pomoc :)

Link to comment
Share on other sites

  • 0

Uhmm, skoro chcesz to najprościej możesz to zrobić w banalny sposób - nie rób żadnych zmian, tylko wejdź w BO-> Katalog -> Atrybuty i wartości (jeśli korzystasz z kombinacji) lub BO-> Katalog -> Cechy i następnie wybierz "Pojemność" a następnie zobaczysz listę swoich cech i po prostu kliknij na nie i przytrzymaj przycisk myszy i je posortuj jak Ci pasuje.

 

Jeśli natomiast nie chcesz cofać swoich ustawień, to w Twoim przypadku oczywiście po wykonaniu zmian wartości presta dobrze sortowała, ponieważ 1,92 TB jest mniejsze dla algorytmu alfabetycznego mniejsze niż 16 GB, jeśli chciałabyś by automatycznie to sortowało musiałabyś korzystać z wartości tylko w GB i zamiast 1.92 wpisać 1920 GB i wtedy by Ci się samo sortowało.

Link to comment
Share on other sites

  • 0

Mhm.. Z tego co wiem (i sprawdziłam jeszcze przed chwilą) to mogę posortować wyłącznie Cechy produktu a więc, np. pojemność, materiał, waga. A to co znajduje się "w środku", a więc np. w pojemności: 16 GB, 1.92 TB już nie jest już aktywne do sortowania.

Tak, wiem, że mogę to przekształcić w 1920 GB ale szczerze powiedziawszy takiej wartości raczej nikt nie używa :)

No ale bardzo dziękuję za chęć pomocy ;)

Link to comment
Share on other sites

  • 0

Faktycznie, da się tylko przesunąć te z  Atrybuty i wartości a nie Cechy. Mea culpa.

Dziwi mnie tylko, że chcesz to robić cechami, zamiast np kombinacjami (czyli atrybuty i wartości) - osobiście wolę tę opcję, ale to jest wszystko zależne od typu sklepu. Oczywiście kombinacjami też da się filtrować nawigacją boczną.

Link to comment
Share on other sites

  • 0

Akurat w naszym sklepie atrybuty zostały wyłączone - są nam raczej zbędne no i zmniejszają wydajność :)

No zobaczymy, może coś jeszcze wymyślę. Nie jest to z resztą tak duże utrudnienie by za wszelką cenę znaleźć na to sposób :rolleyes:

 

Dzięki raz jeszcze za zaangażowanie ^_^

Link to comment
Share on other sites

  • 0

Programista robiący moduł BL postanowił na siłę uszczęśliwić użytkowników i dodał alfabetyczne sortowanie cech w kontrolerze modułu.

Należy wywalić:

                        //Natural sort
                        foreach ($feature_array as $key => $value)
                        {
                            $temp = array();
                            foreach ($feature_array[$key]['values'] as $keyint => $valueint)
                                $temp[$keyint] = $valueint['name'];

                            natcasesort($temp);
                            $temp2 = array();

                            foreach ($temp as $keytemp => $valuetemp)
                                $temp2[$keytemp] = $feature_array[$key]['values'][$keytemp];

                            $feature_array[$key]['values'] = $temp2;
                        }

I w case 'id_feature': zmienić:

$sql_query['group'] = 'GROUP BY fv.id_feature_value';

na:

$sql_query['group'] = 'GROUP BY fv.id_feature_value ORDER BY fv.`position` ASC';
  • Like 1
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...