私のWebプロジェクトにはカテゴリとサブカテゴリがあります。私はスマートに新しいです。 通常、以下のコードを使用してカテゴリツリーを構築します。主なカテゴリが親のid = 0によって定義され、すべてのサブカテゴリが自分の親IDsmartyとphpでカテゴリツリーを作成
$sql = "SELECT * FROM categories ORDER BY category";
$res = $mysqli->query($sql);
while ($row = mysqli_fetch_assoc($res)) {
$parent = intval($row['parent_id']);
if (!isset($categories[$parent])) {
$categories[$parent] = array();
}
$categories[$parent][] = $row;
}
function build_categories($parent, $categories) {
if (isset($categories[$parent]) && count($categories[$parent])) {
foreach ($categories[$parent] as $category) {
$cat_name = $category['category'];
$cat_link = preg_replace("![^a-z0-9]+!i", "-", $cat_name);
$cat_link = urlencode($cat_link);
$cat_link = strtolower($cat_link);
if($category['parent_id']==0){
echo '<li><a href="category-'.$category['cat_id'].'-'.$cat_link.'">' .$category['category'].'</a>';
}else{
echo '<li><a href="subcategory-'.$category['cat_id'].'-'.$cat_link.'"><span class="fa fa-angle-double-right"></span> '.$category['category'].'</a>';
}
echo build_categories($category['cat_id'], $categories);
echo '</li>';
}
}
}
//output category tree
build_categories(0, $categories);
//テーブル構造
cat_id | category | parent_id
1 | cat 1 | 0
1 | cat 2 | 0
1 | cat 3 | 1
1 | cat 4 | 2
1 | cat 5 | 1
として、メインカテゴリIDを持っているときに私のコードの仕事の上だけで作業をいけないことに注意してくださいスマートな変数を割り当てます。
しかし、私はそれがSmartyで動作するように見えることはできません。あなたの助けを訴える。
なぜあなたは 'あなたの関数でecho'を使用していますか?いくつかの変数にHTMLコードを格納してから、$ smarty-> assign() '関数を使ってこの変数をsmartyに代入してください。 –
このスクリプトはどのような出力をしていますか? –
@MayankPandeyzよく 'build_categories(0、$ categories);'という値をsmartyに割り当てようとしました。 – Jordyn