Перейти до змісту

Поиск решения. Редактирование функции.


ursa

Рекомендовані повідомлення

Опубліковано

Вопрос к тем, кто разбирается в PHP или просто имеет представление о построении функций.

Собственно есть вот такой код (см.ниже).

Функция toc выводит меню сайта (положение - сверху). Само меню сделано списком, т.е. каждый пункт меню выводится с новой строки. Это видно в функции li. Неудобная реализация.

Требуется сделать вывод меню в одну строчку (например, как на форуме: Каталог ссылок | Правила форума | Gallery | Blogs | Downloads | ibPhotohost | Flash Games | Calendar | Members | Search)

Как правильно заменить теги <ul></ul> и <li></li> и на что именно?  ? Или как-то табличную вёрстку сделать? Или на div-ах играться?

function toc($start, $end) {
global $c, $cl, $s, $l, $cf;
$ta = array();
if (isset($start)) {
if (!isset($end))$end = $start;
}
else $start = 1;
if (!isset($end))$end = $cf['menu']['levels'];
$ta = array();
if ($s > -1) {
$tl = $l[$s];
for($i = $s; $i > -1; $i--) {
if ($l[$i] <= $tl && $l[$i] >= $start && $l[$i] <= $end)if(!hide($i))$ta[] = $i;
if ($l[$i] < $tl)$tl = $l[$i];
}
@sort($ta);
$tl = $l[$s];
}
else $tl = 0;
$tl += 1+$cf['menu']['levelcatch'];
for($i = $s+1; $i < $cl; $i++) {
if ($l[$i] <= $tl && $l[$i] >= $start && $l[$i] <= $end)if(!hide($i))$ta[] = $i;
if ($l[$i] < $tl)$tl = $l[$i];
}
return li($ta, $start);
}





function li($ta, $st) {
global $s, $l, $h, $cl, $cf, $u;
$tl = count($ta);
if ($tl < 1)return;
$t = '';
if ($st == 'submenu' || $st == 'search')$t .= '<ul class="'.$st.'">';
$b = 0;
if ($st > 0) {
$b = $st-1;
$st = 'menulevel';
}
$lf = array();
for($i = 0; $i < $tl; $i++) {
$tf = ($s != $ta[$i]);
if ($st == 'menulevel' || $st == 'sitemaplevel') {
for($k = (isset($ta[$i-1])?$l[$ta[$i-1]]:$b); $k < $l[$ta[$i]]; $k++)$t .= '<ul class="'.$st.($k+1).'">';
}
$t .= '<li class="';
if (!$tf)$t .= 's';
else if(@$cf['menu']['sdoc'] == "parent" && $s > -1) {
if ($l[$ta[$i]] < $l[$s]) {
if (@substr($u[$s], 0, 1+strlen($u[$ta[$i]])) == $u[$ta[$i]].$cf['uri']['seperator'])$t .= 's';
}
}
$t .= 'doc';
for($j = $ta[$i]+1; $j < $cl; $j++)if(!hide($j) && $l[$j]-$l[$ta[$i]] < 2+$cf['menu']['levelcatch']) {
if ($l[$j] > $l[$ta[$i]])$t .= 's';
break;
}
$t .= '">';
if ($tf)$t .= a($ta[$i], '');
$t .= $h[$ta[$i]];
if ($tf)$t .= '</a>';
if ($st == 'menulevel' || $st == 'sitemaplevel') {
if ((isset($ta[$i+1])?$l[$ta[$i+1]]:$b) > $l[$ta[$i]])$lf[$l[$ta[$i]]] = true;
else
{
$t .= '</li>';
$lf[$l[$ta[$i]]] = false;
}
for($k = $l[$ta[$i]]; $k > (isset($ta[$i+1])?$l[$ta[$i+1]]:$b); $k--) {
$t .= '</ul>';
if (isset($lf[$k-1]))if($lf[$k-1]) {
$t .= '</li>';
$lf[$k-1] = false;
}
};
}
else $t .= '</li>';
}
if ($st == 'submenu' || $st == 'search')$t .= '</ul>';
return $t;
}

Заархівовано

Ця тема знаходиться в архіві та закрита для подальших відповідей.



×
×
  • Створити...