Przejdź do treści
TubePress — bezpłatny, samodzielnie hostowany & aktywnie utrzymywany
Dokumentacja dla deweloperów

Dokumentacja API motywów

Dokumentacja API motywów TubePress: każda globalna zmienna szablonu, funkcja pomocnicza i klasa dostępna podczas budowania lub dostosowywania motywu strony tube.

Ta strona stanowi pełną dokumentację wszystkiego, czego motyw może używać: zmiennych globalnych wstrzykiwanych do każdego szablonu, zmiennych specyficznych dla poszczególnych szablonów oraz klas pomocniczych dostępnych w kodzie motywu. Jeśli tworzysz lub dostosowujesz motyw, trzymaj tę stronę otwartą obok Tworzenia motywów.

Każdy szablon jest renderowany przez ThemeRenderer::render($template, $data). Renderer wstrzykuje zestaw globalnych zmiennych z prefiksem $_, scala dane specyficzne dla szablonu $data, uruchamia filtr theme.template_data, buforuje szablon do zmiennej $content, a następnie ładuje layout.php.

Zmienne globalne

Są dostępne w każdym szablonie oraz w layout.php.

Witryna

ZmiennaTypOpis
$_templatestringNazwa bieżącego szablonu (np. 'home', 'video')
$_siteNamestringNazwa witryny z ustawień
$_siteDescriptionstringOpis witryny
$_siteUrlstringURL witryny
$_videosPerRowintKolumny siatki (4, 5 lub 6)
$_userarray\|nullZalogowany użytkownik lub null
$_footerPagesarrayStrony statyczne oznaczone dla stopki
$_registrationEnabledboolPrzełącznik rejestracji
$_ctrEnabledboolPrzełącznik rankingu CTR

Wygląd

ZmiennaTypOpis
$_siteLogostringNazwa pliku logo (w /uploads/branding/)
$_siteFaviconstringNazwa pliku favicon
$_siteBackgroundstringNazwa pliku obrazu tła
$_siteBackgroundModestring'cover', 'contain' lub 'repeat'
$_colorOverridesstringBlok <style> z niestandardowymi właściwościami CSS
$_menuSearchboolPokaż pasek wyszukiwania
$_menuItemsarrayElementy nawigacji (key, label, url, enabled, templates)

Ustawienia lokalne

ZmiennaTypOpis
$_localestringKod bieżących ustawień lokalnych (np. 'en')
$_directionstring'ltr' lub 'rtl'
$_isRtlboolJęzyk pisany od prawej do lewej
$_availableLangsarrayDostępne języki
$_langPrefixstringPrefiks URL (np. '/fr' lub '')

Ustawienia karty wideo

ZmiennaTypOpis
$_cardShowDurationboolPokaż znacznik czasu trwania
$_cardShowTitleboolPokaż tytuł wideo
$_cardMetaLeftstringLewe meta: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringPrawe meta (te same opcje)
$_cardGridGapintOdstęp siatki w pikselach
$_cardBorderRadiusintZaokrąglenie narożników karty w pikselach
$_cardThumbnailHoverboolEfekt najechania kursorem na miniaturę
$_cardTitleLinesintLinie tytułu (1 lub 2)

Ustawienia strony odtwarzania

ZmiennaTypOpis
$_watchShowViewsboolPokaż liczbę wyświetleń
$_watchShowDurationboolPokaż czas trwania
$_watchShowDateboolPokaż datę publikacji
$_watchShowLikesboolPokaż polubienie / niepolubienie
$_watchShowFavoritesboolPokaż przycisk ulubionych
$_watchShowPornstarsboolPokaż wykonawców
$_watchShowChannelsboolPokaż kanały
$_watchShowCategoriesboolPokaż kategorie
$_watchShowTagsboolPokaż tagi
$_commentsEnabledboolKomentarze włączone
To są ustawienia, nie magia. Każda wartość $_card* i $_watch* pochodzi bezpośrednio z ekranu Wygląd w panelu administracyjnym, dzięki czemu właściciele witryn mogą zmieniać styl motywu bez dotykania kodu — o ile odczytujesz te zmienne zamiast wpisywać wartości na stałe.

Zmienne specyficzne dla szablonu

Oprócz zmiennych globalnych każdy szablon otrzymuje własne dane.

home.php

ZmiennaTyp
$videosarray — wiersze wideo
$paginationobiekt Pagination
$sortstring — bieżący klucz sortowania

video.php

ZmiennaTyp
$videoarray — pełne wideo z kategoriami, tagami, wykonawcami i kanałami
$categories, $tags, $performersarray
$commentsarray
$similararray — podobne wideo
$recommendedarray — polecane wideo
$userVotestring\|null — 'like', 'dislike' lub null
$isFavoritedbool

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

ZmiennaTyp
$category / $tag / $performer / $channelarray — encja
$videosarray — wiersze wideo
$paginationobiekt Pagination
$sortstring

Szablony listowania

SzablonIstotne zmienne
categories.php$categories — każda ma video_count; przy włączonym CTR, best_video_thumbnail
performers.php$performersvideo_count; przy włączonym CTR, best_video_thumbnail, total_ctr, posortowane wg CTR; $pagination
channels.phpTa sama struktura co wykonawcy
search.php$query, $videos, $pagination

Klasy pomocnicze

Te statyczne klasy pomocnicze są dostępne w każdym szablonie.

KlasaKluczowe metody
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)Pomocnik tłumaczeń
url($path)Skrót dla Router::url($path)

Przebieg renderowania

  1. Kontroler wywołuje renderer. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. Zmienne globalne są wstrzykiwane. Dodawane są zmienne witryny, wyglądu, ustawień lokalnych oraz kart/odtwarzania z prefiksem $_.
  3. Wtyczki mogą modyfikować dane. Uruchamia się HookSystem::applyFilter('theme.template_data', $data, $templateName).
  4. Szablon jest renderowany. Plik szablonu jest buforowany do $content.
  5. Układ jest ładowany. layout.php otrzymuje $content oraz wszystkie zmienne.
  6. Wyświetlenia są opróżniane. ImpressionTracker::flush() wysyła zbiorcze aktualizacje wyświetleń (CTR).
  7. Cron jest uruchamiany. CronManager::run() wykonuje wszystkie zaplanowane zadania.

Wymagania layout.php

Plik layout.php motywu musi wykonać wszystkie poniższe czynności:

  1. Wyprowadzić pełną powłokę HTML (<!DOCTYPE html></html>).
  2. Dołączyć <?= ThemeRenderer::renderCSS() ?> w <head>.
  3. Dołączyć <?= $_colorOverrides ?> w <head>.
  4. Wyświetlić $content wewnątrz <main>.
  5. Dołączyć <?= ThemeRenderer::renderJS() ?> przed </body>.
  6. Wywołać <?php ImpressionTracker::flush(); ?> przed </body> (dla CTR).
  7. Wywołać <?php HookSystem::doAction('head.meta'); ?> w <head>.
  8. Wywołać <?php HookSystem::doAction('footer.scripts'); ?> przed </body>.

Zasoby zastępcze szablonu

Jeśli szablon nie istnieje w aktywnym motywie, TubePress używa jako zastępczego wbudowanego motywu Simply. Niestandardowy motyw musi zatem nadpisywać jedynie te szablony, które faktycznie chce zmienić — zacznij od jednego szablonu i rozwijaj go stopniowo.

Następne kroki

Nadal masz problem?

Otwórz zgłoszenie z poziomu panelu, a nasz zespół Ci pomoże.

Wypróbuj demo na żywo → Pobierz TubePress →