Vai al contenuto
TubePress — gratuito, self-hosted & attivamente mantenuto
Riferimento per sviluppatori

Riferimento Theme API

Riferimento Theme API di TubePress: ogni variabile globale di template, funzione helper e classe disponibile quando si crea o si personalizza un tema per tube site.

Questa pagina è il riferimento completo per tutto ciò che un tema può utilizzare: le variabili globali iniettate in ogni template, le variabili specifiche per ciascun template e le classi helper disponibili nel codice del tema. Se stai creando o personalizzando un tema, tieni questa pagina aperta insieme a Sviluppo del tema.

Ogni template è renderizzato da ThemeRenderer::render($template, $data). Il renderer inietta un insieme di variabili globali con prefisso $_, le unisce ai dati $data specifici del template, esegue il filtro theme.template_data, inserisce il tuo template in un buffer come $content, poi carica layout.php.

Variabili globali

Queste sono disponibili in ogni template e in layout.php.

Sito

VariabileTipoDescrizione
$_templatestringNome del template corrente (es. 'home', 'video')
$_siteNamestringNome del sito dalle impostazioni
$_siteDescriptionstringDescrizione del sito
$_siteUrlstringURL del sito
$_videosPerRowintColonne della griglia (4, 5 o 6)
$_userarray\|nullUtente autenticato, o null
$_footerPagesarrayPagine statiche contrassegnate per il footer
$_registrationEnabledboolInterruttore registrazione
$_ctrEnabledboolInterruttore classifica CTR

Aspetto

VariabileTipoDescrizione
$_siteLogostringNome file del logo (in /uploads/branding/)
$_siteFaviconstringNome file della favicon
$_siteBackgroundstringNome file dell'immagine di sfondo
$_siteBackgroundModestring'cover', 'contain' o 'repeat'
$_colorOverridesstringBlocco <style> con proprietà CSS personalizzate
$_menuSearchboolMostra la barra di ricerca
$_menuItemsarrayVoci di navigazione (key, label, url, enabled, templates)

Locale

VariabileTipoDescrizione
$_localestringCodice locale corrente (es. 'en')
$_directionstring'ltr' o 'rtl'
$_isRtlboolLingua da destra a sinistra
$_availableLangsarrayLingue disponibili
$_langPrefixstringPrefisso URL (es. '/fr' o '')

Impostazioni scheda video

VariabileTipoDescrizione
$_cardShowDurationboolMostra il badge durata
$_cardShowTitleboolMostra il titolo del video
$_cardMetaLeftstringMeta sinistra: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringMeta destra (stesse opzioni)
$_cardGridGapintSpaziatura della griglia in pixel
$_cardBorderRadiusintRaggio del bordo della scheda in pixel
$_cardThumbnailHoverboolEffetto hover sulla miniatura
$_cardTitleLinesintRighe del titolo (1 o 2)

Impostazioni pagina di visualizzazione

VariabileTipoDescrizione
$_watchShowViewsboolMostra il contatore visualizzazioni
$_watchShowDurationboolMostra la durata
$_watchShowDateboolMostra la data di pubblicazione
$_watchShowLikesboolMostra mi piace / non mi piace
$_watchShowFavoritesboolMostra il pulsante preferiti
$_watchShowPornstarsboolMostra i performer
$_watchShowChannelsboolMostra i canali
$_watchShowCategoriesboolMostra le categorie
$_watchShowTagsboolMostra i tag
$_commentsEnabledboolCommenti abilitati
Queste sono impostazioni, non magia. Ogni valore $_card* e $_watch* proviene direttamente dalla schermata Aspetto nell'amministrazione, così i proprietari del sito possono ridisegnare il tuo tema senza toccare il codice — purché tu legga queste variabili invece di inserire valori fissi.

Variabili specifiche per template

Oltre alle globali, ogni template riceve i propri dati.

home.php

VariabileTipo
$videosarray — righe video
$paginationoggetto Pagination
$sortstring — chiave di ordinamento corrente

video.php

VariabileTipo
$videoarray — video completo con categorie, tag, performer, canali
$categories, $tags, $performersarray
$commentsarray
$similararray — video simili
$recommendedarray — video consigliati
$userVotestring\|null — 'like', 'dislike' o null
$isFavoritedbool

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

VariabileTipo
$category / $tag / $performer / $channelarray — l'entità
$videosarray — righe video
$paginationoggetto Pagination
$sortstring

Template di elenco

TemplateVariabili principali
categories.php$categories — ciascuna ha video_count; con CTR attivo, best_video_thumbnail
performers.php$performersvideo_count; con CTR attivo, best_video_thumbnail, total_ctr, ordinati per CTR; $pagination
channels.phpStessa struttura dei performer
search.php$query, $videos, $pagination

Classi helper

Questi helper statici sono disponibili in ogni template.

ClasseMetodi principali
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)Helper di traduzione
url($path)Scorciatoia per Router::url($path)

Il flusso di rendering

  1. Il controller chiama il renderer. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. Le variabili globali vengono iniettate. Vengono aggiunte le variabili con prefisso $_ per sito, aspetto, locale e impostazioni scheda/visualizzazione.
  3. I plugin possono modificare i dati. Viene eseguito HookSystem::applyFilter('theme.template_data', $data, $templateName).
  4. Il template viene renderizzato. Il tuo file template viene inserito in un buffer come $content.
  5. Il layout viene caricato. layout.php riceve $content più tutte le variabili.
  6. Le impression vengono inviate. ImpressionTracker::flush() invia l'aggiornamento batch delle impression (CTR).
  7. Il cron viene eseguito. CronManager::run() esegue eventuali attività pianificate in scadenza.

Requisiti di layout.php

Il file layout.php di un tema deve fare tutto quanto segue:

  1. Produrre l'intera struttura HTML (<!DOCTYPE html></html>).
  2. Includere <?= ThemeRenderer::renderCSS() ?> in <head>.
  3. Includere <?= $_colorOverrides ?> in <head>.
  4. Stampare $content all'interno di <main>.
  5. Includere <?= ThemeRenderer::renderJS() ?> prima di </body>.
  6. Chiamare <?php ImpressionTracker::flush(); ?> prima di </body> (per CTR).
  7. Chiamare <?php HookSystem::doAction('head.meta'); ?> in <head>.
  8. Chiamare <?php HookSystem::doAction('footer.scripts'); ?> prima di </body>.

Fallback del template

Se un template è assente dal tema attivo, TubePress ricorre al tema Simply incluso. Un tema personalizzato deve quindi sovrascrivere solo i template che vuole effettivamente modificare — inizia da un template e aggiungi man mano.

Passaggi successivi

Ancora bloccato?

Apri un ticket dalla tua dashboard e il nostro team ti aiuterà.

Prova la demo live → Scarica TubePress →