Lewati ke konten
TubePress — gratis, self-hosted & aktif dikembangkan
Referensi pengembang

Referensi Theme API

Referensi Theme API TubePress: setiap variabel template global, fungsi helper dan kelas yang tersedia saat membangun atau menyesuaikan tema situs tube.

Halaman ini adalah referensi lengkap untuk semua yang dapat digunakan oleh sebuah tema: variabel global yang diinjeksikan ke setiap template, variabel yang spesifik untuk setiap template, dan kelas helper yang tersedia dalam kode tema. Jika Anda sedang membangun atau menyesuaikan tema, buka halaman ini bersama Pengembangan tema.

Setiap template dirender oleh ThemeRenderer::render($template, $data). Renderer menginjeksikan sekumpulan variabel dengan awalan $_, menggabungkan $data yang spesifik untuk template, menjalankan filter theme.template_data, menyangga template Anda ke dalam $content, lalu memuat layout.php.

Variabel global

Variabel-variabel ini tersedia di setiap template dan di layout.php.

Situs

VariabelTipeDeskripsi
$_templatestringNama template saat ini (mis. 'home', 'video')
$_siteNamestringNama situs dari pengaturan
$_siteDescriptionstringDeskripsi situs
$_siteUrlstringURL situs
$_videosPerRowintKolom grid (4, 5 atau 6)
$_userarray\|nullPengguna yang sedang login, atau null
$_footerPagesarrayHalaman statis yang ditandai untuk footer
$_registrationEnabledboolPengalih pendaftaran
$_ctrEnabledboolPengalih peringkat CTR

Tampilan

VariabelTipeDeskripsi
$_siteLogostringNama file logo (di /uploads/branding/)
$_siteFaviconstringNama file favicon
$_siteBackgroundstringNama file gambar latar belakang
$_siteBackgroundModestring'cover', 'contain' atau 'repeat'
$_colorOverridesstringBlok <style> dengan properti CSS kustom
$_menuSearchboolTampilkan bilah pencarian
$_menuItemsarrayItem navigasi (key, label, url, enabled, templates)

Lokal

VariabelTipeDeskripsi
$_localestringKode lokal saat ini (mis. 'en')
$_directionstring'ltr' atau 'rtl'
$_isRtlboolBahasa kanan-ke-kiri
$_availableLangsarrayBahasa yang tersedia
$_langPrefixstringAwalan URL (mis. '/fr' atau '')

Pengaturan kartu video

VariabelTipeDeskripsi
$_cardShowDurationboolTampilkan lencana durasi
$_cardShowTitleboolTampilkan judul video
$_cardMetaLeftstringMeta kiri: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringMeta kanan (opsi yang sama)
$_cardGridGapintCelah grid dalam piksel
$_cardBorderRadiusintRadius tepi kartu dalam piksel
$_cardThumbnailHoverboolEfek hover thumbnail
$_cardTitleLinesintBaris judul (1 atau 2)

Pengaturan halaman tonton

VariabelTipeDeskripsi
$_watchShowViewsboolTampilkan jumlah penayangan
$_watchShowDurationboolTampilkan durasi
$_watchShowDateboolTampilkan tanggal terbit
$_watchShowLikesboolTampilkan suka / tidak suka
$_watchShowFavoritesboolTampilkan tombol favorit
$_watchShowPornstarsboolTampilkan performer
$_watchShowChannelsboolTampilkan saluran
$_watchShowCategoriesboolTampilkan kategori
$_watchShowTagsboolTampilkan tag
$_commentsEnabledboolKomentar diaktifkan
Ini adalah pengaturan, bukan keajaiban. Setiap nilai $_card* dan $_watch* berasal langsung dari layar Tampilan admin, sehingga pemilik situs dapat mengubah gaya tema Anda tanpa menyentuh kode — asalkan Anda membaca variabel-variabel ini alih-alih menulis nilai langsung.

Variabel khusus template

Selain variabel global, setiap template menerima datanya sendiri.

home.php

VariabelTipe
$videosarray — baris video
$paginationObjek Pagination
$sortstring — kunci sortir saat ini

video.php

VariabelTipe
$videoarray — video lengkap beserta kategori, tag, performer, saluran
$categories, $tags, $performersarray
$commentsarray
$similararray — video serupa
$recommendedarray — video yang direkomendasikan
$userVotestring\|null — 'like', 'dislike' atau null
$isFavoritedbool

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

VariabelTipe
$category / $tag / $performer / $channelarray — entitas tersebut
$videosarray — baris video
$paginationObjek Pagination
$sortstring

Template daftar

TemplateVariabel penting
categories.php$categories — masing-masing memiliki video_count; dengan CTR aktif, best_video_thumbnail
performers.php$performersvideo_count; dengan CTR aktif, best_video_thumbnail, total_ctr, diurutkan berdasarkan CTR; $pagination
channels.phpBentuk yang sama seperti performers
search.php$query, $videos, $pagination

Kelas helper

Helper statis ini tersedia di setiap template.

KelasMetode utama
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 terjemahan
url($path)Pintasan untuk Router::url($path)

Alur rendering

  1. Pengontrol memanggil renderer. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. Variabel global diinjeksikan. Variabel situs, tampilan, lokal, dan kartu/tonton dengan awalan $_ ditambahkan.
  3. Plugin dapat mengubah data. HookSystem::applyFilter('theme.template_data', $data, $templateName) dijalankan.
  4. Template dirender. File template Anda disangga ke dalam $content.
  5. Layout dimuat. layout.php menerima $content beserta semua variabel.
  6. Impresi dikirim. ImpressionTracker::flush() mengirimkan pembaruan impresi yang dikelompokkan (CTR).
  7. Cron berjalan. CronManager::run() mengeksekusi tugas terjadwal yang sudah waktunya.

Persyaratan layout.php

layout.php tema harus melakukan semua hal berikut:

  1. Menghasilkan shell HTML lengkap (<!DOCTYPE html></html>).
  2. Menyertakan <?= ThemeRenderer::renderCSS() ?> di dalam <head>.
  3. Menyertakan <?= $_colorOverrides ?> di dalam <head>.
  4. Menampilkan $content di dalam <main>.
  5. Menyertakan <?= ThemeRenderer::renderJS() ?> sebelum </body>.
  6. Memanggil <?php ImpressionTracker::flush(); ?> sebelum </body> (untuk CTR).
  7. Memanggil <?php HookSystem::doAction('head.meta'); ?> di dalam <head>.
  8. Memanggil <?php HookSystem::doAction('footer.scripts'); ?> sebelum </body>.

Fallback template

Jika sebuah template tidak ada di tema aktif, TubePress akan kembali ke tema Simply bawaan. Tema kustom oleh karena itu hanya perlu mengganti template yang benar-benar ingin diubah — mulai dari satu template dan kembangkan dari sana.

Langkah selanjutnya

Masih kesulitan?

Buka tiket dari dasbor Anda dan tim kami akan membantu Anda.

Coba demo langsung → Unduh TubePress →