無制限のサブカテゴリPHPおよびMySQL LIリストオープンカートカテゴリ
質問
次の表があります category
と category_description
php mysqlで。私の質問は、以下の情報をどのようにして、無制限の量のサブカテゴリを作成しますか 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
解決
OpenCartには
$this->model_catalog_category->getCategory()
メソッド、およびカテゴリIDをパラメーターとして渡します。
$category = this->model_catalog_category->getCategory(5);
また、適切な説明を処理するため、直接アクセスする必要はありません。 @till Helge Helwigがすでに指摘しているように、すべてのサブカテゴリでこれらのツリーを構築する場合は、再帰関数を使用する必要があります。この例を見るのに適した場所は、実際のカテゴリモジュールコードにあります。ファイルの下部までスクロールします catalog/controller/module/category.php
そして、あなたはそれのためにHTMLを構築する再帰機能を見るでしょう
他のヒント
あなたはすでに列を持っています parent_id
. 。それを使用して、カテゴリ間の関係を表します。カテゴリがルートレベルにある場合、その列をに設定します NULL
.
別のアプローチは、サブカテゴリにカテゴリをマップする3番目のテーブルです。これにより、上から下から下から歩くことができます。使用するアプローチのアプリケーションに依存します。
この階層を処理するには、いくつかの再帰関数を記述し、カテゴリの階層を適切に処理できるPHPで適切な表現を見つける必要があります。
何らかのパン粉を印刷するための単純な再帰機能は、このように見えるでしょう(この例では、何らかのORMがあると思います):
function findWayToTop($category, $breadcrumbs = array()) {
$breadcrumbs[] = $this;
$parent = $category->getParent();
if ($parent != null) {
return findWayToTop($parent, $breadcrumbs);
} else {
return $breadcrumbs;
}
}
ORMを使用しない場合、最も簡単な方法は、データベースからすべてのカテゴリを取得し、IDがキーである配列にそれらを保存することです。次に、上記のコードの配列コールを交換でき、同様に機能します。