Попробуйте установить модуль, и перекрыть шаблон accordion прикрепленным файлом. Как это сделать описано в шапке темы.
[spoiler title="accordion.php"]<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
if ( ! defined('VMCategoriesAccordionDecoratorDefined') )
{
function VMCategoriesAccordionDecorator(&$node, &$args)
{
$categories = & VMCategories::getInstance();
$active = $categories->getActive();
$path = $active ? $active->getPath() : false;
switch ($node->name())
{
case 'ul':
break;
case 'li':
// set parent class
if (isset($node->ul) && $node->ul) {
$node->addAttribute('class', 'parent');
}
// set current class
if ($path && $node->attributes('id') == $path[0]) {
$node->addAttribute('class', $node->attributes('class').' current');
}
// set active class
if ($path && in_array($node->attributes('id'), $path)) {
$node->addAttribute('class', $node->attributes('class').' active');
}
break;
case 'a':
break;
}
// remove XML attributes
$node->removeAttribute('id');
$node->removeAttribute('level');
}
define('VMCategoriesAccordionDecoratorDefined', true);
}
// tag id can't be empty
$params->get('tag_id') or $params->set('tag_id', 'accordion');
// render list
$rendered = modVMCategoriesHelper::render($params, 'VMCategoriesAccordionDecorator');
// if module isn't empty
if ($rendered){
$script = "
window.addEvent('domready', function(){
$$($('{$params->get('tag_id')}'), $('{$params->get('tag_id')}').getElements('ul')).each(function(el){
accParentItems = el.getChildren().filterByClass('parent');
accTogglers = [];
accElements = [];
accParentItems.each(function(element, index){
accTogglers.push(new Element('span').inject(element));
accElements.push(element.getChildren().filterByTag('ul')[0]);
element.index = index;
element.getChildren().filterByTag('a')[0].addEvent('mouseover', function(){
if (this.getNext().offsetHeight == 0) {
this.parentNode.parentNode.Accordion.options.wait = false;
accTimer = this.parentNode.parentNode.Accordion.display.delay(200, this.parentNode.parentNode.Accordion, $(this.parentNode).index);
}
});
element.getChildren().filterByTag('a')[0].addEvent('mouseout', function(){
if((accTimer != undefined)){clearTimeout(accTimer)};
});
element.addEvent('mouseleave', function(){
if (element.getChildren().filterByTag('ul')[0].offsetHeight != 0) {
element.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
}
});
});
if ( accParentItems.length > 0 ){
el.Accordion = new Accordion(accTogglers, accElements, {
opacity: false,
alwaysHide: true,
show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
duration: 600,
transition: Fx.Transitions.Quart.easeOut,
onActive: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
},
onBackground: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.setStyle('height', element.offsetHeight+'px');
}
}
);
}
});
});
";
// require mootools
JHTML::_('behavior.mootools');
// get document
$document =& JFactory::getDocument();
$document->addScriptDeclaration($script);
}
[/spoiler]