Zum Inhalt springen
TubePress — kostenlos, selbst gehostet & aktiv gepflegt
Entwicklerreferenz

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

VariableTypBeschreibung
$_templatestringAktueller Vorlagenname (z. B. 'home', 'video')
$_siteNamestringWebsite-Name aus den Einstellungen
$_siteDescriptionstringWebsite-Beschreibung
$_siteUrlstringWebsite-URL
$_videosPerRowintRasterspalten (4, 5 oder 6)
$_userarray\|nullEingeloggter Benutzer oder null
$_footerPagesarrayStatische Seiten, die für die Fußzeile markiert sind
$_registrationEnabledboolRegistrierungsschalter
$_ctrEnabledboolCTR-Ranking-Schalter

Erscheinungsbild

VariableTypBeschreibung
$_siteLogostringLogo-Dateiname (in /uploads/branding/)
$_siteFaviconstringFavicon-Dateiname
$_siteBackgroundstringHintergrundbild-Dateiname
$_siteBackgroundModestring'cover', 'contain' oder 'repeat'
$_colorOverridesstring<style>-Block mit benutzerdefinierten CSS-Eigenschaften
$_menuSearchboolSuchleiste anzeigen
$_menuItemsarrayNavigationselemente (key, label, url, enabled, templates)

Gebietsschema

VariableTypBeschreibung
$_localestringAktueller Gebietsschema-Code (z. B. 'en')
$_directionstring'ltr' oder 'rtl'
$_isRtlboolRechts-nach-links-Sprache
$_availableLangsarrayVerfügbare Sprachen
$_langPrefixstringURL-Präfix (z. B. '/fr' oder '')

Videokarten-Einstellungen

VariableTypBeschreibung
$_cardShowDurationboolDauer-Badge anzeigen
$_cardShowTitleboolVideotitel anzeigen
$_cardMetaLeftstringLinke Meta-Information: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringRechte Meta-Information (gleiche Optionen)
$_cardGridGapintRasterabstand in Pixeln
$_cardBorderRadiusintKartenrahmenradius in Pixeln
$_cardThumbnailHoverboolVorschaubild-Hover-Effekt
$_cardTitleLinesintTitelzeilen (1 oder 2)

Einstellungen der Wiedergabeseite

VariableTypBeschreibung
$_watchShowViewsboolAufrufzahl anzeigen
$_watchShowDurationboolDauer anzeigen
$_watchShowDateboolVeröffentlichungsdatum anzeigen
$_watchShowLikesboolGefällt mir / Gefällt mir nicht anzeigen
$_watchShowFavoritesboolFavoritenbutton anzeigen
$_watchShowPornstarsboolDarsteller anzeigen
$_watchShowChannelsboolKanäle anzeigen
$_watchShowCategoriesboolKategorien anzeigen
$_watchShowTagsboolTags anzeigen
$_commentsEnabledboolKommentare aktiviert
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.

Vorlagenspezifische Variablen

Zusätzlich zu den globalen Variablen erhält jede Vorlage ihre eigenen Daten.

home.php

VariableTyp
$videosarray — Videozeilen
$paginationPaginierungsobjekt
$sortstring — aktueller Sortierschlüssel

video.php

VariableTyp
$videoarray — vollständiges Video mit Kategorien, Tags, Darstellern, Kanälen
$categories, $tags, $performersarray
$commentsarray
$similararray — ähnliche Videos
$recommendedarray — empfohlene Videos
$userVotestring\|null — 'like', 'dislike' oder null
$isFavoritedbool

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

VariableTyp
$category / $tag / $performer / $channelarray — die Entität
$videosarray — Videozeilen
$paginationPaginierungsobjekt
$sortstring

Auflistungsvorlagen

VorlageWichtige Variablen
categories.php$categories — jede hat video_count; bei aktiviertem CTR, best_video_thumbnail
performers.php$performersvideo_count; bei aktiviertem CTR, best_video_thumbnail, total_ctr, nach CTR sortiert; $pagination
channels.phpGleiche Struktur wie performers
search.php$query, $videos, $pagination

Hilfsklassen

Diese statischen Hilfsklassen sind in jeder Vorlage verfügbar.

KlasseWichtige 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

  1. Controller ruft den Renderer auf. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. Globale Variablen werden injiziert. Die $_-präfixierten Website-, Erscheinungsbild-, Gebietsschema- und Karten-/Wiedergabevariablen werden hinzugefügt.
  3. Plugins können die Daten ändern. HookSystem::applyFilter('theme.template_data', $data, $templateName) wird ausgeführt.
  4. Die Vorlage wird gerendert. Ihre Vorlagendatei wird in $content gepuffert.
  5. Das Layout wird geladen. layout.php erhält $content plus alle Variablen.
  6. Impressionen werden übermittelt. ImpressionTracker::flush() sendet die gebündelte Impressionsaktualisierung (CTR).
  7. 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:

  1. Die vollständige HTML-Hülle ausgeben (<!DOCTYPE html></html>).
  2. <?= ThemeRenderer::renderCSS() ?> in <head> einbinden.
  3. <?= $_colorOverrides ?> in <head> einbinden.
  4. $content innerhalb von <main> ausgeben.
  5. <?= ThemeRenderer::renderJS() ?> vor </body> einbinden.
  6. <?php ImpressionTracker::flush(); ?> vor </body> aufrufen (für CTR).
  7. <?php HookSystem::doAction('head.meta'); ?> in <head> aufrufen.
  8. <?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.

Live-Demo ausprobieren → TubePress herunterladen →