php マルチレベルナビゲーション表示
一度書いて、一度考えて...もう一回やってみます...? 今回はここに残しておきます...後で必要になったら直接コピーします。
最初のコード
表示するカテゴリを取得します。
第 1 レベルのディレクトリは、カテゴリ[0]、
に配置されます。
セカンダリ ディレクトリはカテゴリ[1]、
に配置されます。
第 3 レベルのディレクトリは、カテゴリ[2]、
に配置されます。
....など
ただし、通常はレベル 3 に達するとそれ以上分割されません。
$cpath = array(); if(!empty($_REQUEST["parentId"])){ //category path //get the category path //put current category id in $cpath $current_category["parentId"] = $_REQUEST["parentId"]; // put parent category id in $cpath do{ array_unshift($cpath,$current_category["parentId"]); $data_category = array( "id" => $current_category["parentId"] ); $current_category = array(); $current_category = pos($db_conn->search($db_category,$data_category)); }while(!empty($current_category["parentId"])); } //add the first level category parentId array_unshift($cpath,"null"); // get all categories $categories_level_count = sizeof($cpath); for($i=0;$i $cpath[$i] ); //get first level categories $categories[$i] = $db_conn->search($db_category,$data_category); // echo $db_category->search($data_category).""; }
2 番目のコードは、
<ul> ?<li> <ul> ... </ul> ?</li> </ul>
function show_left_navigation($i){ global $categories,$cpath; if(empty($categories[$i])) return; echo '<ul>'; foreach($categories[$i] as $id=>$category){ echo ''; if($id==end($cpath)) echo '<a href="advancedSearch.php?parentId='.$id.'">'.$category["name"].'</a>'; else echo '<a href="advancedSearch.php?parentId='.$id.'">'.$category["name"].'</a>'; if(in_array($id,$cpath)) show_left_navigation($i+1); echo ''; } echo '</ul>'; } show_left_navigation(0);
?
?