|
|
16.06.2009, 22:23
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Доброго всем времени.
Не думал что упрусь в такое, но вот. Была когда-то здесь тема "Меню матрицей", общение там прошло весьма "душевно", но результата не дало.
И вот теперь необходимо примерно то же. Необходимо сделать меню, в моем случае 2-го уровня в виде 4хN, т.е. в строке должно быть не больше 4х пунктов, а самих строк может быть сколько угодно.
В HTML в грубой форме что-то вродеКод:<table width='781' height="200">
<tr><td align="center">
<table><tr><td width="150" align="center">1</td></tr></table>
</td><td width="10"></td>
<td align="center">
<table><tr><td width="150" align="center">2</td></tr></table>
</td><td width="10"></td>
<td align="center">
<table><tr><td width="150" align="center">3</td></tr></table>
</td><td width="10"></td>
<td align="center">
<table><tr><td width="150" align="center">4</td></tr></table>
</td>
</tr>
<tr><td align="center">
<table><tr><td width="150" align="center">5</td></tr></table>
</td><td width="10"></td>
<td align="center">
<table><tr><td width="150" align="center">6</td></tr></table>
</td><td width="10"></td>
<td align="center">
<table><tr><td width="150" align="center">7</td></tr></table>
</td><td width="10"></td>
<td align="center">
<table><tr><td width="150" align="center">8</td></tr></table>
</td>
</tr>
</table>
В навигации сколько не писал, все ограничивалось либо просто в строку, либо в столбец. Как там определить что необходимо не больше 4 элементов меню и дальше переход на новую строку.
Код:$browse_sub[2][prefix] = "<table width='781' height='200'><tr>";
$browse_sub[2][active] = "<td align='center'><table><tr><td width='150' align='center'>%NAME</td></tr></table></td>";
$browse_sub[2][active_link] = "<td align='center'><table><tr><td width='150' align='center'>%NAME</td></tr></table></td>";
$browse_sub[2][unactive] = "<td align='center'><table><tr><td width='150' align='center'>%NAME</td></tr></table></td>";
$browse_sub[2][divider] = "<td width='10'></td>";
$browse_sub[2][suffix] = "</tr></table>";
Так получается только строка...Может мозг замылился уже...) Где какой разделитель написать!?..
|
|
|
17.06.2009, 06:57
|
|
pe3udent
Артур Юсупов
Зарегистрирован: 2008-04-03
Сообщений: 220
|
Разделитель - </tr><tr>, вставлять нужно, если остаток от деления ($i + 1) на 4 равен 0, при этом элемент не должен быть последним, иначе вставится пустая строка:
Код:$browse_s[prefix] = "<table><tr>";
$browse_s[suffix] = "</tr></table>";
$browse_s[active] = "<td><a href='%URL'>%NAME</a></td>".( $i != (count($data) - 1) && ($i + 1)%4 == 0 ? "</tr><tr>" : NULL ).( $i == (count($data) - 1) && ($i + 1)%4 != 0 ? str_repeat("<td></td>", (4 - ($i + 1)%4)) : NULL )."";
$browse_s[unactive] = "<td><a href='%URL'>%NAME</a></td>".( $i != (count($data) - 1) && ($i + 1)%4 == 0 ? "</tr><tr>" : NULL ).( $i == (count($data) - 1) && ($i + 1)%4 != 0 ? str_repeat("<td></td>", (4 - ($i + 1)%4)) : NULL )."";
$browse_s[divider] = "";
Код:( $i == (count($data) - 1) && ($i + 1)%4 != 0 ? str_repeat("<td></td>", (4 - ($i + 1)%4)) : NULL )
- эта конструкция нужна для дополнения неполной строки таблицы пустыми ячейками до четырех.
|
|
|
17.06.2009, 11:06
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Супер!) Работает как надо! Благодарности моей нет границ. Как, единственное для меня остается секретом, можно разобраться в этом!?Цитата:( $i == (count($data) - 1) && ($i + 1)%4 != 0 ? str_repeat("<td></td>", (4 - ($i + 1)%4)) : NULL ) чтобы в будущем самостоятельно писать!?...
|
|
|
17.06.2009, 11:38
|
|
pe3udent
Артур Юсупов
Зарегистрирован: 2008-04-03
Сообщений: 220
|
Код:( $i == (count($data) - 1) && ($i + 1)%4 != 0 ? str_repeat("<td></td>", (4 - ($i + 1)%4)) : NULL )
в переводе на русский: если порядковый номер (индекс) текущего элемента равен количеству элементов массива (то бишь последний в массиве) и не является последним в строке (не четвертый) - вывести строку "<td></td>" ровно столько раз, сколько осталось до заполнения строки.
Или вам необходимо описание синтаксиса?
|
|
|
17.06.2009, 12:02
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Логику данной строки я конечно осознал. А вообще конечно хотелось бы синтаксис освоить дабы вдруг придется что-то иное написать... Вообще уже сталкивался с подобным написанием, но вот откуда оно все и как пишется...Доселе подобное написание && для меня было просто как два символа))Есть может дока где, какая-нибудь!?
|
|
|
17.06.2009, 12:07
|
|
pe3udent
Артур Юсупов
Зарегистрирован: 2008-04-03
Сообщений: 220
|
в таком случае php man в помощь
|
|
|
17.06.2009, 13:50
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
)Акей! Спасибо!
|