|
|
02.11.2013, 19:31
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Мне пока не требуется вывод последующих уровней.
Задача вывести подразделы 98 раздела и сам раздел.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
02.11.2013, 19:36
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Цитата:
Цитата:Тогда, боюсь, только через отдельный запрос к БД ($db->get_row или listquery).
Вы имеете ввиду просто прописать запрос к базе прямо в нужном месте макета или можно в шаблоне навигации? Просто мне нужно ещё прикрутить фоновое изображение к разделам, а я это хотел делать по средствам доп. полей разделов.
Прикрутить листквери можно либо прямо в макет дизайна, либо в префикс шаблона вывода s_browse_sub. Но я уже понял, это слишком уж кривое решение, лучше забудьте про него.
Цитата:Если указывать s_browse_sub(1,$vertical_menu,0,"isVertical=1") то разве система не будет просто выводить подразделы 1 раздела по условию? Ведь первым разделом является титульная страница, по крайне мере у меня.
Если вы в шаблон $vertical_menu оставите в таком виде, как Вы привели выше - то, конечно, выведет только содержимое 1го раздела. Но если добавите в шаблон рекурсию - то все пройдет замечательно. :-)
Я, кстати, честно говоря, не уверен, будет ли с 1-кой работать. Поставьте-ка лучше 0-лик, чтобы проход шел уже гарантированно по всему сайту. Это я про первый параметр s_browse_sub.
Цитата:Создал поле...проверил... s_browse_sub(1,$vertical_menu,0,"isVertical=1") не работает, кстати я так уже пробовал...вспомнил. В общем это не вариант.
Не-не, должно работать! Давайте разберемся:
1. Пропишите рекурсию в $vertical_menu
2. Поставьте в s_browse_sub первым параметром 0, а не 1
3. Проверьте по базе данных - действительно ли в 98м разделе в поле isVertical поставилась 1-ка, равно как и во всех вложенных подразделах?
Проверять примерно таким SQL-запросом: select isVertical from Subdivision where Subdivision_ID=98
Вот пример рекурсии для NetCat 4.x:
Код:
$browse_map['prefix'] = "<ul class='map'>";
$browse_map['unactive'] = "<li><a href=%URL>%NAME</a>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$browse_template).\"";
$browse_map['active'] = "<li><a href=%URL>%NAME</a>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$browse_template).\"";
$browse_map['suffix'] = "</ul>";
...
".s_browse_sub(0,$browse_map)."
А в 5-ом неткате лучше используйте nc_browse_level, там есть очень удобная макропеременная %NEXT_LEVEL для рекурсии. Почитать, как ее использовать, можно тут: пример многоуровневой навигации.
|
|
|
02.11.2013, 19:38
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Цитата:Мне пока не требуется вывод последующих уровней.
Задача вывести подразделы 98 раздела и сам раздел.
Вы поймите, если вам надо вывести и 98й раздел, и список подразделов 98го раздела, то у вас получается уже многоуровневое (точнее, 2х-уровневое) меню. Поэтому рекурсия необходима. И без рекурсии мой пример с isVertical работать точно не будет.
|
|
|
02.11.2013, 19:45
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Ок, Руслан. Попробую, о результатах обязательно напишу
Спасибо за помощь.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
03.11.2013, 19:49
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Сделал так:
Шаблон навигации:
Код:$vertical_menu[0]['prefix'] = "";
$vertical_menu[0]['suffix'] = "";
$vertical_menu[0]['active'] = "<a href='%URL'><li id='level1'>%NAME</li></a>%NEXT_LEVEL";
$vertical_menu[0]['unactive'] = "<a href='%URL'><li id='level1'>%NAME</li></a>%NEXT_LEVEL";
$vertical_menu[1]['prefix'] = "";
$vertical_menu[1]['suffix'] = "";
$vertical_menu[1]['active'] = "<a href='%URL'><li id='level2'>%NAME</li></a>";
$vertical_menu[1]['unactive'] = "<a href='%URL'><li id='level2'>%NAME</li></a>";
Функция вывода:
Код:<?=nc_browse_sub(0, $vertical_menu, 0, $where_cond="NavLeft='1'");?>
Всё хорошо, но стоит ещё одна задача:
У каждого пункта меню должно быть своё фоновое изображение, а при наведении изображение должно меняться.
Для этого создал в системных разделах 2 поля типа файл:
BackgroundImgSection и BackgroundImgSectionHover.
В итоге пробовал в active и unactive писать так:
....
Код:
$vertical_menu[0]['active'] = "<a href='%URL'><li style='background-image: url(%BackgroundImgSection);' id='level1'>%NAME</li></a>%NEXT_LEVEL";
....
Так работает, для каждого раздела фоновая картинка грузится, но я не могу понять, как сделать смену картинки при наведении (BackgroundImgSectionHover) ?
Ну т.е. для каждого раздела в дополнительных полях грузится 2 изображения:
Цитата:1. Фон при загрузки - BackgroundImgSection
2. Картинка при наведении на ссылку - BackgroundImgSectionHover
Пробовал с помощью onmouseout и onmouseover, но как-то не заработало нормально.
Вопрос собственно в том, как сменять изображение при наведении используя поле раздела?
Какой-то же должен способ быть. В style в теге псевдокласс hover не прописать, да и вообще вставлять style в шаблоны, как-то некрасиво, да и неправильно я думаю.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
03.11.2013, 23:23
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Загружаете одно двойное изображение и по событию :hover меняете background-position.
Stark
|
|
|
04.11.2013, 06:22
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
т.е. всё-таки вставлять style в тег li и в нём прописывать background-image: url(%BackgroundImgSection), т.е. поле с двойным изображением, а уже в id='level1' с помощью background-position по событию :hover менять на нужную область картинки?
Просто как-то это кажется коряво
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
04.11.2013, 12:13
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Вот как раз действия с backgroud-position более правильно, чем смена картинки.
Да, style='' в li не совсем комильфо.
Тогда, можно каждому li назначать свой класс (кстати, лучше использовать именно class, а не id) или через дополнительное поле раздела или же вписывать в class ключевое слово раздела, например:
Код:$vertical_menu[0]['prefix'] = "<ul class='menu'>";
$vertical_menu[0]['suffix'] = "</ul>";
$vertical_menu[0]['active'] = "<li class='%class'><a href='%URL'>%NAME</a>%NEXT_LEVEL</li>";
$vertical_menu[0]['unactive'] = "<li class='%class'><a href='%URL'>%NAME</a>%NEXT_LEVEL</li>";
И именно такой формат, ибо так <a href='%URL'><li id='level2'>%NAME</li></a> - неправильно, ссылка должны быть в li, н не наоборот. И, если используем li, то не забываем про ul или ol.
Stark
|
|
|
04.11.2013, 13:22
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Если делать так:
Код:
$vertical_menu[0]['prefix'] = "<ul>";
$vertical_menu[0]['suffix'] = "</ul>";
$vertical_menu[0]['active'] = "<li class='%class'><a href='%URL'>%NAME</a>%NEXT_LEVEL</li>";
$vertical_menu[0]['unactive'] = "<li class='%class'><a href='%URL'>%NAME</a>%NEXT_LEVEL</li>";
То я не совсем понимаю....
У меня для изображения используется дополнительно поле %BackgroundImgSection, так как нужно грузить изображение для каждого раздела своё.
Как тогда мне это поле правильно вписать в шаблон?
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
04.11.2013, 14:16
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Убираем дополнительные поля для изображений раздела.
Добавляем новое поле class.
В каждом разделе в этом поле пишем, например, razdel-1.
В css-файл:
Код:.razdel-1 {
display: block; //или inline-block
width: auto;
height: в зависимости от высоты картинки
padding-left: ширина картинки или чуть больше
background: url(adres-kartinki.png) no-repat left top;
}
.razdel-1:hover {
background-position: left bottom;
}
И так далее
Stark
|