true, 'show_on_posts' => true, 'show_on_pages' => true, 'show_on_archives' => false, 'show_on_search' => false, ]; /** * Defaults especificos por componente (sobrescriben DEFAULT_VISIBILITY) * * Componentes de listados: * - archive-header: Solo en archives (home para blog title) * - post-grid: En home, archives y search * - cta-box-sidebar: Tambien en archives */ public const COMPONENT_VISIBILITY = [ 'archive-header' => [ 'show_on_home' => true, // Para mostrar blog_title 'show_on_posts' => false, 'show_on_pages' => false, 'show_on_archives' => true, // Proposito principal 'show_on_search' => true, // Mostrar "Resultados: X" ], 'post-grid' => [ 'show_on_home' => true, // Blog principal 'show_on_posts' => false, 'show_on_pages' => false, 'show_on_archives' => true, // Listados de categoria/tag 'show_on_search' => true, // Resultados de busqueda ], 'cta-box-sidebar' => [ 'show_on_home' => true, 'show_on_posts' => true, 'show_on_pages' => true, 'show_on_archives' => true, // Visible en archives 'show_on_search' => false, ], ]; /** * Lista de campos de visibilidad validos */ public const VISIBILITY_FIELDS = [ 'show_on_home', 'show_on_posts', 'show_on_pages', 'show_on_archives', 'show_on_search', ]; /** * Obtiene los defaults para un componente especifico * * @param string $componentName Nombre del componente (kebab-case) * @return array Configuracion de visibilidad */ public static function getForComponent(string $componentName): array { return self::COMPONENT_VISIBILITY[$componentName] ?? self::DEFAULT_VISIBILITY; } }