<menu id="h_flow" class="lcol">
<li><a href="#"><span>Главная</span></a></li>
<li class="h_this"><a href="#"><span>Выпадающее меню</span></a>
<ul>
<li><a href="#">Подкатегория меню</a></li>
<li><a href="#">Подкатегория меню</a></li>
<li><a href="#">Подкатегория меню</a></li>
<li><a href="#">Подкатегория меню</a></li>
<li><a href="#">Подкатегория меню</a></li>
</ul>
</li>
<li><a href="#"><span>Контакты</span></a></li>
<li><a href="#"><span>Блог</span></a></li>
<li><a href="#"><span>Кодинг</span></a></li>
<li><a href="#"><span>Верстка</span></a></li>
<li><a href="#"><span>Фотошоп</span></a></li>
</menu>
вот это же меню, но в стандартном виде
<nav>
<ul class="topmenu">
<li><a href="#">Личный кабинет</a></li>
<li><a href="#">Новости</a></li>
<li><a href="#" rel="search">Поиск</a></li>
<li><a href="#">Карта сайта</a></li>
<li><a href="#">Информация</a></li>
<li><a href="#" rel="contact">Обратная связь</a></li>
<li><a href="http://eleanor-cms.ru">Eleanor CMS</a>
<ul>
<li><a href="#">Официальный сайт Eleanor CMS</a></li>
<li><a href="#">Форум поддержки</a></li>
</ul>
</li>
</ul>
</nav>
вот сам api файл, который выводит обычное меню
<?php
/*
Copyright © Eleanor CMS
URL: http://eleanor-cms.ru, http://eleanor-cms.com
E-mail: support@eleanor-cms.ru
Developing: Alexander Sunvas*
Interface: Rumin Sergey
=====
*Pseudonym
*/
if(!defined('CMS'))die;
class ApiMenu extends BaseClass
{
private
$config=array();
public function __construct($config=array())
{
$this->config=$config;
}
public function GetOrderedList($lang=false,$status=1)
{
if(!$lang)
$lang=Language::$main;
if($db=Eleanor::$Cache->Get($this->config['n'].'_dump'.$status.'_'.$lang))
return $db;
$maxlen=0;
$res=$to1sort=$to2sort=$db=array();
$R=Eleanor::$Db->Query('SELECT `id`,`url`,`eval_url`,`title`,`pos`,`parents`,`status` FROM `'.$this->config['t'].'` LEFT JOIN `'.$this->config['tl'].'` USING(`id`) WHERE `language` IN (\'\',\''.$lang.'\')'.($status===false ? '' : ' AND `status`=1'));
while($a=$R->fetch_assoc())
{
if($a['parents'])
{
$cnt=substr_count($a['parents'],',');
$to1sort[$a['id']]=$cnt;
$maxlen=max($cnt,$maxlen);
}
$db[$a['id']]=array_slice($a,1);
$to2sort[$a['id']]=$a['pos'];
}
asort($to1sort,SORT_NUMERIC);
foreach($to1sort as $k=>&$v)
if($db[$k]['parents'] and preg_match('#(\d+),$#',$db[$k]['parents'],$p)>0)
if(isset($to2sort[$p[1]]))
$to2sort[$k]=$to2sort[$p[1]].','.$to2sort[$k];
else
unset($to1sort[$k],$db[$k],$to2sort[$k]);
foreach($to2sort as $k=>&$v)
$v.=str_repeat(',0',$maxlen-substr_count($db[$k]['parents'],','));
natsort($to2sort);
foreach($to2sort as $k=>&$v)
$res[$k]=$db[$k];
Eleanor::$Cache->Put($this->config['n'].'_dump'.$status.'_'.$lang,$res,86400);
return $res;
}
public static function BuildMultilineMenu($a,$first='<ul>')
{
$parents=reset($a);
$l=strlen($parents['parents']);
$c=$first;
$n=-1;
$onp=false;
foreach($a as &$v)
{
++$n;
$nl=strlen($v['parents']);
if($nl!=$l)
{
if($l>$nl)
break;
elseif(!$onp)
{
$c.=self::BuildMultilineMenu(array_slice($a,$n));
$onp=true;
}
continue;
}
if($n>0)
$c.='</li>';
$c.='<li><a href="'.$v['url'].'"'.$v['params'].'>'.$v['title'].'</a>';
$onp=false;
}
return$c.'</li></ul>';
}
}