Funny you asked... Categories Dressing v2.7, just submitted to Free Addons, includes an active/level combination that would suit your purpose. From the readme:
The category display-limiting define takes this form:
define('CAT_BOX_ACTIVE_LEVEL', 'active|highest_level|deepest_level');
* The "active" field controls whether categories outside the current active tree will display: 0=all tops/1=active tree only/2=active tree only (all tops when no cat selected)/3=full active tree, others limited per level controls.
* The "highest_level" field controls whether top categories will display: 0=all levels/1=no topcats/etc.
* The "deepest_level" field controls whether subcategories will display: 1=only first subcats/2=first & second subcats/.../9=all levels down to 9.
If you don't want to wait for the new version, you can replace the existing version of the cat_active_level_manage() function in /includes/functions/extra_functions/categories_dressing_functions.php with this:```php
/* Categories Dressing v2.7 - Glenn Herbert (gjh42) - 20090307
*/
function cat_active_level_manage($path) {
$skip_cat = 0;
if (defined('CAT_BOX_ACTIVE_LEVEL')) {
$cat_box_active_level = explode('|',constant('CAT_BOX_ACTIVE_LEVEL'));
$current_top = (int)$GET['cPath'];
$iteration_top = (int)$path; // set = this iteration's topcat
$cat_depth = substr_count($path,'');
//tests for various kinds of skipping - more can be added
$skip_cat = $skip_cat + ($cat_box_active_level[0] == 1 and $current_top != $iteration_top)?1:0;
$skip_cat = $skip_cat + ($cat_box_active_level[0] == 2 and $current_top != $iteration_top and $current_top != 0)?1:0;
$skip_cat = $skip_cat + ($cat_box_active_level[0] == 3 and ($current_top != $iteration_top and ($cat_box_active_level[1] > $cat_depth or $cat_box_active_level[2] < $cat_depth)))?1:0;
$skip_cat = $skip_cat + ($cat_box_active_level[1] > $cat_depth and $cat_box_active_level[0] != 2 and $cat_box_active_level[0] != 3)?1:0;
$skip_cat = $skip_cat + ($cat_box_active_level[2] < $cat_depth and $cat_box_active_level[0] != 3)?1:0;
}//defined
return $skip_cat;
}