Référence de l’API de thème
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 |
$_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.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 |
category.php / tag.php / performer.php / channel.php
| Variable | Type |
|---|---|
$category / $tag / $performer / $channel | array — l'entité |
$videos | array — lignes de vidéos |
$pagination | Objet Pagination |
$sort | string |
Templates de liste
| Template | Variables principales |
|---|---|
categories.php | $categories — chacune a video_count ; si CTR activé, best_video_thumbnail |
performers.php | $performers — video_count ; si CTR activé, best_video_thumbnail, total_ctr, triés par CTR ; $pagination |
channels.php | Même structure que performers |
search.php | $query, $videos, $pagination |
Classes utilitaires
Ces utilitaires statiques sont disponibles dans chaque template.
| Classe | Méthodes principales |
|---|---|
ThemeRenderer | ::enqueueCSS($url, $priority), ::enqueueJS($url, $priority), ::partial($name, $data), ::bodyClass(), ::renderCSS(), ::renderJS() |
ThemeManager | ::assetUrl($path), ::themePath(), ::templatePath($t), ::active(), ::info($key) |
ImpressionTracker | ::collect($videoId), ::flush(), ::isBot() |
Format | ::number($n), ::duration($seconds), ::timeAgo($datetime), ::fileSize($bytes) |
Pagination | ->total, ->page, ->totalPages, ->offset, ->hasPrev(), ->hasNext(), ->pages(), ->prevUrl(), ->nextUrl() |
Router | ::url($path), ::csrfField(), ::csrfToken(), ::langPrefix() |
HookSystem | ::doAction($event, ...$args), ::applyFilter($filter, $value, ...$args) |
Auth | ::check(), ::user(), ::id() |
Setting | ::get($key, $default) |
__($key, $replacements) | Aide à la traduction |
url($path) | Raccourci pour Router::url($path) |
Flux de rendu
- 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.phpreçoit$contentainsi 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
$contentdans<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à.
Prochaines étapes
Toujours bloqué ?
Ouvrez un ticket depuis votre tableau de bord et notre équipe vous assistera.