fantazista
Новичок
Здравствуйте
У меня такой массив
Часть массива
Нужно универсальным образом выводить навигацию в зависимости от родителя.
Со вторым уровнем вложенности проблем не возникает.
Делаю вот так.
Там внутри по третьему уровню тоже прохожусь (провверял)
Проблема в том когдая нахожусь во втором уровне не срабатывает проверка на url
$is_current_page = (($item['link']==(cmsApi::$url.'/'.$query_url))? true: false);
cmsApi::$url.'/'.$query_url - текущий url.
так как он проверяет линк родителя, а текущий линк отличается.
Как можно "универсальным" методом узнавать где на данный момент я нахожусь и кого скрипт должен выводить.
Допустим на примере того что я перехожу на news4. Как при этом вывести выше него, его самого вместе (news1 news2 news3) и того кто ему принадлежит (news4_1).
У меня такой массив
Часть массива
PHP:
Array
(
[197] => Array
(
[name] => service
[cid] => 77
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/services/lang,az/
[target] => _blank
)
[185] => Array
(
[name] => news
[cid] => 67
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/news/lang,az/
[target] => _blank
[child] => Array
(
[] => Array
(
[193] => Array
(
[name] => news4
[cid] => 75
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/news4/lang,az/
[target] => _blank
[child] => Array
(
[] => Array
(
[194] => Array
(
[name] => news4_1
[cid] => 76
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/news4_1/lang,az/
[target] => _blank
)
)
)
)
[192] => Array
(
[name] => news3
[cid] => 74
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/news3/lang,az/
[target] => _blank
)
[191] => Array
(
[name] => news2
[cid] => 73
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/news2/lang,az/
[target] => _blank
)
[190] => Array
(
[name] => news1
[cid] => 72
[accesskey] =>
[sid] => 0
[org_url] => 0
[st_map] => 0
[link] => http://md/xalq/news1/lang,az/
[target] => _blank
)
)
)
)
Нужно универсальным образом выводить навигацию в зависимости от родителя.
Со вторым уровнем вложенности проблем не возникает.
Делаю вот так.
PHP:
public function printSupMenu($structure, $query_url) {
// print " \n SUB MENU STRUCTURE \n"; print_r($structure); print " \n ";
$i=0;
// print $this->active_nav;
// print cmsApi::$url.'/'.$query_url;
foreach ($structure as $item) {
$is_current_page = (($item['link']==(cmsApi::$url.'/'.$query_url))? true: false);
$is_parent_page = $is_current_page;
if ($is_current_page) {
if ($item['child']) {
foreach ($item['child'] as $subitem_container) {
foreach ($subitem_container as $subitem) {
$submenu = '<a href="'.$subitem['link'].'" title="" class="link visit"><span>'.$subitem['name'].'</span></a>';
$category_list.='
<li id="l'.($i+1).'">
'.$submenu.'
</li>';
$i++;
if ($subitem['child']) {
foreach ($subitem['child'] as $subitem_two_conteiner) {
foreach ($subitem_two_conteiner as $subitem_two) {
$submenu_two = '<a href="'.$subitem_two['link'].'" title="" class="link visit"><span>'.$subitem_two['name'].'</span></a>';
$category_list_two.='
<li id="l'.($i+1).'">
'.$submenu_two.'
</li>';
$i++;
}
}
}
}
}
$html = '<ul id="sub-nav">';
$html.= $category_list;
$html.='</ul>';
$html.='<ul id="sub-nav-two">';
$html.= $category_list_two;
$html.='</ul>';
} else {
$html.='';
}
} else {
}
}
return $html;
}
Там внутри по третьему уровню тоже прохожусь (провверял)
Проблема в том когдая нахожусь во втором уровне не срабатывает проверка на url
$is_current_page = (($item['link']==(cmsApi::$url.'/'.$query_url))? true: false);
cmsApi::$url.'/'.$query_url - текущий url.
так как он проверяет линк родителя, а текущий линк отличается.
Как можно "универсальным" методом узнавать где на данный момент я нахожусь и кого скрипт должен выводить.
Допустим на примере того что я перехожу на news4. Как при этом вывести выше него, его самого вместе (news1 news2 news3) и того кто ему принадлежит (news4_1).