Je viens de regarder sur ton site et je n'ai pas de répétition au niveau du menu. Peux-être faut t'il vider le cache.
La répétition ne vient normalement pas de la modification car la modification autorise la lecture des sous-catégories quelque soit le module actif.
je te passe le code de toute la fonction tu n'auras qu'a la remplacer dans le fichier (a partir de la ligne 105)
function b_system_main_show()
{
global $xoopsUser,$xoopsModule;
$block = array();
$block['lang_home'] = _MB_SYSTEM_HOME;
$block['lang_close'] = _CLOSE;
$module_handler =& xoops_gethandler('module');
$criteria = new CriteriaCompo(new Criteria('hasmain', 1));
$criteria->add(new Criteria('isactive', 1));
$criteria->add(new Criteria('weight', 0, '>'));
$modules = $module_handler->getObjects($criteria, true);
$moduleperm_handler =& xoops_gethandler('groupperm');
$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
$read_allowed = $moduleperm_handler->getItemIds('module_read', $groups);
foreach (array_keys($modules) as $i) {
if (in_array($i, $read_allowed)) {
$block['modules'][$i]['name'] = $modules[$i]->getVar('name');
$block['modules'][$i]['directory'] = $modules[$i]->getVar('dirname');
$sublinks = $modules[$i]->subLink();
if ((!empty($xoopsModule)) && ($i == $xoopsModule->getVar('mid'))) {
$block['modules'][$i]['highlight'] = true;
$block['nothome'] = true;
}if ((!empty($xoopsModule)) && ($i == $xoopsModule->getVar('mid'))) {
$block['modules'][$i]['highlight'] = true;
$block['nothome'] = true;
}
if ((count($sublinks) > 0) /*&& (!empty($xoopsModule)) && ($i == $xoopsModule->getVar('mid'))*/) {
foreach($sublinks as $sublink){
$block['modules'][$i]['sublinks'][] = array('name' => $sublink['name'], 'url' => XOOPS_URL.'/modules/'.$modules[$i]->getVar('dirname').'/'.$sublink['url']);
}
} else {
$block['modules'][$i]['sublinks'] = array();
}
}
}
return $block;
}