TubePress Theme-API-Referenz: jede globale Template-Variable, Helper-Funktion und Klasse, die beim Erstellen oder Anpassen eines Tube-Site-Themes zur Verfügung steht.
Diese Seite ist die vollständige Referenz für alles, was ein Theme verwenden kann: die globalen Variablen, die in jede Vorlage injiziert werden, die vorlagenspezifischen Variablen und die Hilfsklassen, die im Theme-Code verfügbar sind. Wenn Sie ein Theme erstellen oder anpassen, halten Sie diese Seite neben Theme-Entwicklung geöffnet.
Jede Vorlage wird von ThemeRenderer::render($template, $data) gerendert. Der Renderer injiziert eine Reihe globaler $_-präfixierter Variablen, führt die vorlagenspezifischen $data zusammen, führt den theme.template_data-Filter aus, puffert Ihre Vorlage in $content und lädt dann layout.php.
Globale Variablen
Diese sind in jeder Vorlage und in layout.php verfügbar.
Website
Variable
Typ
Beschreibung
$_template
string
Aktueller Vorlagenname (z. B. 'home', 'video')
$_siteName
string
Website-Name aus den Einstellungen
$_siteDescription
string
Website-Beschreibung
$_siteUrl
string
Website-URL
$_videosPerRow
int
Rasterspalten (4, 5 oder 6)
$_user
array|null
Eingeloggter Benutzer oder null
$_footerPages
array
Statische Seiten, die für die Fußzeile markiert sind
$_registrationEnabled
bool
Registrierungsschalter
$_ctrEnabled
bool
CTR-Ranking-Schalter
Erscheinungsbild
Variable
Typ
Beschreibung
$_siteLogo
string
Logo-Dateiname (in /uploads/branding/)
$_siteFavicon
string
Favicon-Dateiname
$_siteBackground
string
Hintergrundbild-Dateiname
$_siteBackgroundMode
string
'cover', 'contain' oder 'repeat'
$_colorOverrides
string
<style>-Block mit benutzerdefinierten CSS-Eigenschaften
Das sind Einstellungen, keine Magie. Jeder $_card*- und $_watch*-Wert kommt direkt vom Admin-Bildschirm Erscheinungsbild, sodass Website-Betreiber Ihr Theme neu gestalten können, ohne den Code anzufassen — solange Sie diese Variablen lesen, anstatt sie fest zu kodieren.
Community
Variable
Typ
Beschreibung
$_subscriptionsEnabled
bool
Kanal-Abos sind aktiviert und das Theme unterstützt sie
$_subscriptionsUnseen
int
Neue Videos aus den Kanälen des Mitglieds seit seinem letzten Besuch (0 für Gäste)
$_memberUploadsEnabled
bool
Mitglieder-Uploads sind aktiviert und das Theme unterstützt sie
$_pwaEnabled
bool
Die installierbare App ist aktiviert
Vorlagenspezifische Variablen
Zusätzlich zu den globalen Variablen erhält jede Vorlage ihre eigenen Daten.
home.php
Variable
Typ
$videos
array — Videozeilen
$pagination
Paginierungsobjekt
$sort
string — aktueller Sortierschlüssel
video.php
Variable
Typ
$video
array — vollständiges Video mit Kategorien, Tags, Darstellern, Kanälen
$categories, $tags, $performers
array
$comments
array
$similar
array — ähnliche Videos
$recommended
array — empfohlene Videos
$userVote
string|null — 'like', 'dislike' oder null
$isFavorited
bool
$subscriptionsOn
bool — den Abonnieren-Button anzeigen (Einstellung an und Theme-Unterstützung)
$channelSubscribed, $channelSubscribers
bool, int — Status des Betrachters und Abonnentenzahl des ersten Kanals des Videos
$ownerPreview
bool — der Uploader sieht sein eigenes, unveröffentlichtes Video
$uploader
array|null — das Mitglied, das das Video hochgeladen hat
Controller ruft den Renderer auf.ThemeRenderer::render('home', ['videos' => $videos, …]).
Globale Variablen werden injiziert. Die $_-präfixierten Website-, Erscheinungsbild-, Gebietsschema- und Karten-/Wiedergabevariablen werden hinzugefügt.
Plugins können die Daten ändern.HookSystem::applyFilter('theme.template_data', $data, $templateName) wird ausgeführt.
Die Vorlage wird gerendert. Ihre Vorlagendatei wird in $content gepuffert.
Das Layout wird geladen.layout.php erhält $content plus alle Variablen.
Impressionen werden übermittelt.ImpressionTracker::flush() sendet die gebündelte Impressionsaktualisierung (CTR).
Cron wird ausgeführt.CronManager::run() führt alle fälligen geplanten Aufgaben aus.
Anforderungen an layout.php
Die layout.php eines Themes muss alle folgenden Aufgaben erfüllen:
Die vollständige HTML-Hülle ausgeben (<!DOCTYPE html> … </html>).
<?= ThemeRenderer::renderCSS() ?> in <head> einbinden.
<?= $_colorOverrides ?> in <head> einbinden.
$content innerhalb von <main> ausgeben.
<?= ThemeRenderer::renderJS() ?> vor </body> einbinden.
<?php ImpressionTracker::flush(); ?> vor </body> aufrufen (für CTR).
<?php HookSystem::doAction('head.meta'); ?> in <head> aufrufen.
<?php HookSystem::doAction('footer.scripts'); ?> vor </body> aufrufen.
Vorlagen-Fallback
Wenn eine Vorlage im aktiven Theme fehlt, greift TubePress auf das mitgelieferte Simply-Theme zurück. Ein benutzerdefiniertes Theme muss daher nur die Vorlagen überschreiben, die es tatsächlich ändern möchte — beginnen Sie mit einer Vorlage und erweitern Sie schrittweise.