Aller au contenu
TubePress — gratuit, auto-hébergé & activement maintenu
Référence développeur

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

VariableTypeDescription
$_templatestringNom du template actuel (ex. 'home', 'video')
$_siteNamestringNom du site issu des paramètres
$_siteDescriptionstringDescription du site
$_siteUrlstringURL du site
$_videosPerRowintColonnes de la grille (4, 5 ou 6)
$_userarray\|nullUtilisateur connecté, ou null
$_footerPagesarrayPages statiques affichées dans le pied de page
$_registrationEnabledboolActivation de l'inscription
$_ctrEnabledboolActivation du classement CTR

Apparence

VariableTypeDescription
$_siteLogostringNom du fichier logo (dans /uploads/branding/)
$_siteFaviconstringNom du fichier favicon
$_siteBackgroundstringNom du fichier d'image de fond
$_siteBackgroundModestring'cover', 'contain' ou 'repeat'
$_colorOverridesstringBloc <style> avec les propriétés CSS personnalisées
$_menuSearchboolAfficher la barre de recherche
$_menuItemsarrayÉléments de navigation (key, label, url, enabled, templates)

Locale

VariableTypeDescription
$_localestringCode de locale actuel (ex. 'en')
$_directionstring'ltr' ou 'rtl'
$_isRtlboolLangue de droite à gauche
$_availableLangsarrayLangues disponibles
$_langPrefixstringPréfixe d'URL (ex. '/fr' ou '')

Paramètres des cartes vidéo

VariableTypeDescription
$_cardShowDurationboolAfficher le badge de durée
$_cardShowTitleboolAfficher le titre de la vidéo
$_cardMetaLeftstringMéta gauche : 'views', 'likes', 'time', 'none'
$_cardMetaRightstringMéta droite (mêmes options)
$_cardGridGapintEspacement de la grille en pixels
$_cardBorderRadiusintRayon de bordure de la carte en pixels
$_cardThumbnailHoverboolEffet de survol de la vignette
$_cardTitleLinesintLignes du titre (1 ou 2)

Paramètres de la page de lecture

VariableTypeDescription
$_watchShowViewsboolAfficher le nombre de vues
$_watchShowDurationboolAfficher la durée
$_watchShowDateboolAfficher la date de publication
$_watchShowLikesboolAfficher les j'aime / je n'aime pas
$_watchShowFavoritesboolAfficher le bouton favori
$_watchShowPornstarsboolAfficher les acteurs
$_watchShowChannelsboolAfficher les chaînes
$_watchShowCategoriesboolAfficher les catégories
$_watchShowTagsboolAfficher les tags
$_commentsEnabledboolCommentaires 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.

Variables spécifiques aux templates

En plus des variables globales, chaque template reçoit ses propres données.

home.php

VariableType
$videosarray — lignes de vidéos
$paginationObjet Pagination
$sortstring — clé de tri actuelle

video.php

VariableType
$videoarray — vidéo complète avec catégories, tags, acteurs, chaînes
$categories, $tags, $performersarray
$commentsarray
$similararray — vidéos similaires
$recommendedarray — vidéos recommandées
$userVotestring\|null — 'like', 'dislike' ou null
$isFavoritedbool

category.php / tag.php / performer.php / channel.php

VariableType
$category / $tag / $performer / $channelarray — l'entité
$videosarray — lignes de vidéos
$paginationObjet Pagination
$sortstring

Templates de liste

TemplateVariables principales
categories.php$categories — chacune a video_count ; si CTR activé, best_video_thumbnail
performers.php$performersvideo_count ; si CTR activé, best_video_thumbnail, total_ctr, triés par CTR ; $pagination
channels.phpMême structure que performers
search.php$query, $videos, $pagination

Classes utilitaires

Ces utilitaires statiques sont disponibles dans chaque template.

ClasseMé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

  1. Le contrôleur appelle le renderer. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. 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.
  3. Les plugins peuvent modifier les données. HookSystem::applyFilter('theme.template_data', $data, $templateName) est exécuté.
  4. Le template est rendu. Votre fichier template est mis en buffer dans $content.
  5. Le layout est chargé. layout.php reçoit $content ainsi que toutes les variables.
  6. Les impressions sont envoyées. ImpressionTracker::flush() envoie la mise à jour groupée des impressions (CTR).
  7. 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 :

  1. Produire le squelette HTML complet (<!DOCTYPE html></html>).
  2. Inclure <?= ThemeRenderer::renderCSS() ?> dans <head>.
  3. Inclure <?= $_colorOverrides ?> dans <head>.
  4. Afficher $content dans <main>.
  5. Inclure <?= ThemeRenderer::renderJS() ?> avant </body>.
  6. Appeler <?php ImpressionTracker::flush(); ?> avant </body> (pour le CTR).
  7. Appeler <?php HookSystem::doAction('head.meta'); ?> dans <head>.
  8. 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.

Essayer la démo en direct → Télécharger TubePress →