Ga naar inhoud
TubePress — gratis, zelf gehost & actief onderhouden
Ontwikkelaarsreferentie

Theme API-referentie

TubePress Theme API-referentie: elke globale templatevariabele, helperfunctie en klasse die beschikbaar is bij het bouwen of aanpassen van een tubesite-thema.

Deze pagina is de volledige naslaggids voor alles wat een thema kan gebruiken: de globale variabelen die in elk sjabloon worden ingevoegd, de variabelen die specifiek zijn voor elk sjabloon, en de hulpklassen die beschikbaar zijn in themacode. Als u een thema bouwt of aanpast, houd deze pagina dan open naast Thema-ontwikkeling.

Elk sjabloon wordt gerenderd door ThemeRenderer::render($template, $data). De renderer voegt een reeks globale $_-voorafgegane variabelen in, voegt de sjabloonspecifieke $data samen, voert het filter theme.template_data uit, buffert uw sjabloon in $content en laadt vervolgens layout.php.

Globale variabelen

Deze zijn beschikbaar in elk sjabloon en in layout.php.

Site

VariabeleTypeBeschrijving
$_templatestringHuidige sjabloonnaam (bijv. 'home', 'video')
$_siteNamestringSitenaam uit instellingen
$_siteDescriptionstringSitebeschrijving
$_siteUrlstringSite-URL
$_videosPerRowintRasterkolommen (4, 5 of 6)
$_userarray\|nullIngelogde gebruiker, of null
$_footerPagesarrayStatische pagina's gemarkeerd voor de voettekst
$_registrationEnabledboolRegistratie aan/uit
$_ctrEnabledboolCTR-rangschikking aan/uit

Uiterlijk

VariabeleTypeBeschrijving
$_siteLogostringBestandsnaam van het logo (in /uploads/branding/)
$_siteFaviconstringBestandsnaam van het favicon
$_siteBackgroundstringBestandsnaam van de achtergrondafbeelding
$_siteBackgroundModestring'cover', 'contain' of 'repeat'
$_colorOverridesstring<style>-blok met CSS-aangepaste eigenschappen
$_menuSearchboolToon de zoekbalk
$_menuItemsarrayNavigatie-items (key, label, url, enabled, templates)

Lokalisatie

VariabeleTypeBeschrijving
$_localestringHuidige landinstelling (bijv. 'en')
$_directionstring'ltr' of 'rtl'
$_isRtlboolRechts-naar-links taal
$_availableLangsarrayBeschikbare talen
$_langPrefixstringURL-prefix (bijv. '/fr' of '')

Videokaartinstellingen

VariabeleTypeBeschrijving
$_cardShowDurationboolToon de duurmarkering
$_cardShowTitleboolToon de videotitel
$_cardMetaLeftstringLinker meta: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringRechter meta (dezelfde opties)
$_cardGridGapintRasterafstand in pixels
$_cardBorderRadiusintKaartrondingsstraal in pixels
$_cardThumbnailHoverboolMiniatuurhover-effect
$_cardTitleLinesintTitelregels (1 of 2)

Bekijkpagina-instellingen

VariabeleTypeBeschrijving
$_watchShowViewsboolToon het aantal weergaven
$_watchShowDurationboolToon de duur
$_watchShowDateboolToon de publicatiedatum
$_watchShowLikesboolToon vind ik leuk / vind ik niet leuk
$_watchShowFavoritesboolToon de favorietenknop
$_watchShowPornstarsboolToon uitvoerders
$_watchShowChannelsboolToon kanalen
$_watchShowCategoriesboolToon categorieën
$_watchShowTagsboolToon tags
$_commentsEnabledboolReacties ingeschakeld
Dit zijn instellingen, geen magie. Elke $_card*- en $_watch*-waarde komt rechtstreeks van het Uiterlijk-scherm voor beheerders, zodat site-eigenaren uw thema kunnen herstylen zonder code aan te raken — zolang u deze variabelen leest in plaats van hardcoderen.

Sjabloonspecifieke variabelen

Naast de globale variabelen ontvangt elk sjabloon zijn eigen data.

home.php

VariabeleType
$videosarray — videorijen
$paginationPaginatie-object
$sortstring — huidige sorteersleutel

video.php

VariabeleType
$videoarray — volledige video met categorieën, tags, uitvoerders, kanalen
$categories, $tags, $performersarray
$commentsarray
$similararray — vergelijkbare video's
$recommendedarray — aanbevolen video's
$userVotestring\|null — 'like', 'dislike' of null
$isFavoritedbool

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

VariabeleType
$category / $tag / $performer / $channelarray — de entiteit
$videosarray — videorijen
$paginationPaginatie-object
$sortstring

Lijstsjablonen

SjabloonVoornaamste variabelen
categories.php$categories — elk heeft video_count; met CTR ingeschakeld, best_video_thumbnail
performers.php$performersvideo_count; met CTR ingeschakeld, best_video_thumbnail, total_ctr, gesorteerd op CTR; $pagination
channels.phpZelfde structuur als uitvoerders
search.php$query, $videos, $pagination

Hulpklassen

Deze statische hulpfuncties zijn beschikbaar in elk sjabloon.

KlasseVoornaamste 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)Vertaalhulp
url($path)Snelkoppeling voor Router::url($path)

De renderingsstroom

  1. Controller roept de renderer aan. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. Globale variabelen worden ingevoegd. De $_-voorafgegane site-, uiterlijk-, lokalisatie- en kaart/bekijk-variabelen worden toegevoegd.
  3. Plugins kunnen de data wijzigen. HookSystem::applyFilter('theme.template_data', $data, $templateName) wordt uitgevoerd.
  4. Het sjabloon wordt gerenderd. Uw sjabloonbestand wordt gebufferd in $content.
  5. De lay-out wordt geladen. layout.php ontvangt $content plus alle variabelen.
  6. Vertoningen worden geflusht. ImpressionTracker::flush() verzendt de gebundelde vertoningsupdate (CTR).
  7. Cron wordt uitgevoerd. CronManager::run() voert alle geplande taken uit die aan de beurt zijn.

Vereisten voor layout.php

De layout.php van een thema moet al het volgende doen:

  1. Voer de volledige HTML-shell uit (<!DOCTYPE html></html>).
  2. Voeg <?= ThemeRenderer::renderCSS() ?> toe in <head>.
  3. Voeg <?= $_colorOverrides ?> toe in <head>.
  4. Echo $content in <main>.
  5. Voeg <?= ThemeRenderer::renderJS() ?> toe voor </body>.
  6. Roep <?php ImpressionTracker::flush(); ?> aan voor </body> (voor CTR).
  7. Roep <?php HookSystem::doAction('head.meta'); ?> aan in <head>.
  8. Roep <?php HookSystem::doAction('footer.scripts'); ?> aan voor </body>.

Sjabloonfallback

Als een sjabloon ontbreekt in het actieve thema, valt TubePress terug op het meegeleverde Simply-thema. Een aangepast thema hoeft daarom alleen de sjablonen te overschrijven die het daadwerkelijk wil wijzigen — begin met één sjabloon en bouw van daaruit uit.

Volgende stappen

Nog vastgelopen?

Open een ticket vanuit uw dashboard en ons team helpt u verder.

Probeer de live demo → TubePress downloaden →