Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Как вывести название раздела

Страницы: 1  |  2  |  3  |  4
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
198 196 2013-11-05 22:29:18 13371
Страницы: 1  |  2  |  3  |  4
Описание проекта