8

我已经使用在线服务将数据从我的其他电子商务网站传输到OpenCart,并且一切似乎都已正确传输。

然而,产品类别存在一个问题。类别已转移到oc_category表格中;oc_category_path但是,如果我希望能够在管理员中编辑我的类别,似乎还需要填充另一个名为的表。

你知道这张表是什么以及我如何正确填充它(我想手动填充)。确切地说和是什么,是什么决定了一个类别的path_id级别?level

相关表格:

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
4

1 回答 1

11

如果 oc 存储中的类别是根类别,它会在路径表中获得一个条目,例如“category_id,category_id,0”。如果该类别有一个孩子,它将在表中获得两个条目,即:-“category_id,category_id,1”以及“category_id,parent_id,0”。

如果那个孩子有一个它自己的孩子,那么这个新孩子将有三个这样的条目:-
“category_id,category_id,2”
“category_id,parent_id,1”
“category_id,parents parent category_id,0”

为了说明这一点,假设一个类别的 category_id 为“14”。它是 category_id 为“11”的类别的第一个子项。该类别的 category_id 为“11”是类别 ID 为“1”的类别中的子类别。(1>11>14 显示在管理面板中,除了使用名称而不是 category_id)

以上将有3个条目:
“14”,“14”,“2”
“14”,“11”,“1”
“14”,“1”,“0”

所以它的根类别将得到 0,下一个得到 1,然后是 2,依此类推,这一切都取决于它向下的类别级别。

我希望能很好地解释事情。

至于填充它,最简单的方法,但不是一个完整的方法,就是创建带有“category_id,category_id,0”的表。这将使他们出现在管理面板中。如果您然后单击“修复”,它将正确生成此表。

或者,您必须逐步浏览您的类别表,使用它的 parent_id 创建一个数组,查找该 parent_id 的 parent_id 并将其添加到数组中,等等。当数组完成时,即不再有父级,将它们添加到具有正确“级别”的表中将是一项简单的任务。

仅供参考,还有另一个表也需要填充,category_to_store,非常简单的“category_id,store_id”。如果没有此表,您将不会在商店中看到您的类别。

于 2013-04-02T20:19:32.323 回答