W MobyDick w wersji 3.2 dodaliśmy nowy, prosty w użyciu system, który pozwoli na dowolne nadpisanie drzewa kategorii.

Integracje są uniwersalne, to znaczy, że musimy trzymać się w miarę standardowej kategoryzacji. Na ogół jest to kategoryzacja przekazywana przez hurtownię.

Są jednak sytuacje, gdzie klient mógłby chcieć stworzyć swój własny automat do kategoryzowania produktów z hurtowni.

Wraz z opcją automatycznego importu drzewa kategorii, daje to możliwość pełnego zautomatyzowania tworzenia całego drzewa kategorii w sklepie.

Przykład uproszczony

Przykład uproszczony. Produkty przypisywane są zawsze do kategorii najniższej

Należy użyć tylko jednej z podanych dwóch metod. Mieszanie metod nie jest możliwe i doprowadzi do nieoczekiwanych wyników.
Samo zdefiniowanie tej funkcji oznacza rezygnację i wyłączenie z używania kategorii generowanych przez moduł. Od tej chwili to użytkownik jest w pełni odpowiedzialny nadawanie produktom kategorii.

Aby aktywować własne kategoryzacje, należy zedefiniować funkcję o nazwie function mobyDickParseProductCategory{{Nazwahurtowni}}.

Parametr jest jedynym parametrem przekazywanym do funkcji $product zawiera informacje o produkcie, jaką przekazuje hurtownia.

Funkcję najlepiej zdefiniować w pliku modules/seigimobydick/module_init.php, Ale można to też zrobić w konfiguracji sklepu w pliku z katalogu /config/defines_custom.inc.php

function mobyDickParseProductCategory7heaven($product){
  
  // Metoda uproszczona. Jako separatora ściezki używamy dwoch slaszy //
  return [
      'C1//C2//C3',
      'CA//CB//CC',
      // np.
      'Buty//zimowe//kozaki',
  ];
}

Przykład zaawansowany

Metoda dająca więcej kontroli, pozwalająca na bardziej dowolne grupowanie produktów

function mobyDickParseProductCategory7heaven($product){
  
  
  $std1 = new stdClass();
  $std1->id_parent = 0; // Id rodzica
  
  // Czy produkty mają być przypisywane do tej kategorii czy nie.
  // Domyślna wartość to true
  $std1->product = false;
  
  $std1->name = 'C1'; // Nazwa kategorii
  $std1->id = md5($std1->name); // ID kategorii
  
  $std2 = new stdClass();
  $std2->id_parent = $std1->id;
  $std2->name = 'C2';
  // Proszę zwrocić uwagę, aby ID podkategorii było unikalne. Nie mogą istnieć 2 kategorie podrzędne z tym samym ID
  // Naprościej do ID kategorii dokleić ID parent
  $std2->id = md5($std1->id . '|'. $std2->name);
  
  $std3 = new stdClass();
  $std3->id_parent = $std2->id;
  $std3->product = true;
  $std3->name = 'C3';
  $std3->id = md5($std2->id . '|'. $std3->name);
  
  
  $stda = new stdClass();
  $stda->id_parent = 0;
  //    $stda->product = false;
  $stda->name = 'CA';
  $stda->id = md5($stda->name);
  
  $stdb = new stdClass();
  $stdb->id_parent = $stda->id;
  $stdb->name = 'CB';
  $stdb->id = md5($stda->id . '|'. $stdb->name);
  
  $stdc = new stdClass();
  $stdc->id_parent = $stdb->id;
  $stdc->product = true;
  $stdc->name = 'CC';
  $stdc->id = md5($stdb->id . '|'. $stdc->name);
  
  return [
      $std1, $std2, $std3, // pierwsza ścieżka ktegorii
      $stda, $stdb, $stdc, // druga ścieżka kategorii
  ];

}