|
dekart
DaHost.Ru
Зарегистрирован: 2005-03-26
Сообщений: 81
|
Нужно вывести меню в две колонки.
Шаблон навигации:
Код:$newtd = "</ul><ul>";
$opers = "".( ($i/3 == floor($i%2!=0)&&$i!=0)? "$newtd" : '' )."";
$browse_sub[0][prefix] = "<ul>";
$browse_sub[0][suffix] = "</ul>";
$browse_sub[0][active] = "".opt($data[$i]!=0,"".opt($data[$i][ShowMenu],"<li><a href='%URL'>%NAME</a></li>")."")."".$opers;
$browse_sub[0][active_link] = "".opt($data[$i]!=0,"".opt($data[$i][ShowMenu],"<li><b><a href='%URL'>%NAME</a></b></li>")."")."".$opers;
$browse_sub[0][unactive] = "".opt($data[$i][ShowMenu],"".opt($data[$i]!=0,"<li><a href='%URL'>%NAME</a></li>")."")."".$opers;
$browse_sub[0][divider] = "";
Пункты меню разбивает на две колонки, но неправильно: в 1-м столбике - 4 пункта, во 2-м - 6.
Подскажите, пожалуйста, как сделать, чтобы разбилось на 5 и 5 пунктов в каждом столбике?
И хотелось бы, чтобы при добавлении новых пунктов не приходилось править код, а автоматически делило на два столбца (например, 6 и 5, 6 и 6 и т.д.)
Заранее спасибо за совет.
dekart
|
|
malich
Андрей Малков
Зарегистрирован: 2005-08-09
Сообщений: 522
|
конструкция вызывает животный трепет!!!
Судя по всему у вас в разделы добавлено дополнительное поле $data[$i][ShowMenu], это чекбокс.
в этом случае $i использовать нельзя, так как она будет прибавляться на 1 в независимости от того верно условие или нет
Код:".opt($data[$i][ShowMenu],"...")."
вам нужно добавить свой счетчик
затем как вы хотите выводить меню?:
1.
1 2
3 4
5 6
2.
1 4
2 5
3 6
случай 1:
Код:$count=0;
$browse_sub[0][prefix] = "<ul>";
$browse_sub[0][suffix] = "</ul>";
$browse_sub[0][active] = "
".opt($data[$i]!=0,"
".opt($data[$i][ShowMenu],"<li><a href='%URL'>%NAME</a></li>".($count++,"")."")."
")."
";
$browse_sub[0][active_link] = "
".opt($data[$i]!=0,"
".opt($data[$i][ShowMenu],"<li><b><a href='%URL'>%NAME</a></b></li>".($count++,"")."")."
")."
";
$browse_sub[0][unactive] = $browse_sub[0][active];
$browse_sub[0][divider] = "".opt($counter!=0 && fmod($counter,2)==0,"</ul><ul>")."";
в чем суть, в начале присваиваем переменной $count 0 при каждом выводе пункта меню прибавляем к переменной +1 ($count++), если при делении $count на 2 получается 0 (fmod($counter,2)==0) вставляем разделитель. в вашем случае возможно потребуется поиграть с начальным значением переменной $count.
случай 2:
Код:$count=0;
$countAll=$db->get_var("SELECT COUNT(*) as n FROM Subdivision WHERE ShowMenu=1 AND Checked=1");
$browse_sub[0][prefix] = "<ul>";
$browse_sub[0][suffix] = "</ul>";
$browse_sub[0][active] = "
".opt($data[$i]!=0,"
".opt($data[$i][ShowMenu],"<li><a href='%URL'>%NAME</a></li>".($count++,"")."")."
")."
";
$browse_sub[0][active_link] = "
".opt($data[$i]!=0,"
".opt($data[$i][ShowMenu],"<li><b><a href='%URL'>%NAME</a></b></li>".($count++,"")."")."
")."
";
$browse_sub[0][unactive] = $browse_sub[0][active];
$browse_sub[0][divider] = "".opt($count==ceil($countAll/2),"</ul><ul>")."";
в чем суть, в начале присваиваем переменной $count 0 при каждом выводе пункта меню прибавляем к переменной +1 ($count++),
переменной $countAll присваиваем общее количество разделов для вывода (у которых стоит галочка ShowMenu)
если значение нашего счетчика $count = делению общего числа записей для вывода на 2 то вставляем разделитель
В этом примере возможно опять придется поиграть с начальным значением переменной $count + вместо ceil возможно нужно будет использовать floor
floor
ceil
++
|