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
| Variabel | Tipe | Deskripsi |
|---|---|---|
$_template | string | Nama template saat ini (mis. 'home', 'video') |
$_siteName | string | Nama situs dari pengaturan |
$_siteDescription | string | Deskripsi situs |
$_siteUrl | string | URL situs |
$_videosPerRow | int | Kolom grid (4, 5 atau 6) |
$_user | array\|null | Pengguna yang sedang login, atau null |
$_footerPages | array | Halaman statis yang ditandai untuk footer |
$_registrationEnabled | bool | Pengalih pendaftaran |
$_ctrEnabled | bool | Pengalih peringkat CTR |
Tampilan
| Variabel | Tipe | Deskripsi |
|---|---|---|
$_siteLogo | string | Nama file logo (di /uploads/branding/) |
$_siteFavicon | string | Nama file favicon |
$_siteBackground | string | Nama file gambar latar belakang |
$_siteBackgroundMode | string | 'cover', 'contain' atau 'repeat' |
$_colorOverrides | string | Blok <style> dengan properti CSS kustom |
$_menuSearch | bool | Tampilkan bilah pencarian |
$_menuItems | array | Item navigasi (key, label, url, enabled, templates) |
Lokal
| Variabel | Tipe | Deskripsi |
|---|---|---|
$_locale | string | Kode lokal saat ini (mis. 'en') |
$_direction | string | 'ltr' atau 'rtl' |
$_isRtl | bool | Bahasa kanan-ke-kiri |
$_availableLangs | array | Bahasa yang tersedia |
$_langPrefix | string | Awalan URL (mis. '/fr' atau '') |
Pengaturan kartu video
| Variabel | Tipe | Deskripsi |
|---|---|---|
$_cardShowDuration | bool | Tampilkan lencana durasi |
$_cardShowTitle | bool | Tampilkan judul video |
$_cardMetaLeft | string | Meta kiri: 'views', 'likes', 'time', 'none' |
$_cardMetaRight | string | Meta kanan (opsi yang sama) |
$_cardGridGap | int | Celah grid dalam piksel |
$_cardBorderRadius | int | Radius tepi kartu dalam piksel |
$_cardThumbnailHover | bool | Efek hover thumbnail |
$_cardTitleLines | int | Baris judul (1 atau 2) |
Pengaturan halaman tonton
| Variabel | Tipe | Deskripsi |
|---|---|---|
$_watchShowViews | bool | Tampilkan jumlah penayangan |
$_watchShowDuration | bool | Tampilkan durasi |
$_watchShowDate | bool | Tampilkan tanggal terbit |
$_watchShowLikes | bool | Tampilkan suka / tidak suka |
$_watchShowFavorites | bool | Tampilkan tombol favorit |
$_watchShowPornstars | bool | Tampilkan performer |
$_watchShowChannels | bool | Tampilkan saluran |
$_watchShowCategories | bool | Tampilkan kategori |
$_watchShowTags | bool | Tampilkan tag |
$_commentsEnabled | bool | Komentar diaktifkan |
$_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
| Variabel | Tipe |
|---|---|
$videos | array — baris video |
$pagination | Objek Pagination |
$sort | string — kunci sortir saat ini |
video.php
| Variabel | Tipe |
|---|---|
$video | array — video lengkap beserta kategori, tag, performer, saluran |
$categories, $tags, $performers | array |
$comments | array |
$similar | array — video serupa |
$recommended | array — video yang direkomendasikan |
$userVote | string\|null — 'like', 'dislike' atau null |
$isFavorited | bool |
category.php / tag.php / performer.php / channel.php
| Variabel | Tipe |
|---|---|
$category / $tag / $performer / $channel | array — entitas tersebut |
$videos | array — baris video |
$pagination | Objek Pagination |
$sort | string |
Template daftar
| Template | Variabel penting |
|---|---|
categories.php | $categories — masing-masing memiliki video_count; dengan CTR aktif, best_video_thumbnail |
performers.php | $performers — video_count; dengan CTR aktif, best_video_thumbnail, total_ctr, diurutkan berdasarkan CTR; $pagination |
channels.php | Bentuk yang sama seperti performers |
search.php | $query, $videos, $pagination |
Kelas helper
Helper statis ini tersedia di setiap template.
| Kelas | Metode 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
- Pengontrol memanggil renderer.
ThemeRenderer::render('home', ['videos' => $videos, …]). - Variabel global diinjeksikan. Variabel situs, tampilan, lokal, dan kartu/tonton dengan awalan
$_ditambahkan. - Plugin dapat mengubah data.
HookSystem::applyFilter('theme.template_data', $data, $templateName)dijalankan. - Template dirender. File template Anda disangga ke dalam
$content. - Layout dimuat.
layout.phpmenerima$contentbeserta semua variabel. - Impresi dikirim.
ImpressionTracker::flush()mengirimkan pembaruan impresi yang dikelompokkan (CTR). - Cron berjalan.
CronManager::run()mengeksekusi tugas terjadwal yang sudah waktunya.
Persyaratan layout.php
layout.php tema harus melakukan semua hal berikut:
- Menghasilkan shell HTML lengkap (
<!DOCTYPE html>…</html>). - Menyertakan
<?= ThemeRenderer::renderCSS() ?>di dalam<head>. - Menyertakan
<?= $_colorOverrides ?>di dalam<head>. - Menampilkan
$contentdi dalam<main>. - Menyertakan
<?= ThemeRenderer::renderJS() ?>sebelum</body>. - Memanggil
<?php ImpressionTracker::flush(); ?>sebelum</body>(untuk CTR). - Memanggil
<?php HookSystem::doAction('head.meta'); ?>di dalam<head>. - 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.