Регистрация
Вход через соцсети
Восстановление пароля

Выделение раздела с подразделами в меню

Новый топик
30.08.2013, 17:33
Ответить | Цитировать
Гость
Гость

Шаблоны вывода навигации: (скопировано из базы знаний)
Код:
// меню слева
$browse_sub[1]['prefix'] = "<ul>";
$browse_sub[1]['suffix'] = "</ul>";
$browse_sub[1]['active'] = "<li><a href='%URL'>%NAME</a></li>";
$browse_sub[1]['unactive'] = "<li><a href='%URL'>%NAME</a></li>";

$browse_sub[0]['prefix'] = "<ul id='nav'>";
$browse_sub[0]['suffix'] = "</ul>";
$browse_sub[0]['active'] = $browse_sub[0]['active_link'] = "<li class='\".(\$db->get_var(\"SELECT COUNT(Subdivision_ID) AS count FROM Subdivision WHERE Parent_Sub_ID='\".\$data[\$i][Subdivision_ID].\"' AND Checked=1\") ? \"has_sub\" : \"\").\"'><a href='%URL' title='%NAME' class='open'><i class='%ICON'></i> %NAME <span class='pull-right'><i class='icon-chevron-right'></i></span></a></li>\n";
$browse_sub[0]['unactive'] = "<li class='\".(\$db->get_var(\"SELECT COUNT(Subdivision_ID) AS count FROM Subdivision WHERE Parent_Sub_ID='\".\$data[\$i][Subdivision_ID].\"' AND Checked=1\") ? \"has_sub\" : \"\").\"'><a href='%URL' title='%NAME'><i class='%ICON'></i> %NAME <span class='pull-right'><i class='icon-chevron-right'></i></span></a></li>\n";

Верхняя часть страницы (Header):
Код:
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-dropdown"><a href="#">Навигация</a></div>

<!--- Sidebar navigation -->
<?= s_browse_sub(0,$browse_sub) ?>
</div>

NetCat 5.2
Меню не выводится.
При замене s_browse_sub на nc_browse_sub класс выводится такой:
Код:
<li class="&quot;.($db-&gt;get_var(&quot;SELECT COUNT(Subdivision_ID) AS count FROM Subdivision WHERE Parent_Sub_ID=" ".$data[$i][subdivision_id]."'="" and="" checked="1&quot;)" ?="" "has_sub"="" :="" "")."'=""><a href="/about/" title="О компании"><i class="icon-file-alt"></i> О компании <span class="pull-right"><i class="icon-chevron-right"></i></span></a></li>

У кого есть соображения?
02.09.2013, 11:31
Ответить | Цитировать
Muerto
Алексей Виноградов-фон Шлиппе

Зарегистрирован:
2006-09-14
Сообщений: 37

Да как-же надо экранировать чертову переменную $data[$i][Subdivision_ID], чтобы она заработала?!
Код:
$isub = "SELECT COUNT(Subdivision_ID) AS count FROM Subdivision WHERE Parent_Sub_ID='\".\$data[\$i][Subdivision_ID].\"' AND Checked=1";
$browse_sub[0]['prefix'] = "<ul id='nav'>";global $browse_sub;$result.="";
$browse_sub[0]['suffix'] = "</ul>";
$browse_sub[0]['active'] = "...пока убрал...";
$browse_sub[0]['unactive'] = "<li class='".($db->get_var($isub) ? $isub : null)."'><a href='%URL' title='%NAME'><i class='%ICON'></i> %NAME <span class='pull-right'><i class='icon-chevron-right'></i></span></a></li>\n";

Смотрю в классе на сформированную mysql-строку и как не изгаляйся, но не могу увидеть там значение переменной $data[$i][Subdivision_ID]. Хотя, если "на живую" подставить Parent_Sub_ID='0' или '1' - условие срабатывает правильно и всё пучком.

Nadie hablara de nosotras cuando hayamos muerto...
02.09.2013, 11:57
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

На крайний случай используйте js. Так легче, так проще.

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
02.09.2013, 23:33
Ответить | Цитировать
Игорь
Stark
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 396

Если я правильно понял, нужно - если в разделе есть подразделы, присвоить <li> класс?

Код:
".($db->get_var("select count(*) from Subdivision where Checked=1 and Parent_Sub_ID=".(int)$sub)>0?"есть подразделы":"нет подразделов")."
03.09.2013, 11:15
Ответить | Цитировать
Muerto
Алексей Виноградов-фон Шлиппе

Зарегистрирован:
2006-09-14
Сообщений: 37

Игорь, при твоём раскладе условие не выполняется никогда (даже при наличии разделов). Причем (int)$sub всегда равна 242 (во всех разделах). Но я попытаю копать в эту сторону.
---
Я пытался сделать
Код:
$isub = "SELECT COUNT(Subdivision_ID) AS count FROM Subdivision WHERE Parent_Sub_ID='%SUB' AND Checked=1";
$browse_sub[0]['unactive'] = "<li class='".($db->get_var($isub)>0?$isub:$sub)."'><a href='%URL' title='%NAME'><i class='%ICON'></i> %NAME <span class='pull-right'><i class='icon-chevron-right'></i></span></a></li>\n";
и класс становился
Код:
class='SELECT COUNT(Subdivision_ID) AS count FROM Subdivision WHERE Parent_Sub_ID='145--- 147, 153 т. е. правильный SUB ---' AND Checked=1'
, т. е. поисковая строка правильная. Но она не срабатывает - всегда отдаёт тру. грустный

Nadie hablara de nosotras cuando hayamos muerto...
03.09.2013, 11:35
Ответить | Цитировать
Alex

Зарегистрирован:
2009-08-27
Сообщений: 8

посмотрите эту тему
Цитата:
Да как-же надо экранировать чертову переменную $data[$i][Subdivision_ID], чтобы она заработала?!
03.09.2013, 13:08
Ответить | Цитировать
Игорь
Stark
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 396

Цитата:
(int)$sub всегда равна 242(


(int)$sub заменить на \$data[\$i][Subdivision_ID]
И не забыть про экранирование

т.е. сделать так:
Код:
 class='\".(\$db->get_var(\"select count(*) from Subdivision where Checked=1 and Parent_Sub_ID=\".\$data[\$i][Subdivision_ID])>0?\"есть разделы\":\"нет разделов\").\"'
03.09.2013, 14:05
Ответить | Цитировать
Muerto
Алексей Виноградов-фон Шлиппе

Зарегистрирован:
2006-09-14
Сообщений: 37

Я тут решил пойти с самого начала и обнаружил, что даже такой вариант
Код:
$browse_sub[0]['prefix'] = "<ul id='nav'>";
$browse_sub[0]['suffix'] = "</ul>";
$browse_sub[0]['active'] = "...пока убрал...";
$browse_sub[0]['unactive'] = "<li class=''><a href='%URL' title='%NAME'> %NAME <span class='pull-right'><i class='icon-chevron-right'></i></span></a></li>";

ничего не выводит c
Код:
<?=s_browse_sub(0,$browse_sub) ?>

хотя там вообще никакого отхождения нет от канонов.
При этом
Код:
<?=nc_browse_sub(0,$browse_sub) ?>
всё нормально выводит.
Может у меня котэ побился при установке? (работаю локально)

Nadie hablara de nosotras cuando hayamos muerto...
03.09.2013, 17:53
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Судя по тому что вы пишите все у вас работает. Вы не очень внимательно читаете каноны
Для s_brows... Шаблон выглядит типа $browse_sub[0] с ключом. А для nc_brow... $browse_sub без ключа и есть возможность использования макропеременной %NEXT_LEVEL

Буквально сейчас писал условие в шаблоне навигации
$select_category[0]['unactive'] = "<li><a href='".(!empty($_GET) ? $_SERVER['REQUEST_URI']."&subID=%SUB&subIDname=%NAME" : "/ishop/search/?subID=%SUB&subIDname=%NAME" )."' ".nc_ls_display_link('content', 200, null, $fn, array('isNaked'=>1))."><strong>%NAME</strong></li>%NEXT_LEVEL";
Работает как часы. Никакого экранирования.

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
04.09.2013, 16:42
Ответить | Цитировать
Muerto
Алексей Виноградов-фон Шлиппе

Зарегистрирован:
2006-09-14
Сообщений: 37

Точно! Миа кульпа! Всё смотрел в шаблоны навигации, а про [0]-то и забыл! Спасибо!

Nadie hablara de nosotras cuando hayamos muerto...
198 196 2013-09-04 16:42:11 13250
Описание проекта