[英]Unlimited Sub Categories php and mysql li list open cart categories
我在php mysql中有以下表category
和category_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_id
。 用它來表示類別之間的關系。 如果類別位於根級別,則將該列設置為NULL
。
另一種方法是將類別映射到子類別的第三個表。 這將允許您從上到下以及從下到上走。 取決於您的應用程序您使用哪種方法。
為了處理這種層次結構,你需要編寫一些遞歸函數,並在PHP中找到一個能夠正確處理類別層次結構的正確表示。
打印某種面包屑的簡單遞歸函數看起來像這樣(我假設在這個例子中你有一些ORM):
function findWayToTop($category, $breadcrumbs = array()) {
$breadcrumbs[] = $this;
$parent = $category->getParent();
if ($parent != null) {
return findWayToTop($parent, $breadcrumbs);
} else {
return $breadcrumbs;
}
}
如果不使用ORM,最簡單的方法是從數據庫中獲取所有類別,並將它們存儲在ID為關鍵字的數組中。 然后你可以在上面的代碼中替換數組調用,它也可以工作。
opencart有
$this->model_catalog_category->getCategory()
方法,並將類別ID作為參數傳遞,例如
$category = this->model_catalog_category->getCategory(5);
這也處理適當的描述連接,因此您不需要直接訪問它們。 正如@Till Helge Helwig已經指出的那樣,如果要構建包含所有子類別的樹,則需要使用遞歸函數。 查看示例的一個好地方是實際的類別模塊代碼。 滾動到文件catalog/controller/module/category.php
的底部,您將看到一個為其構建html的遞歸函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.