Référence de l’API de thème TubePress : toutes les variables de template globales, fonctions helper et classes disponibles pour créer ou personnaliser un thème de site tube.
Cette page est la référence complète de tout ce qu'un thème peut utiliser : les variables globales injectées dans chaque template, les variables spécifiques à chaque template, et les classes utilitaires disponibles dans le code du thème. Si vous créez ou personnalisez un thème, gardez cette page ouverte en parallèle avec Développement de thème.
Chaque template est rendu par ThemeRenderer::render($template, $data). Le renderer injecte un ensemble de variables globales préfixées par $_, fusionne les données $data spécifiques au template, exécute le filtre theme.template_data, met en buffer votre template dans $content, puis charge layout.php.
Variables globales
Celles-ci sont disponibles dans chaque template et dans layout.php.
Site
Variable
Type
Description
$_template
string
Nom du template actuel (ex. 'home', 'video')
$_siteName
string
Nom du site issu des paramètres
$_siteDescription
string
Description du site
$_siteUrl
string
URL du site
$_videosPerRow
int
Colonnes de la grille (4, 5 ou 6)
$_user
array|null
Utilisateur connecté, ou null
$_footerPages
array
Pages statiques affichées dans le pied de page
$_registrationEnabled
bool
Activation de l'inscription
$_ctrEnabled
bool
Activation du classement CTR
Apparence
Variable
Type
Description
$_siteLogo
string
Nom du fichier logo (dans /uploads/branding/)
$_siteFavicon
string
Nom du fichier favicon
$_siteBackground
string
Nom du fichier d'image de fond
$_siteBackgroundMode
string
'cover', 'contain' ou 'repeat'
$_colorOverrides
string
Bloc <style> avec les propriétés CSS personnalisées
$_menuSearch
bool
Afficher la barre de recherche
$_menuItems
array
Éléments de navigation (key, label, url, enabled, templates)
Locale
Variable
Type
Description
$_locale
string
Code de locale actuel (ex. 'en')
$_direction
string
'ltr' ou 'rtl'
$_isRtl
bool
Langue de droite à gauche
$_availableLangs
array
Langues disponibles
$_langPrefix
string
Préfixe d'URL (ex. '/fr' ou '')
Paramètres des cartes vidéo
Variable
Type
Description
$_cardShowDuration
bool
Afficher le badge de durée
$_cardShowTitle
bool
Afficher le titre de la vidéo
$_cardMetaLeft
string
Méta gauche : 'views', 'likes', 'time', 'none'
$_cardMetaRight
string
Méta droite (mêmes options)
$_cardGridGap
int
Espacement de la grille en pixels
$_cardBorderRadius
int
Rayon de bordure de la carte en pixels
$_cardThumbnailHover
bool
Effet de survol de la vignette
$_cardTitleLines
int
Lignes du titre (1 ou 2)
Paramètres de la page de lecture
Variable
Type
Description
$_watchShowViews
bool
Afficher le nombre de vues
$_watchShowDuration
bool
Afficher la durée
$_watchShowDate
bool
Afficher la date de publication
$_watchShowLikes
bool
Afficher les j'aime / je n'aime pas
$_watchShowFavorites
bool
Afficher le bouton favori
$_watchShowPornstars
bool
Afficher les acteurs
$_watchShowChannels
bool
Afficher les chaînes
$_watchShowCategories
bool
Afficher les catégories
$_watchShowTags
bool
Afficher les tags
$_commentsEnabled
bool
Commentaires activés
Ce sont des paramètres, pas de la magie. Chaque valeur $_card* et $_watch* provient directement de l'écran admin Apparence, ce qui permet aux propriétaires de site de re-styliser votre thème sans toucher au code — à condition que vous lisiez ces variables plutôt que de les coder en dur.
Communauté
Variable
Type
Description
$_subscriptionsEnabled
bool
Les abonnements aux chaînes sont activés et le thème les prend en charge
$_subscriptionsUnseen
int
Nouvelles vidéos des chaînes du membre depuis sa dernière visite (0 pour les invités)
$_memberUploadsEnabled
bool
La mise en ligne par les membres est activée et le thème la prend en charge
$_pwaEnabled
bool
L’application installable est activée
Variables spécifiques aux templates
En plus des variables globales, chaque template reçoit ses propres données.
home.php
Variable
Type
$videos
array — lignes de vidéos
$pagination
Objet Pagination
$sort
string — clé de tri actuelle
video.php
Variable
Type
$video
array — vidéo complète avec catégories, tags, acteurs, chaînes
$categories, $tags, $performers
array
$comments
array
$similar
array — vidéos similaires
$recommended
array — vidéos recommandées
$userVote
string|null — 'like', 'dislike' ou null
$isFavorited
bool
$subscriptionsOn
bool — afficher le bouton S’abonner (réglage activé et thème compatible)
$channelSubscribed, $channelSubscribers
bool, int — l’état du visiteur et le nombre d’abonnés de la première chaîne de la vidéo
$ownerPreview
bool — l’auteur consulte sa propre vidéo non publiée
Le contrôleur appelle le renderer.ThemeRenderer::render('home', ['videos' => $videos, …]).
Les variables globales sont injectées. Les variables de site, d'apparence, de locale et de carte/lecture préfixées par $_ sont ajoutées.
Les plugins peuvent modifier les données.HookSystem::applyFilter('theme.template_data', $data, $templateName) est exécuté.
Le template est rendu. Votre fichier template est mis en buffer dans $content.
Le layout est chargé.layout.php reçoit $content ainsi que toutes les variables.
Les impressions sont envoyées.ImpressionTracker::flush() envoie la mise à jour groupée des impressions (CTR).
Le cron s'exécute.CronManager::run() exécute les tâches planifiées échues.
Exigences de layout.php
Le fichier layout.php d'un thème doit réaliser tout ce qui suit :
Produire le squelette HTML complet (<!DOCTYPE html> … </html>).
Inclure <?= ThemeRenderer::renderCSS() ?> dans <head>.
Inclure <?= $_colorOverrides ?> dans <head>.
Afficher $content dans <main>.
Inclure <?= ThemeRenderer::renderJS() ?> avant </body>.
Appeler <?php ImpressionTracker::flush(); ?> avant </body> (pour le CTR).
Appeler <?php HookSystem::doAction('head.meta'); ?> dans <head>.
Appeler <?php HookSystem::doAction('footer.scripts'); ?> avant </body>.
Repli de template
Si un template est absent du thème actif, TubePress se replie sur le thème Simply fourni par défaut. Un thème personnalisé n'a donc besoin de remplacer que les templates qu'il souhaite modifier — commencez par un seul template et développez à partir de là.