2013-03-01 7 views
6

Użyłem usługi online do przesłania danych z mojej innej witryny e-commerce do OpenCart i wszystko wydaje się być poprawnie przesłane.OpenCart: Jak poprawnie wypełnić ścieżkę oc_category_

Istnieje jednak jeden problem z kategoriami produktów. Kategorie zostały przeniesione do tabeli oc_category; Wygląda jednak na to, że istnieje inna tabela o nazwie oc_category_path, która również musi zostać wypełniona, jeśli chcę móc edytować moje kategorie w administratorze.

Czy wiesz, co to jest ta tabela i jak mogę poprawnie wypełnić go (ręcznie w moim przypadku Przypuszczam). Co to jest dokładność i co decyduje o poziomie kategorii?

Powiązane Stoły:

CREATE TABLE `oc_category` (
    `category_id` int(11) NOT NULL AUTO_INCREMENT, 
    `image` varchar(255) DEFAULT NULL, 
    `parent_id` int(11) NOT NULL DEFAULT '0', 
    `top` tinyint(1) NOT NULL, 
    `column` int(3) NOT NULL, 
    `sort_order` int(3) NOT NULL DEFAULT '0', 
    `status` tinyint(1) NOT NULL, 
    `date_added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `date_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (`category_id`) 
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 

CREATE TABLE `oc_category_description` (
    `category_id` int(11) NOT NULL, 
    `language_id` int(11) NOT NULL, 
    `name` varchar(255) NOT NULL, 
    `description` text NOT NULL, 
    `meta_description` varchar(255) NOT NULL, 
    `meta_keyword` varchar(255) NOT NULL, 
    `u_title` varchar(255) NOT NULL, 
    `u_h1` varchar(255) NOT NULL, 
    `u_h2` varchar(255) NOT NULL, 
    PRIMARY KEY (`category_id`,`language_id`), 
    KEY `name` (`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

CREATE TABLE `oc_category_path` (
    `category_id` int(11) NOT NULL, 
    `path_id` int(11) NOT NULL, 
    `level` int(11) NOT NULL, 
    PRIMARY KEY (`category_id`,`path_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

Odpowiedz

10

Jeżeli kategoria w sklepie oc jest kategorią korzeń, robi wpis w tabeli ścieżkę jako takiej „category_id, category_id, 0”. jeśli ta kategoria ma dziecko, otrzyma dwa wpisy w tabeli, a mianowicie: - "id_categorii, identyfikator_kategorii, 1", a także "identyfikator_kategorii, identyfikator_połączenia, 0".

Jeśli dziecko ma swoje własne dziecko, że nowe dziecko będzie miało trzy wpisy jako takie: -
"category_id, category_id, 2"
"category_id, parent_id, 1"
„category_id, rodzice rodzic category_id , 0 "

Aby to zilustrować, załóżmy, że kategoria ma identyfikator_kategorii równy" 14 ". Jest to pierwsze dziecko kategorii o identyfikatorze kategorii "11". Ta kategoria, której identyfikator kategorii to "11", jest dzieckiem w kategorii o identyfikatorze kategorii "1". (1> 11> 14 tak jak to pokazano na tym panelu, z wyjątkiem sytuacji nazwy zamiast CATEGORY_ID)

Powyższy będzie miał 3 wpisy w następujący sposób:
"14", "14", "2"
"14", "11", "1"
"14", "1", "0"

Więc kategoria korzeń do niego dostanie 0, następny dostaje 1, a następne 2, i tak dalej, wszystko zależy od tego, ile poziomów kategorii jest w dół.

Mam nadzieję, że wyjaśnię wystarczająco dobrze.

Jeśli chodzi o wypełnianie go, najprostszą metodą, ale nie kompletną metodą, jest utworzenie tabeli z "id_categorii, id_kategorii, 0". Spowoduje to wyświetlenie ich w panelu administracyjnym. Jeśli klikniesz "napraw", wygenerujesz poprawnie tabelę.

Alternatywnie musiałbyś przejść przez twoją tabelę kategorii, tworząc tablicę z jej parent_id, szukając tego id_porzędnego dla jego parent_id i dodając go do tablicy i tak dalej. Gdy tablica jest kompletna, tzn. Nie ma już rodziców, będzie to proste zadanie polegające na dodaniu ich do tabeli z poprawnym "poziomem".

FYI, istnieje jeszcze jedna tabela, która również musi się wypełnić, category_to_store, która jest po prostu "category_id, store_id". Bez tej tabeli nie zobaczysz swoich kategorii w swoim sklepie.

+0

Dzięki za odpowiedź, pomogło mi to. Ale wierzę, że jest literówka. W twoim przykładzie myślę, że "14", "10", "0" powinno brzmieć "14", "1", "0". – maidbloke

+0

Masz rację, dziękuję.Zmieniłem odpowiedź, aby odzwierciedlić jako taką. –