Theme-API-Referenz
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 |
$_menuSearch | bool | Suchleiste anzeigen |
$_menuItems | array | Navigationselemente (key, label, url, enabled, templates) |
Gebietsschema
| Variable | Typ | Beschreibung |
|---|---|---|
$_locale | string | Aktueller Gebietsschema-Code (z. B. 'en') |
$_direction | string | 'ltr' oder 'rtl' |
$_isRtl | bool | Rechts-nach-links-Sprache |
$_availableLangs | array | Verfügbare Sprachen |
$_langPrefix | string | URL-Präfix (z. B. '/fr' oder '') |
Videokarten-Einstellungen
| Variable | Typ | Beschreibung |
|---|---|---|
$_cardShowDuration | bool | Dauer-Badge anzeigen |
$_cardShowTitle | bool | Videotitel anzeigen |
$_cardMetaLeft | string | Linke Meta-Information: 'views', 'likes', 'time', 'none' |
$_cardMetaRight | string | Rechte Meta-Information (gleiche Optionen) |
$_cardGridGap | int | Rasterabstand in Pixeln |
$_cardBorderRadius | int | Kartenrahmenradius in Pixeln |
$_cardThumbnailHover | bool | Vorschaubild-Hover-Effekt |
$_cardTitleLines | int | Titelzeilen (1 oder 2) |
Einstellungen der Wiedergabeseite
| Variable | Typ | Beschreibung |
|---|---|---|
$_watchShowViews | bool | Aufrufzahl anzeigen |
$_watchShowDuration | bool | Dauer anzeigen |
$_watchShowDate | bool | Veröffentlichungsdatum anzeigen |
$_watchShowLikes | bool | Gefällt mir / Gefällt mir nicht anzeigen |
$_watchShowFavorites | bool | Favoritenbutton anzeigen |
$_watchShowPornstars | bool | Darsteller anzeigen |
$_watchShowChannels | bool | Kanäle anzeigen |
$_watchShowCategories | bool | Kategorien anzeigen |
$_watchShowTags | bool | Tags anzeigen |
$_commentsEnabled | bool | Kommentare aktiviert |
$_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.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 |
category.php / tag.php / performer.php / channel.php
| Variable | Typ |
|---|---|
$category / $tag / $performer / $channel | array — die Entität |
$videos | array — Videozeilen |
$pagination | Paginierungsobjekt |
$sort | string |
Auflistungsvorlagen
| Vorlage | Wichtige Variablen |
|---|---|
categories.php | $categories — jede hat video_count; bei aktiviertem CTR, best_video_thumbnail |
performers.php | $performers — video_count; bei aktiviertem CTR, best_video_thumbnail, total_ctr, nach CTR sortiert; $pagination |
channels.php | Gleiche Struktur wie performers |
search.php | $query, $videos, $pagination |
Hilfsklassen
Diese statischen Hilfsklassen sind in jeder Vorlage verfügbar.
| Klasse | Wichtige Methoden |
|---|---|
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) | Übersetzungshilfe |
url($path) | Abkürzung für Router::url($path) |
Der Rendering-Ablauf
- 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
$contentgepuffert. - Das Layout wird geladen.
layout.phperhält$contentplus 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.$contentinnerhalb 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.
Nächste Schritte
Noch Hilfe benötigt?
Erstellen Sie ein Ticket in Ihrem Dashboard und unser Team hilft Ihnen gerne weiter.