コンテンツへスキップ
TubePress — 無料・セルフホスト & 積極的メンテナンス
開発者リファレンス

テーマ API リファレンス

TubePress テーマ API リファレンス。チューブサイトのテーマを作成・カスタマイズする際に利用できる、すべてのグローバルテンプレート変数、ヘルパー関数、クラスを網羅します。

このページは、テーマが使用できるすべてのものの完全なリファレンスです:すべてのテンプレートに注入されるグローバル変数、各テンプレート固有の変数、そしてテーマコードで利用できるヘルパークラスを含みます。テーマを構築またはカスタマイズしている場合は、テーマ開発と並べてこのページを開いておいてください。

すべてのテンプレートは ThemeRenderer::render($template, $data) によってレンダリングされます。レンダラーはグローバルな $_ プレフィックス変数のセットを注入し、テンプレート固有の $data をマージし、theme.template_data フィルターを実行し、テンプレートを $content にバッファリングしてから layout.php を読み込みます。

グローバル変数

これらはすべてのテンプレートおよび layout.php で利用可能です。

サイト

変数説明
$_templatestring現在のテンプレート名(例:'home''video'
$_siteNamestring設定のサイト名
$_siteDescriptionstringサイトの説明
$_siteUrlstringサイトURL
$_videosPerRowintグリッド列数(4、5 または 6)
$_userarray\|nullログイン中のユーザー、または null
$_footerPagesarrayフッター用にフラグが立てられた静的ページ
$_registrationEnabledbool登録の切り替え
$_ctrEnabledboolCTR ランキングの切り替え

外観

変数説明
$_siteLogostringロゴファイル名(/uploads/branding/ 内)
$_siteFaviconstringファビコンファイル名
$_siteBackgroundstring背景画像ファイル名
$_siteBackgroundModestring'cover''contain' または 'repeat'
$_colorOverridesstring<style> ブロック(CSS カスタムプロパティ)
$_menuSearchbool検索バーを表示する
$_menuItemsarrayナビゲーション項目(keylabelurlenabledtemplates

ロケール

変数説明
$_localestring現在のロケールコード(例:'en'
$_directionstring'ltr' または 'rtl'
$_isRtlbool右から左の言語(RTL)
$_availableLangsarray利用可能な言語
$_langPrefixstringURL プレフィックス(例:'/fr' または ''

動画カード設定

変数説明
$_cardShowDurationbool再生時間バッジを表示する
$_cardShowTitlebool動画タイトルを表示する
$_cardMetaLeftstring左メタ:'views''likes''time''none'
$_cardMetaRightstring右メタ(同じオプション)
$_cardGridGapintグリッドのギャップ(ピクセル)
$_cardBorderRadiusintカードの角丸半径(ピクセル)
$_cardThumbnailHoverboolサムネイルのホバー効果
$_cardTitleLinesintタイトルの行数(1 または 2)

視聴ページ設定

変数説明
$_watchShowViewsbool再生回数を表示する
$_watchShowDurationbool再生時間を表示する
$_watchShowDatebool公開日を表示する
$_watchShowLikesboolいいね / 嫌いを表示する
$_watchShowFavoritesboolお気に入りボタンを表示する
$_watchShowPornstarsbool出演者を表示する
$_watchShowChannelsboolチャンネルを表示する
$_watchShowCategoriesboolカテゴリを表示する
$_watchShowTagsboolタグを表示する
$_commentsEnabledboolコメントが有効
これらは設定であり、魔法ではありません。 すべての $_card* および $_watch* の値は管理者の外観設定画面から直接取得されます。そのため、ハードコーディングせずにこれらの変数を読み込む限り、サイトオーナーはコードに触れずにテーマのスタイルを変更できます。

テンプレート固有の変数

グローバル変数に加えて、各テンプレートは独自のデータを受け取ります。

home.php

変数
$videosarray — 動画行
$paginationPagination オブジェクト
$sortstring — 現在のソートキー

video.php

変数
$videoarray — カテゴリ、タグ、出演者、チャンネルを含む完全な動画データ
$categories$tags$performersarray
$commentsarray
$similararray — 類似動画
$recommendedarray — おすすめ動画
$userVotestring\|null — 'like''dislike' または null
$isFavoritedbool

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

変数
$category / $tag / $performer / $channelarray — エンティティ
$videosarray — 動画行
$paginationPagination オブジェクト
$sortstring

一覧テンプレート

テンプレート主な変数
categories.php$categories — 各エントリに video_count があり、CTR が有効な場合は best_video_thumbnail も含む
performers.php$performersvideo_count;CTR が有効な場合は best_video_thumbnailtotal_ctr が含まれ、CTR 順にソートされる;$pagination
channels.phpperformers と同じ構造
search.php$query$videos$pagination

ヘルパークラス

これらの静的ヘルパーはすべてのテンプレートで利用できます。

クラス主なメソッド
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)翻訳ヘルパー
url($path)Router::url($path) のショートカット

レンダリングフロー

  1. コントローラーがレンダラーを呼び出します。 ThemeRenderer::render('home', ['videos' => $videos, …])
  2. グローバル変数が注入されます。 $_ プレフィックスのサイト、外観、ロケール、カード/ウォッチ変数が追加されます。
  3. プラグインはデータを変更できます。 HookSystem::applyFilter('theme.template_data', $data, $templateName) が実行されます。
  4. テンプレートがレンダリングされます。 テンプレートファイルが $content にバッファリングされます。
  5. レイアウトが読み込まれます。 layout.php$content とすべての変数を受け取ります。
  6. インプレッションがフラッシュされます。 ImpressionTracker::flush() がバッチ処理されたインプレッション更新(CTR)を送信します。
  7. Cron が実行されます。 CronManager::run() が期限となったスケジュールタスクを実行します。

layout.php の要件

テーマの layout.php は以下のすべてを実行する必要があります:

  1. 完全な HTML シェルを出力する(<!DOCTYPE html></html>)。
  2. <head> 内に <?= ThemeRenderer::renderCSS() ?> を含める。
  3. <head> 内に <?= $_colorOverrides ?> を含める。
  4. <main> 内で $content を出力する。
  5. </body> の前に <?= ThemeRenderer::renderJS() ?> を含める。
  6. </body> の前で <?php ImpressionTracker::flush(); ?> を呼び出す(CTR 用)。
  7. <head> 内で <?php HookSystem::doAction('head.meta'); ?> を呼び出す。
  8. </body> の前で <?php HookSystem::doAction('footer.scripts'); ?> を呼び出す。

テンプレートフォールバック

アクティブなテーマにテンプレートが存在しない場合、TubePress はバンドルされた Simply テーマにフォールバックします。したがって、カスタムテーマは実際に変更したいテンプレートのみを上書きすれば十分です — 1つのテンプレートから始めて徐々に拡張していきましょう。

次のステップ

まだお困りですか?

ダッシュボードからチケットを送信してください。サポートチームがお手伝いします。

ライブデモを試す → TubePress をダウンロード →