Contexte

Ce que contient le tableau $ctx

CleTypeUsage
title, subtitlestringTitre et sous-titre de la page.
activestringEntree de navigation active.
actionsstringBloc HTML d actions pre-rendu par le core.
flasharray|nullMessage flash eventuel.
userarray|nullUtilisateur courant.
theme_idstringIdentifiant du theme actif.
app_name, app_logo_letterstringIdentite de l instance.
navarrayNavigation deja filtree par permissions.

Dans une page surchargee, vous pouvez aussi recevoir page_id et data. Pour le dashboard, data contient aujourd hui le resume charge par le core.

API de theme

Template tags a privilegier

  • rui_current_user(), rui_can(), rui_can_restore()
  • rui_app_name(), rui_app_logo_letter(), rui_theme_id()
  • rui_nav(), rui_route(), rui_escape()
  • rui_part(), rui_slot(), rui_default_slot()
  • rui_dashboard_summary(), rui_list_repos(), rui_list_hosts(), rui_list_users()

Ces helpers sont exposes par src/ThemeTemplateTags.php. Ils constituent une surface plus stable que des appels directs a la base, a des managers internes ou a des objets non prevus pour les themes.

Bonnes pratiques

Composer un theme sans le rendre fragile

  • Favoriser une surcharge de part plutot qu une recopie complete de slot.
  • Utiliser rui_default_slot() pour enrober le rendu natif quand cela suffit.
  • Echapper les sorties dynamiques avec rui_escape() ou les helpers existants.
  • Eviter la logique metier et les acces directs a la couche interne depuis les templates du theme.
Traitez les classes internes comme une implementation du core, pas comme une API stable pour les themes. La meilleure defense contre les regressions reste de passer par le contexte et les template tags.