More variables - more places to mistake. What if we add only one bool setting, something like:

```php
$settings = array(
    'zend_db_adapter'     => 'Zend\Db\Adapter\Adapter',
    'config_values_table' => 'configadminvalues',
    'route_zfcadmin' => false,

    'config_options' => array(
        'site' => $configOptions,
    ),
    'config_groups'  => array(
        'site' => $configGroups,
    ),
);

if ($settings['route_zfcadmin']) {
  $router = array(/* route for zfcadmin page */);
  $navigation = array('admin' => array(/* zfcadmin nav */));
} else {
  $router = array(/* route for standalone page */);
  $navigation = array();
}

return array(
    'cgmconfigadmin' => $settings,
    'service_manager' => array(
        'aliases' => array(
            'cgmconfigadmin_zend_db_adapter' => (isset($settings['zend_db_adapter'])) ? $settings['zend_db_adapter']: 'Zend\Db\Adapter\Adapter',
        ),
    ),
    'router' => $router,
    'navigation' => $navigation,
);

...

protected function getRoute()
{
    $config = $this->getServiceLocator()->get('Config');
    return $config['cgmconfigadmin']['route_zfcadmin'] ? 'zfcadmin/cgmconfigadmin' : 'cgmconfigadmin';
}
```