簡體   English   中英

無限子類別php和mysql li列表打開購物車類別

[英]Unlimited Sub Categories php and mysql li list open cart categories

我在php mysql中有以下表categorycategory_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM