Classe Responsável por gerar a saída HTML dos menus de navegação do site. Usa cache em arquivo, empilhamento não recursivo e substituição dinâmica para itens de autenticação.
Menu::list()
```
Parâmetros:
$args array (opcional)
Argumentos de configuração do menu. Define nome, classes CSS e identificadores.
Retorno: void
Imprime o HTML do menu no formato de lista aninhada.
Exemplo de uso:
Menu::list([
'name' => 'principal',
'list_id' => 'nav',
'list_class' => 'menu',
]);
Argumentos padrão:
'name'stringPadrão:''Nome (slug) do menu.'list_id'string|nullPadrão:nullID do elemento<ul>principal.'list_class'stringPadrão:'menu'Classe CSS padrão da lista principal.'parent_item_class'stringPadrão:'hasub'Classe CSS aplicada a itens com submenu.'sublist_class'stringPadrão:'isub'Classe CSS para listas internas (submenus).
Menu::render_menu()
```
Parâmetros:
$items array
$args array
$depth int (opcional)
Empilha e monta a estrutura HTML de listas e sublistas com base na árvore de itens.
Retorno: string
Retorna o HTML do menu montado.
Menu::build_tree()
```
Parâmetros:
$items array
$root int (opcional)
Constrói a hierarquia dos itens do menu, agrupando filhos e pais.
Retorno: array
Estrutura hierárquica (em árvore) dos itens do menu.
Menu::get_menu_items()
```
Parâmetros:
$menu_name string
Nome (slug) do menu a ser consultado no banco.
Retorno: array
Lista de itens do menu obtidos do banco de dados, em formato plano.
Menu::render_auth_item()
```
Parâmetros:
$label string
Texto exibido no link de autenticação.
Retorno: string
HTML do item de autenticação (Login ou link do usuário logado).
Notas:
- O item de autenticação não é armazenado em cache, pois depende do status do usuário.
- A substituição é feita por leitura de {{AUTH_ITEM}} após a ou criação do cache.
Notas:
- A classe utiliza cache em arquivo via
OneCachepara evitar consultas ao banco. O cache é puramente estático, exceto pelo item de autenticação. - O método
render_menu()empilha a estrutura hierárquica, evitando recursão. Isso torna a renderização mais eficiente e previsível. - Menus são exibidos com 0 consultas após o primeiro carregamento, enquanto o cache estiver válido.
- Os seletores CSS padrão são:
.menupara o principal,.isubpara submenus e.hasubpara itens com filhos. - A classe pode ser usada tanto em temas quanto no painel, mas seu foco é a saída web pública.