wdrożenia PrestaShop

Cechy - sortowanie

  • 6 Odpowiedzi
  • 3330 Wyświetleń

0 użytkowników i 2 Gości przegląda ten wątek.

*

Offline kuras

  • Tubylec
  • ****
  • 257
  • 1
Cechy - sortowanie
« dnia: Wrzesień 06, 2011, 03:41:15 pm »
Witajcie

Chyba jest problem w PS z sortowaniem cech, prawda?
Nie można nad tym panować tak jak np. kiedyś nad kolejnością kategorii w stylu 01., 02., 03....

Oto rozwiązanie.
Robimy nazwy cech z liczbami które porządkują nam kolejność, np.
020.Waga
010.Rozmiar
030.Wykończenie

Wgrywamy plugin do katalogu smarty pod nazwą modifier.sortby.php
<?php 
#
# sorts an array of named arrays by the supplied fields
#   code by dholmes at jccc d0t net
#   taken from http://au.php.net/function.uasort
# modified by cablehead, messju and pscs at http://www.phpinsider.com/smarty-forum

function array_sort_by_fields(&$data$sortby){
      static 
$sort_funcs = array();
     
    if (empty(
$sort_funcs[$sortby]))
    {
        
$code "\$c=0;";
        foreach (
split(','$sortby) as $key)
        {
           
$d '1';
              if (
substr($key01) == '-')
              {
                 
$d '-1';
                 
$key substr($key1);
              }
              if (
substr($key01) == '#')
              {
                 
$key substr($key1);
            
 //  $code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
            
 $code .= "if ( \$a['$key'] > \$b['$key']) return $d * 1;\n";
 $code .= "if ( \$a['$key'] < \$b['$key']) return $d * -1;\n"
              }
              else
              {
               
$code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
            }
        }
        
$code .= 'return $c;';
        
$sort_func $sort_funcs[$sortby] = create_function('$a, $b'$code);
    }
    else
    {
        
$sort_func $sort_funcs[$sortby];
    }   
    
uasort($data$sort_func);   
}

#
# Modifier: sortby - allows arrays of named arrays to be sorted by a given field
#
function smarty_modifier_sortby($arrData,$sortfields) {
   
array_sort_by_fields($arrData,$sortfields);
   return 
$arrData;
}
?>


Teraz wchodzimy do pliku odpowiadającego za wygląd strony z produktem (product.tpl) i zmieniamy linijkę taką:
{foreach from=$features item=feature}na taką:
{foreach from=$features|@sortby:"name" item=feature}
I mamy sortowanie po nazwach z przykładu:
010.Rozmiar
020.Waga
030.Wykończenie

Pozostaje nam wycięcie początku...

Znajdujemy kod odpowiedzialny za wyświetlenie nazwy:
{$feature.name|escape:'htmlall':'UTF-8'}zmieniamy go na kod wycinający:
{$feature.name|escape:'htmlall':'UTF-8'|regex_replace:'/[0-9]+./':''}
Gotowe :-)

Proszę sprawdzić czy działa.

ps. dłubiemy tylko w plikach tpl  oraz dodajemy plugin do katalogu smarty... więc po aktualizacji nic nie powinno zginąć :-)

*

Offline dziubek

  • Nowy
  • *
  • 3
  • 0
Odp: Cechy - sortowanie
« Odpowiedź #1 dnia: Listopad 16, 2011, 08:36:50 am »
Mi nie działa.... Zrobiłem wszystko wg opisu i nic...   :(
Nie wycina 010. 020. sprzed nazw cech, pokazują mi się te liczby w sklepie a kolejność nadal przypadkowa  >:(

PrestaShop™ 1.4.4.1 | PrestaShopPL v. 1.4.4.1

*

Offline dziubek

  • Nowy
  • *
  • 3
  • 0
Odp: Cechy - sortowanie
« Odpowiedź #2 dnia: Listopad 16, 2011, 09:24:51 am »
Już jest ok - działa :D Trzeba włączyć re-kompilację plików szablonów w Panel administracyjny --> Ustawienia -->Optymalizacja - Wymuszaj kompilację na tak... 

*

Offline dziubek

  • Nowy
  • *
  • 3
  • 0
Odp: Cechy - sortowanie
« Odpowiedź #3 dnia: Lipiec 03, 2012, 01:40:59 pm »
a teraz po zmianie dostawcy:
Deprecated: Function split() is deprecated in /homez.441/hydrokra/www/tools/smarty/plugins/modifier.sortby.php on line 14 co zrobić z tym?? :(

*

Offline mario

  • Mieszkaniec
  • *****
  • 640
  • 0
  • Płeć: Mężczyzna
Odp: Cechy - sortowanie
« Odpowiedź #4 dnia: Lipiec 03, 2012, 01:54:38 pm »
define('_PS_DISPLAY_COMPATIBILITY_WARNING_', false);
w /config/config.inc.php
Integracja wf-mag presta
freelancer

*

Offline sebastianp88

  • Użytkownik
  • **
  • 48
  • 0
Odp: Cechy - sortowanie
« Odpowiedź #5 dnia: Listopad 07, 2012, 08:33:41 pm »
czy ten skrypt działa z presta 1.4.8.2?

*

Offline yabko

  • Nowy
  • *
  • 3
  • 0
Odp: Cechy - sortowanie
« Odpowiedź #6 dnia: Lipiec 26, 2013, 12:20:34 am »
Również nie działa sprawdzane na 1.4.4.1 Ma ktoś jakieś rozwiązanie?