# Configuración de Navegación de Módulos

## Descripción

Este documento explica cómo configurar la visibilidad de módulos en el header y footer del sitio mediante archivos de configuración, sin necesidad de modificar código.

## Ubicación de la Configuración

La configuración se realiza en el archivo `config/cd-system.php`, dentro de la sección `modules` de cada módulo.

## Estructura de Configuración

Cada módulo puede incluir una sección `navigation` que controla dónde aparece en el sitio:

```php
'module_name' => [
    'active' => true,
    'name' => 'Nombre del Módulo',
    'description' => 'Descripción del módulo',
    'version' => '1.0.0',
    'navigation' => [
        'header' => true,   // Mostrar en el menú del header
        'footer' => true,   // Mostrar en el menú del footer
    ],
],
```

## Opciones de Configuración

### `header` (boolean)
- **`true`**: El módulo aparecerá en el menú de navegación del header
- **`false`**: El módulo NO aparecerá en el menú del header

### `footer` (boolean)
- **`true`**: El módulo aparecerá en el menú de navegación del footer
- **`false`**: El módulo NO aparecerá en el menú del footer

## Ejemplos de Configuración

### Ejemplo 1: Módulo solo en Footer
Útil para módulos como Blog o FAQs que quieres mantener accesibles pero no en el menú principal:

```php
'blog' => [
    'active' => true,
    'name' => 'Publicaciones',
    'description' => 'Noticias y actualizaciones',
    'version' => '1.0.0',
    'navigation' => [
        'header' => false,  // No aparece en header
        'footer' => true,   // Sí aparece en footer
    ],
],
```

### Ejemplo 2: Módulo solo en Header
Para módulos importantes que quieres destacar en el menú principal:

```php
'services' => [
    'active' => true,
    'name' => 'Servicios',
    'description' => 'Nuestros servicios',
    'version' => '1.0.0',
    'navigation' => [
        'header' => true,   // Sí aparece en header
        'footer' => false,  // No aparece en footer
    ],
],
```

### Ejemplo 3: Módulo en Ambos (Header y Footer)
Comportamiento por defecto si no se especifica `navigation`:

```php
'products' => [
    'active' => true,
    'name' => 'Productos',
    'description' => 'Catálogo de productos',
    'version' => '1.0.0',
    'navigation' => [
        'header' => true,   // Sí aparece en header
        'footer' => true,   // Sí aparece en footer
    ],
],
```

### Ejemplo 4: Módulo Oculto de la Navegación
Para módulos activos pero que no deben aparecer en ningún menú (accesibles solo por URL directa):

```php
'newsletter' => [
    'active' => true,
    'name' => 'Newsletter',
    'description' => 'Sistema de suscripción',
    'version' => '1.0.0',
    'navigation' => [
        'header' => false,  // No aparece en header
        'footer' => false,  // No aparece en footer
    ],
],
```

## Comportamiento por Defecto

Si **NO** se especifica la configuración `navigation` en un módulo:

- **Todos los módulos** aparecen en header y footer por defecto
- **Excepción**: El módulo `faqs` solo aparece en footer por defecto (retrocompatibilidad)

## Casos de Uso Comunes

### Blog solo en Footer
```php
'blog' => [
    'active' => true,
    'navigation' => ['header' => false, 'footer' => true],
],
```

### FAQs solo en Footer
```php
'faqs' => [
    'active' => true,
    'navigation' => ['header' => false, 'footer' => true],
],
```

### Módulo Principal solo en Header
```php
'services' => [
    'active' => true,
    'navigation' => ['header' => true, 'footer' => false],
],
```

## Notas Importantes

1. **El módulo debe estar activo**: La configuración `navigation` solo tiene efecto si `'active' => true`

2. **Configuración en site.php**: Además de la configuración en `cd-system.php`, también puedes configurar el módulo en `config/site.php` dentro de `footer.navegacion_principal` para personalizar título, URL y orden

3. **Retrocompatibilidad**: Si un módulo no tiene configuración `navigation`, el sistema mantiene el comportamiento anterior (todos los módulos visibles excepto FAQs que solo aparecen en footer)

4. **Sin modificar código**: Esta configuración es completamente editable desde los archivos de configuración, sin necesidad de tocar código PHP

## Verificación

Para verificar que la configuración funciona:

1. Asegúrate de que el módulo tenga `'active' => true` en `cd-system.php`
2. Agrega o modifica la sección `navigation` según tus necesidades
3. Limpia la caché de configuración: `php artisan config:clear`
4. Verifica visualmente en el sitio que el módulo aparece/desaparece según la configuración

## Archivos Relacionados

- `config/cd-system.php` - Configuración de módulos y navegación
- `config/site.php` - Configuración de navegación del footer (`footer.navegacion_principal`)
- `app/helpers.php` - Función `get_dynamic_navigation()` que lee esta configuración



