无限子类别php和mysql li列出开放购物车类别
我在php mysql中有以下表格无限子类别php和mysql li列出开放购物车类别,php,mysql,opencart,Php,Mysql,Opencart,我在php mysql中有以下表格category和category\u description。我的问题是如何利用下面的信息在ulli结构中创建无限数量的子类别。我已经看了这里的各种例子,但是没有用,非常感谢你花时间阅读这个问题。我期待你的答复 Column Type Null Default category_id int(11) No image varchar(255) Yes NULL
category
和category\u description
。我的问题是如何利用下面的信息在ul
li
结构中创建无限数量的子类别。我已经看了这里的各种例子,但是没有用,非常感谢你花时间阅读这个问题。我期待你的答复
Column Type Null Default
category_id int(11) No
image varchar(255) Yes NULL
parent_id int(11) No 0
top tinyint(1) No
column int(3) No
sort_order int(3) No 0
status tinyint(1) No
date_added datetime No 0000-00-00 00:00:00
date_modified datetime No 0000-00-00 00:00:00
并且描述存储在此表中
Column Type Null
category_id int(11) No
language_id int(11) No
name varchar(255) No
description text No
meta_description varchar(255) No
meta_keyword varchar(255) No
您已经有了一个列
parent\u id
。使用它来表示类别之间的关系。如果类别位于根级别,则将该列设置为NULL
另一种方法是第三个表,将类别映射到子类别。这将允许您自上而下和自下而上行走。取决于应用程序使用的方法
为了处理这个层次结构,您需要编写一些递归函数,并在PHP中找到能够正确处理类别层次结构的适当表示
打印某种面包屑的简单递归函数如下所示(在本例中,我假设您有某种ORM):
如果不使用ORM,最简单的方法是从数据库中获取所有类别,并将它们存储在以ID为键的数组中。然后,您可以替换上面代码中的数组调用,它也可以工作。opencart具有
$this->model\u catalog\u category->getCategory()
方法,并将类别id作为参数传递,例如
$category=this->model\u catalog\u category->getCategory(5)代码>
这也会处理适当的描述联接,因此您不需要直接访问它们。正如@Till-Helge-Helwig已经指出的,如果您想用所有子类别构建一棵树,那么需要使用递归函数。在实际的类别模块代码中可以看到一个很好的例子。滚动到文件catalog/controller/module/category.php
的底部,您将看到一个为其构建html的递归函数您是否有一个递归函数的示例请多多感谢我在我的答案中添加了一个粗略的示例。当然,这一切都取决于你的数据模型是什么样子的。它只是opencart。它使用一个数据模型,但我不确定它是否在itI上。我不知道opencart,但它肯定有一个访问类别的方法,或者一个允许你获取类别的适当数据模型。也许这有帮助:如何将其放入header.tpl中?将递归函数添加到目录/controller/common/header.php
文件中,然后以与模块相同的方式使用它
function findWayToTop($category, $breadcrumbs = array()) {
$breadcrumbs[] = $this;
$parent = $category->getParent();
if ($parent != null) {
return findWayToTop($parent, $breadcrumbs);
} else {
return $breadcrumbs;
}
}