У меня есть меню, генерируемое динамически путем взятия заголовка из базы данных. Я установил ту же таблицу для подстраниц, добавив столбец p_id. и мой код выглядит следующим образом.
private $Section = array();
function _menu($root){
$this->db->select('id,title,p_id');
$this->db->Where('p_id',$root);
$this->db->Where('status','active');
$this->db->Where('type','page');
$this->db->order_by('sort');
$query = $this->db->get('pages');
foreach ($query->result() as $row)
{
$this->Section[] = '<ul>';
$this->Section[] = '<li>';
$this->Section[] = anchor('site/page/'.$row->id.'#cont_main',$row->title);
$this->_menu($row->id);
$this->Section[] = '</li>';
$this->Section[] = '</ul>';
}
$query->free_result();
return $this->Section;
}
//get menu tree
function MenuTree(){
return $this->_menu(0);
}
в вышеупомянутом _menu (), если у nav есть два или более дочерних элемента, он не отображается, потому что заполненный им источник дает дополнительные </ul> and <ul>
. источник выглядит так
<ul>
<li><a href="#">menu 1</a>
<ul>
<li><a>menu 1 sub1</a></li>
</ul>
<ul>
<li><a>menu 1 sub2</a></li>
</ul>
</li>
пока я предполагаю получить:
<ul>
<li><a href="#">menu 1</a>
<ul>
<li><a>menu 1 sub1</a></li>
<li><a>menu 1 sub2</a></li>
</ul>
</li>
изм
Я должен добавить меню в соответствии с дочерним элементом. изображение появляется во всех меню, у которых тоже нет потомка из-за дополнительных <ul></ul>
, если я использую ul перед циклом. источник выглядит так.
<ul>
<li><a href="#">menu 1</a>
<ul>
<li><a>menu 1 sub1</a>
<ul></ul>
</li>
<li><a>menu 1 sub2</a></li>
</ul>
</li>
любая идея была бы заметна.