Форум русской поддержки Joomla!® CMS
09.12.2016, 02:06:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Раскрывающийся список подкатегорий VirtueMart (фильтрация как по производителям) [Решено]

 (Прочитано 360 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Eholov
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 146



« : 16.12.2015, 21:14:41 »

Столкнулся с задачей,  нужно сделать фильтрацию товара в категории по подкатегориям подобно фильтрации по производителям. Вроде тема простая, но провозился долго. Искал модуль, но так и не нашел. Есть подобные по функционалу модули Phoca VirtueMart Category Module и
VirtueMart Boh! Category Filter. Мне они не подошли. Мне нужно было, чтоб при открытии категории, подкатегории этой категории раскрывались выпадающим списком как производители.  
Решил так:
Взял стандартный модуль "VirtueMart Категория" и переделал его с помощью CSS.
Из файла modules\mod_virtuemart_category\tmpl\default.php повырезал куски, чтоб он не показывал родителя. Да, версия VirtueMart 3.0.12
У меня получился такой код этого файла:
Код:
<?php // no direct access
defined('_JEXEC') or die('Restricted access');
//JHTML::stylesheet ( 'menucss.css', 'modules/mod_virtuemart_category/css/', false );

/* ID for jQuery dropdown */
$ID = str_replace('.', '_', substr(microtime(true), -8, 8));
$js="
//<![CDATA[
jQuery(document).ready(function() {
jQuery('#VMmenu".$ID." li.VmClose ul').hide();
jQuery('#VMmenu".$ID." li .VmArrowdown').click(
function() {

if (jQuery(this).parent().next('ul').is(':hidden')) {
jQuery('#VMmenu".$ID." ul:visible').delay(500).slideUp(500,'linear').parents('li').addClass('VmClose').removeClass('VmOpen');
jQuery(this).parent().next('ul').slideDown(500,'linear');
jQuery(this).parents('li').addClass('VmOpen').removeClass('VmClose');
}
});
});
//]]>
" ;

$document = JFactory::getDocument();
$document->addScriptDeclaration($js);?>

<ul class="VMmenu<?php echo $class_sfx ?>" id="<?php echo "VMmenu".$ID ?>" >
<?php foreach ($categories as $category) {
$active_menu = 'class="VmClose"';

$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$category->virtuemart_category_id);


//if ($active_category_id == $category->virtuemart_category_id) $active_menu = 'class="active"';
if (in_array( $category->virtuemart_category_id, $parentCategories)) $active_menu = 'class="VmOpen"';

?>

<li <?php echo $active_menu ?>>
<div>

<?php echo JHTML::link($caturl, $cattext);
if ($category->childs) {
?>

<?php
}
?>
</div>
<?php if ($category->childs) { ?>
<ul class="menu<?php echo $class_sfx; ?>">
<?php
echo '<div class="firsttext"><a href="'.JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$category->virtuemart_category_id).'">Выбрать группу</a></div>';
foreach ($category->childs as $child) {
 
$active_child_menu = 'class="VmClose"';

$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$child->virtuemart_category_id);
$cattext = vmText::_($child->category_name);
if ($child->virtuemart_category_id == $active_category_id) $active_child_menu = 'class="VmOpen"';
?>
<li  <?php echo $active_child_menu ?>>

<div ><?php echo JHTML::link($caturl, $cattext); ?></div>

<?php } ?>
</ul>
<?php } ?>
</li>
<?php
} ?>
</ul>

и стили в components\com_virtuemart\assets\css\vm-ltr-site.css
Код:

.VMmenu ul,.VMmenu li{
  list-style-type: none;
  background-image:none;
 
}

/* Скрывает подпункт предыдущего меню */
li.VmOpen div a {
display:none;
}
li.VmOpen ul.menu li.VmOpen div a {
display:block;
color:#08C!important;
}

ul.VMmenu {
  padding: 0px;
margin:0;
float:left;
  display:block;
  width:250px;
  background:#fff;
 
}
li.VmClose div   a {display:none;}

 
li.VmOpen ul.menu li.VmClose div  a {
display:block;
}
li.VmOpen ul.menu {
display:block;
background:#fff;
background: #FFF url("../images/vmgeneral/arrow_down.png") no-repeat scroll right top;
border: 1px solid #CAC9C9;
border-radius: 4px;
height:auto;
margin:0;
padding:1px 2px 1px 10px;
float:left;
color:#282f7b;
height:20px;
  display:block;
  width:240px;
  position:absolute;
}
li.VmOpen div a:hover {color:#08C!important;}
li.VmOpen ul.menu li.VmClose div a {
color:#282f7b;

}

li.VmOpen .firsttext a  {
  display: block;
position:relative;
z-index:1;

line-height:20px;
color:#282f7b;
line-height:20px;
height:auto!important;
}
li.VmOpen ul li:first-child {
  display: none;

}
 
li.VmOpen ul li:not(:first-child) {
  display: none;
}
 
li.VmOpen ul:hover li {
  display: block;
  margin:0!important;

}

/* активный первый пункт */
li.VmOpen   ul.menu li.VmOpen   {
color:#000000;
background:#fff;
padding:0 ;
line-height:20px;
font-size:12px!important;
height:20px!important;
margin:-20px 20px 0 0;
z-index:100;
position:relative;
display:block!important;
}

li.VmOpen ul.menu:hover {
display:block;
height:auto!important;
background:#fff;
overflow: auto;
position:absolute;
z-index:100;
}

Реализовал на сайте http://technolux.dp.ua/ на момент написания поста там еще старый сайт.Новый на локале пока.
« Последнее редактирование: 17.12.2015, 11:57:05 от Eholov » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet