If you make your secondary links "source" the primary links, then secondary links will automatically show the child menu items of the current active menu item / page.
Regarding menus as regions, you may be mistaking theme regions for page content.
Main menu and secondary menus are page content often placed directly within a theme region.
There's nothing to stop you putting the menus in a block wrapper for Admin > Structure > Blocks administration, then add to a theme region that way.
It just matters what best suits your site design and layouts.
e.g: put menus in blocks
/**
* Implements hook_block
* Provide core menus as regular blocks
*/
function example_menus_block_info(){
$blocks['example_main_menu'] = array(
'info' => t('example Main menu'),
'cache' => DRUPAL_CACHE_GLOBAL,
);
$blocks['primary_tabs'] = array(
'info' => 'Local tasks: primary',
'cache' => DRUPAL_CACHE_PER_PAGE
);
$blocks['secondary_tabs'] = array(
'info' => 'Local tasks: secondary',
'cache' => DRUPAL_CACHE_PER_PAGE
);
$blocks['primary_secondary_tabs'] = array(
'info' => 'Local tasks: primary and secondary',
'cache' => DRUPAL_CACHE_PER_PAGE
);
return $blocks;
}
/**
* hook_block_view
*/
function example_menus_block_view($delta = ''){
$block = array();
$block['subject'] = ''; // default no title
switch ($delta) {
// Our own properly wrapped main menu for panels.
case 'example_main_menu':
$main_menu = menu_main_menu();
$options = array(
'links' => $main_menu,
'attributes' => array(
'id' => 'main-menu',
'class' => array('links', 'inline', 'clearfix'),
),
'heading' => array(
'text' => t('Main menu'),
'level' => 'h2',
'class' => array('element-invisible'),
),
);
$block['content'] = theme('links__system_main_menu', $options);
break;
case 'primary_tabs':
$block['content'] = array(
'#primary' => menu_primary_local_tasks(),
'#theme' => 'menu_local_tasks',
);
break;
case 'secondary_tabs':
$block['content'] = array(
'#secondary' => menu_secondary_local_tasks(),
'#theme' => 'menu_local_tasks',
);
break;
case 'primary_secondary_tabs':
// default, same as core
$block['content'] = menu_local_tabs();
break;
}
return $block;
}
Clear cache and can then add the menus as regular Drupal blocks.