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
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
];
}