私はデータベースを介してカテゴリマネージャーを構築しています。次のPHPは、その下に貼り付けるコードを生成します。
function generate_menu($parent, $menu_array, $result = NULL)
{
$has_childs = FALSE;
foreach($menu_array as $key => $value):
if ($value['parent'] == $parent):
$result .= '<li id="list_'.$value['id'].'" class="item">';
$result .= '<div class="item">' . $value['name'] . '</div>';
if ($has_childs):
$has_childs = FALSE;
$result .= '<ol>';
else:
$has_childs = TRUE;
$result .= '</li>';
endif;
$result .= $this->generate_menu($key, $menu_array);
endif;
endforeach;
return $result;
}
そして、これが生成するHTMLです。
<li id="list_11" class="item">
<div class="item">Real Estate</div>
</li>
<li id="list_12" class="item">
<div class="item">Home Improvements</div>
<ol>
<li id="list_13" class="item">
<div class="item">Interior</div>
</li>
<li id="list_14" class="item">
<div class="item">Exterior</div>
<ol>
<li id="list_15" class="item">
<div class="item">Exterior Subcat</div>
</li>
そのため、親の場合はタグを閉じることができ<li>
ますが、親のあるアイテムの場合<ol>
は、方程式を入力します。その時、どうやって閉じるのかわからない。</li>
とをどこに置くかわかりません</ol>
。私が試したすべてがうまくいきません。
外観は次のとおりです。
<li id="list_11" class="item">
<div class="item">Real Estate</div>
</li>
<li id="list_12" class="item">
<div class="item">Home Improvements</div>
<ol>
<li id="list_13" class="item">
<div class="item">Interior</div>
</li>
<li id="list_14" class="item">
<div class="item">Exterior</div>
<ol>
<li id="list_15" class="item">
<div class="item">Exterior Subcat</div>
</li>
</ol>
</li>
</ol>
</li>
編集:
配列を渡してメニューを生成するためのコードは次のとおりです。
$query = $this->db->get('categories');
foreach($query->result_array() as $row):
$menu_array[$row['id']] = array('name' => $row['name'], 'parent' => $row['parent'], 'id' => $row['id']);
endforeach;
echo '<ol class="sortable">';
echo $this->tasks->generate_menu(0, $menu_array);
echo '</ol>';
そして、これが$menu_arrayのprint_rです。
Array
(
[11] => Array
(
[name] => Real Estate
[parent] =>
[id] => 11
)
[12] => Array
(
[name] => Home Improvements
[parent] =>
[id] => 12
)
[13] => Array
(
[name] => Interior
[parent] => 12
[id] => 13
)
[14] => Array
(
[name] => Exterior
[parent] => 12
[id] => 14
)
[15] => Array
(
[name] => Exterior Subcat
[parent] =>
[id] => 15
)
)