- Add ArchiveHeader component (schema, renderer, formbuilder) - Add PostGrid component (schema, renderer, formbuilder) - Unify archive templates (home, archive, category, tag, author, date, search) - Add page visibility system with VisibilityDefaults - Register components in AdminDashboardRenderer - Fix boolean conversion in functions-addon.php - All 172 unit tests passed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
89 lines
2.8 KiB
PHP
89 lines
2.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace ROITheme\Shared\Domain\Constants;
|
|
|
|
/**
|
|
* Constantes de visibilidad por defecto para componentes
|
|
*
|
|
* Centraliza los valores por defecto para cumplir con DRY.
|
|
* Usado por:
|
|
* - EvaluatePageVisibilityUseCase (cuando no hay config en BD)
|
|
* - MigratePageVisibilityService (para crear registros iniciales)
|
|
*
|
|
* @package ROITheme\Shared\Domain\Constants
|
|
*/
|
|
final class VisibilityDefaults
|
|
{
|
|
/**
|
|
* Configuracion de visibilidad por defecto para componentes generales
|
|
*
|
|
* - Home: SI mostrar (pagina principal)
|
|
* - Posts: SI mostrar (articulos del blog)
|
|
* - Pages: SI mostrar (paginas estaticas)
|
|
* - Archives: NO mostrar (listados de categorias/tags)
|
|
* - Search: NO mostrar (resultados de busqueda)
|
|
*/
|
|
public const DEFAULT_VISIBILITY = [
|
|
'show_on_home' => 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<string, bool> Configuracion de visibilidad
|
|
*/
|
|
public static function getForComponent(string $componentName): array
|
|
{
|
|
return self::COMPONENT_VISIBILITY[$componentName] ?? self::DEFAULT_VISIBILITY;
|
|
}
|
|
}
|