コンテンツへスキップ
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ナビゲーション項目(key、label、url、enabled、templates)

ロケール

変数型説明
$_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* の値は管理者の外観設定画面から直接取得されます。そのため、ハードコーディングせずにこれらの変数を読み込む限り、サイトオーナーはコードに触れずにテーマのスタイルを変更できます。

コミュニティ

変数型説明
$_subscriptionsEnabledboolチャンネル登録が有効で、テーマが対応している
$_subscriptionsUnseenint前回の訪問以降にメンバーの登録チャンネルで公開された新着動画の数(ゲストは 0)
$_memberUploadsEnabledboolメンバーのアップロードが有効で、テーマが対応している
$_pwaEnabledboolインストール可能なアプリが有効

テンプレート固有の変数

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

home.php

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

video.php

変数型
$videoarray — カテゴリ、タグ、出演者、チャンネルを含む完全な動画データ
$categories、$tags、$performersarray
$commentsarray
$similararray — 類似動画
$recommendedarray — おすすめ動画
$userVotestring|null — 'like'、'dislike' または null
$isFavoritedbool
$subscriptionsOnbool — チャンネル登録ボタンを表示する(設定が有効かつテーマが対応)
$channelSubscribed, $channelSubscribersbool, int — 視聴者の登録状態と、動画の最初のチャンネルの登録者数
$ownerPreviewbool — アップロードした本人が未公開の自分の動画を見ている
$uploaderarray|null — 動画をアップロードしたメンバー

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

変数型
$category / $tag / $performer / $channelarray — エンティティ
$videosarray — 動画行
$paginationPagination オブジェクト
$sortstring
$subscriptionsOn, $isSubscribed, $subscriberCountbool, bool, int — channel.php のみ

一覧テンプレート

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

upload.php

変数型
$uploadGatearray — ok、またはメンバーがアップロードできない理由(無効、未ログイン、1 日の上限)
$uploadConfigarray — アップロードスクリプトに必要な情報:エンドポイント、CSRF トークン、サイズとチャンクの上限、対応形式
$uploadCategories, $uploadTypesarray — メンバーが選べるカテゴリーと動画タイプ
$uploadGuidelines, $uploadModeratedstring, bool — アップロードルールと、アップロードが審査されるかどうか

auth/profile.php

変数型
$subscriptionsTab, $uploadsTabbool — 登録チャンネルタブとアップロードした動画タブを表示する
$subChannels, $subVideos, $subNewSincearray, array, string|null — 登録チャンネル、その最新動画、新着バッジの基準日時
$uploadItemsarray — メンバーのアップロード(それぞれステータス付き)

ヘルパークラス

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

クラス主なメソッド
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 をダウンロード →