Hoi,
Ik ben bezig met het maken van een recursive tree menu, nou krijg ik dit wel voor elkaar zonder xtemplate, maar met gebruik van xtemplate is het iets moeilijker.
En ik moet persee met xtemplate werkend hebben.
Kan iemand mij hier mee helpen ?
Dit is wat ik tot nu toe heb:
PHP:
HTML:
Ik ben bezig met het maken van een recursive tree menu, nou krijg ik dit wel voor elkaar zonder xtemplate, maar met gebruik van xtemplate is het iets moeilijker.
En ik moet persee met xtemplate werkend hebben.
Kan iemand mij hier mee helpen ?
Dit is wat ik tot nu toe heb:
PHP:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| public function parse_menu()
{
$menu = $this->get_menu();
$this->__xtpl = new XTemplate(PATH_TEMPLATES.'/global/frontend.menu.html');
foreach ($menu as $item)
{
$this->parse_menu_item($item);
}
$this->__xtpl->parse('main');
$this->xtpl->assign('menu', $this->__xtpl->text());
}
private function parse_menu_item($item)
{
if (empty($item['childs']))
{
$this->__xtpl->assign('item', $item);
$this->__xtpl->parse('main.item.without_child');
}
else
{
$this->__xtpl->assign('item', $item);
foreach($item['childs'] as $child)
{
// hier zou ik normaal gesproken de functie parse_menu_item moeten aanroepen, maar ik raak de weg kwijt bij de levels.
$this->__xtpl->parsign('child', $child, 'main.item.with_child.child_item');
}
$this->__xtpl->parse('main.item.with_child');
}
$this->__xtpl->parse('main.item');
}
private function get_menu($parent_id=false, $level=false)
{
$level = $level ? $level++ : 1;
$rebuild = array();
$menu = $this->db->getAll(tbl('menu'), array('parent_id' => $parent_id ? $parent_id : '0'));
foreach ( (array) $menu as $item ) {
$item['level'] = $level;
## make link
if ( is_numeric($item['menu_link']) ) {
$arrPage = $this->db->getRow(tbl(session_read('menu.table')), array('page_id' => $item['menu_link']));
$item['menu_link'] = getUrl(array(0 => 'page', 1 => $arrPage['page_label']));
}
$item['childs'] = $this->get_menu($item['menu_id'], $level+1);
$rebuild[] = $item;
}
return $rebuild;
} |
HTML:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <!-- BEGIN: main -->
<ul>
<!-- BEGIN: item -->
<!-- BEGIN: without_child -->
<li><a href="{item.menu_link}">{item.menu_label}</a></li>
<!-- END: without_child -->
<!-- BEGIN: with_child -->
<li>
<a href="{item.menu_link}">{item.menu_label}</a>
<ul>
<!-- BEGIN: child_item -->
<li><a href="{child.menu_link}">{child.menu_label}</a></li>
<!-- END: child_item -->
</ul>
</li>
<!-- END: with_child -->
<!-- END: item -->
</ul>
<!-- END: main --> |