Чтобы добавить модули в пункт выпадающего меню, нужно иметь в пункте меню некое поле, значение которого бы указывало на то, какие брать модули.

Для простоты будем использовать уже имеющееся поле - css-класс ссылки пункта меню. А для выбора модулей для данного пункта меню будем использовать позицию модулей с одноименным названием, то есть имя позиции это css-класс ссылки пункта меню.

Создадим переопределение вывода модуля меню и добавим следующий код, примерно с 71 строки файла default.php

$modulsFromPosition = $fieldImagesFolder = $jdvTools->getPosition($item->anchor_css, 0, 'array');
 
$countModuls = count($modulsFromPosition);
if ($countModuls == 1) $liWidth = '';
if ($countModuls == 2) $liWidth = 'li-width400';
if ($countModuls == 3) $liWidth = 'li-width600';
if ($countModuls == 4) $liWidth = 'li-width800';
if ($countModuls == 5) $liWidth = 'li-width800';
if ($countModuls == 6) $liWidth = 'li-width800';
if ($countModuls > 6) $liWidth = 'li-width800';
 
if (!empty($modulsFromPosition)) $class .= ' li-mbs ' . $liWidth;
 
echo '<li class="' . $class . '">';
 
switch ($item->type) :
	case 'separator':
	case 'component':
	case 'heading':
	case 'url':
 
		if (empty($modulsFromPosition)){
			require JModuleHelper::getLayoutPath('mod_menu', 'default_' . $item->type);
		}else{
 
			if ($countModuls == 1) $span = 'span12';
			if ($countModuls == 2) $span = 'span6';
			if ($countModuls == 3) $span = 'span4';
			if ($countModuls == 4) $span = 'span3';
			if ($countModuls == 5) $span = 'span2';
			if ($countModuls == 6) $span = 'span2';
			if ($countModuls > 6) $span = 'span1';
 
			echo '<div class="row-fluid">';
			foreach ($modulsFromPosition as $key=>$renderModule)
			{
				echo '<div class="'.$span.'">';
				echo $renderModule;
				echo '</div>'; 
			}
			echo '</div>';
		}
 
		break;
 
	default:
		require JModuleHelper::getLayoutPath('mod_menu', 'default_url');
		break;
endswitch;

где

$jdvTools->getPosition($item->anchor_css, 0, 'array')

это

public function getPosition($position, $style = 0, $type = 'html'){
	$document = JFactory::getDocument();
	$renderer = $document->loadRenderer('module');
	$modules  = JModuleHelper::getModules($position);
	$style = 0;
	$params   = array('style' => $style);
 
	if ($type == 'html'){
		ob_start();
		foreach ($modules as $key=>$module)
		{
			echo $renderer->render($module, $params);
		}
 
		$html = ob_get_clean();
	}else{
		foreach ($modules as $key=>$module)
		{
			ob_start();
			echo $renderer->render($module, $params);
			$html[$key] = ob_get_clean();
		}
 
	}
 
	return $html;
}

 

Чтобы сделать комментарий, нужно авторизоваться на сайте!