Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 24 Ответов
  • 1707 Просмотров
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Для VirtueMart есть бесплатный модуль категорий с эффектом аккордиона.
Проблема в том, что он неправильно определяет активную категорию. На какую страницу не заходишь, хоть на главную - он всегда показывает активной категорию с id=4.
Вот конструкция, которая делает запрос в бд, почему-то переменной catid присваивается значение 4, в чем тут ошибка?

Код
//Get catid level 1
while (1) {
$sql = 'SELECT m.virtuemart_category_id FROM #__virtuemart_categories AS m'
. ' INNER JOIN #__virtuemart_category_categories AS m1 ON m1.category_child_id = m.virtuemart_category_id'
. ' INNER JOIN #__virtuemart_category_categories AS m2 ON (m1.category_child_id = m2.category_parent_id AND m2.category_child_id ='.$catid.')'
. ' WHERE m.published = 1'
. ' ORDER BY m.ordering';
//echo $catid;
$db->setQuery($sql);
//echo $db->setQuery($sql);

if ($temp = (int)$db->loadResult()) {

$catid = $temp;

} else {
break;
}
}
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
catid присваивается значение 4, так и есть значит у вас, это результат первой записи запроса
Здесь (в приведенном коде нет привязки к активной категории)
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Тогда может тут?

Код
if ($n = count($rows)) {
for ($i = 0; $i < $n; $i++) {

$rows[$i]->products = $this->products[$i];
$this->makecorrectlink($rows[$i]);
$rows[$i]->subs = $this->getSublevel($rows[$i]->virtuemart_category_id); //Get the first sublevel of main item i
$rows[$i]->active = $rows[$i]->virtuemart_category_id==$catid?1:0;

//If link is click
$rows[$i]->haslink = count($rows[$i]->subs)?0:1;
if ($parentlink) $rows[$i]->haslink = 1;
}
}
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Ранее только такая строка
$catid = JRequest::getInt('category_id')?JRequest::getInt('category_id'):0;
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
4 - я об этом и говорю
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
так текущая значит 4
а какую надо
//$catid = JRequest::getInt('category_id')?JRequest::getInt('category_id'):0;
$catid =5;
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
когда идет начальное определение переменной
$catid = JRequest::getInt('category_id')?JRequest::getInt('category_id'):0;
выводится catid=0
а в коде дальше, который я первый выкладывала, там где echo $catid;
catid=4 - на любой странице сайта, оно ведь меняться должно в зависимости от категории, в которую вы заходите?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
if ($temp = (int)$db->loadResult()) {

//$catid = $temp;
$catid = JRequest::getInt('category_id')?JRequest::getInt('category_id'):0;

} else {
break;
}
выводится catid=0 полная не SEF ссылка как выглядит. Там есть catid. Версия Joomla какая
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Joomla 2.5
VirtueMart 2.0.14

/index.php?option=com_virtuemart&view=category&virtuemart_category_id=34
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
не помогло, все осталось по прежнему
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
показывает активной категорию с id=4.
показывает, класс active добавляет?
здесь нет кода формирования списка ссылок
и код мой все таки оставьте
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
еще раз все проверила - код ваш работает на всех страницах с категориями, но на главной странице (которая вообще к VirtueMart не относится, там избранные материалы com_content) у меня все равно активна категория с id=4
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
$catid =JFactory::getApplication()->input->getCmd('virtuemart_category_id',  5);
или так
Код: php-brief
if ($temp = (int)$db->loadResult()) {
$catid =JFactory::getApplication()->input->getCmd('virtuemart_category_id', '')?  $temp: 5;
//Вставьте вместо 5 нужную для активной на тех страницах где нет virtuemart_category_id
} else {
break;
}
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
а если на главной они вообще не должны быть активными?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Код
<div id="<?php echo $type; ?>" class="menu_list">
<?php foreach ($menus as $menu) {
$link = ($menu->haslink)? ('<a href="'.$menu->link.'">'.$menu->name.'</a>'):($menu->name);
$active = $menu->active?"active":"";
?>
<p class="menu_head <?php echo $active; ?>"><?php echo $link; ?></p>
<?php if(count($menu->subs)) {  ?>
<div class="menu_body"<?php if ($remind) echo $menu->active?'style="display:block;"':''; ?>>
<?php foreach ($menu->subs as $sub) {
$active = $sub->active?'class="sub_active"':'';
?>
<li class="oj-accord_li">
<a <?php echo $active; ?> href="<?php echo $sub->link; ?>"><?php echo $sub->name; ?></a>
<?php if(count($sub->subs)) {  $this->ShowMoreThan2Levels($sub); } ?>
</li>
<?php
}
?>
</div>
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
$active = $menu->active?"active":"";
на
$active = ($menu->active && JFactory::getApplication()->input->getCmd('virtuemart_category_id', ''))?"active":"";
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Эти строки не решают проблему, потому что эта категория с Id=4 имеет подкатегории, модуль считает эту категорию активной и подкатегории раскрыты, а последние строки только CSS стили меняют на не активный вариант.
Мне уже как-то неловко вас мучать... Спасибо большое за помощь, взяла ваш предыдущий вариант с переменной temp и присвоила ей 999 - не очень красиво, но работает
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Это для под категорий
$active = $sub->active?'class="sub_active"':'';
на
$active = ($sub->active && JFactory::getApplication()->input->getCmd('virtuemart_category_id', ''))?'class="sub_active"':'';
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
подкатегории все равно открыты
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
<?php if ($remind) echo $menu->active?'style="display:block;"':''; ?> на
<?php if ($remind && JFactory::getApplication()->input->getCmd('virtuemart_category_id', '')) echo $menu->active?'style="display:block;"':''; ?>
*

Ongi

  • Захожу иногда
  • 273
  • 15 / 0
Работает! Вашему упорству можно только позавидовать, еще раз огромное спасибо :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблемы с модулем JUX Mega Menu

Автор spdx15

Ответов: 16
Просмотров: 1829
Последний ответ 10.07.2019, 14:38:49
от sivers
При загрузке Google Карт на этой странице возникла проблема

Автор amor

Ответов: 10
Просмотров: 8691
Последний ответ 24.03.2019, 22:51:24
от amor
Нужна помощь с переносом модуля меню с джумы 1.5 на Joomla 2.5

Автор plen

Ответов: 2
Просмотров: 1278
Последний ответ 20.03.2018, 22:28:33
от SeBun
Проблема со строкой в колонке (шорткод)

Автор bayersoff

Ответов: 0
Просмотров: 1414
Последний ответ 27.09.2017, 15:53:12
от bayersoff
Проблема после установки jch optimize

Автор Sasha25Sh

Ответов: 13
Просмотров: 4481
Последний ответ 30.06.2017, 19:53:31
от Alex_Vazovski