Справочник Theme API
Справочник Theme API TubePress: все глобальные переменные шаблонов, хелпер-функции и классы, доступные при создании или настройке темы тьюб-сайта.
Эта страница содержит полный справочник всего, что может использовать тема: глобальные переменные, внедряемые в каждый шаблон, переменные, специфичные для каждого шаблона, и вспомогательные классы, доступные в коде темы. Если вы создаёте или настраиваете тему, держите эту страницу открытой рядом с Разработкой темы.
Каждый шаблон рендерится через ThemeRenderer::render($template, $data). Рендерер внедряет набор глобальных переменных с префиксом $_, объединяет их с данными $data, специфичными для шаблона, запускает фильтр theme.template_data, буферизует ваш шаблон в $content, затем загружает layout.php.
Глобальные переменные
Они доступны в каждом шаблоне и в layout.php.
Сайт
| Переменная | Тип | Описание |
|---|---|---|
$_template | string | Текущее имя шаблона (например, 'home', 'video') |
$_siteName | string | Название сайта из настроек |
$_siteDescription | string | Описание сайта |
$_siteUrl | string | URL сайта |
$_videosPerRow | int | Столбцы сетки (4, 5 или 6) |
$_user | array\|null | Авторизованный пользователь или null |
$_footerPages | array | Статические страницы, отмеченные для футера |
$_registrationEnabled | bool | Переключатель регистрации |
$_ctrEnabled | bool | Переключатель рейтинга CTR |
Внешний вид
| Переменная | Тип | Описание |
|---|---|---|
$_siteLogo | string | Имя файла логотипа (в /uploads/branding/) |
$_siteFavicon | string | Имя файла фавикона |
$_siteBackground | string | Имя файла фонового изображения |
$_siteBackgroundMode | string | 'cover', 'contain' или 'repeat' |
$_colorOverrides | string | Блок <style> с CSS-переменными |
$_menuSearch | bool | Показывать строку поиска |
$_menuItems | array | Элементы навигации (key, label, url, enabled, templates) |
Локаль
| Переменная | Тип | Описание |
|---|---|---|
$_locale | string | Текущий код локали (например, 'en') |
$_direction | string | 'ltr' или 'rtl' |
$_isRtl | bool | Язык с написанием справа налево |
$_availableLangs | array | Доступные языки |
$_langPrefix | string | Префикс URL (например, '/fr' или '') |
Настройки карточки видео
| Переменная | Тип | Описание |
|---|---|---|
$_cardShowDuration | bool | Показывать значок длительности |
$_cardShowTitle | bool | Показывать название видео |
$_cardMetaLeft | string | Левая мета: 'views', 'likes', 'time', 'none' |
$_cardMetaRight | string | Правая мета (те же варианты) |
$_cardGridGap | int | Отступ сетки в пикселях |
$_cardBorderRadius | int | Радиус скругления карточки в пикселях |
$_cardThumbnailHover | bool | Эффект при наведении на миниатюру |
$_cardTitleLines | int | Строки заголовка (1 или 2) |
Настройки страницы просмотра
| Переменная | Тип | Описание |
|---|---|---|
$_watchShowViews | bool | Показывать количество просмотров |
$_watchShowDuration | bool | Показывать длительность |
$_watchShowDate | bool | Показывать дату публикации |
$_watchShowLikes | bool | Показывать лайк / дизлайк |
$_watchShowFavorites | bool | Показывать кнопку «В избранное» |
$_watchShowPornstars | bool | Показывать исполнителей |
$_watchShowChannels | bool | Показывать каналы |
$_watchShowCategories | bool | Показывать категории |
$_watchShowTags | bool | Показывать теги |
$_commentsEnabled | bool | Комментарии включены |
$_card* и $_watch* берётся непосредственно из экрана администратора Внешний вид, поэтому владельцы сайта могут изменить стиль вашей темы, не трогая код, — при условии, что вы используете эти переменные вместо жёстко заданных значений.Переменные, специфичные для шаблонов
В дополнение к глобальным переменным каждый шаблон получает собственные данные.
home.php
| Переменная | Тип |
|---|---|
$videos | array — строки видео |
$pagination | Объект Pagination |
$sort | string — текущий ключ сортировки |
video.php
| Переменная | Тип |
|---|---|
$video | array — полное видео с категориями, тегами, исполнителями и каналами |
$categories, $tags, $performers | array |
$comments | array |
$similar | array — похожие видео |
$recommended | array — рекомендуемые видео |
$userVote | string\|null — 'like', 'dislike' или null |
$isFavorited | bool |
category.php / tag.php / performer.php / channel.php
| Переменная | Тип |
|---|---|
$category / $tag / $performer / $channel | array — сущность |
$videos | array — строки видео |
$pagination | Объект Pagination |
$sort | string |
Шаблоны списков
| Шаблон | Основные переменные |
|---|---|
categories.php | $categories — каждая имеет video_count; при включённом CTR — best_video_thumbnail |
performers.php | $performers — video_count; при включённом CTR — best_video_thumbnail, total_ctr, сортировка по CTR; $pagination |
channels.php | Та же структура, что у performers |
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) |
Процесс рендеринга
- Контроллер вызывает рендерер.
ThemeRenderer::render('home', ['videos' => $videos, …]). - Внедряются глобальные переменные. Добавляются переменные с префиксом
$_для сайта, внешнего вида, локали и настроек карточек/просмотра. - Плагины могут изменять данные.
HookSystem::applyFilter('theme.template_data', $data, $templateName)запускается. - Шаблон рендерится. Файл вашего шаблона буферизуется в
$content. - Загружается макет.
layout.phpполучает$contentи все переменные. - Сбрасываются показы.
ImpressionTracker::flush()отправляет пакетное обновление показов (CTR). - Запускается cron.
CronManager::run()выполняет все запланированные задачи.
Требования к layout.php
Файл layout.php темы должен выполнять всё перечисленное ниже:
- Выводить полную HTML-оболочку (
<!DOCTYPE html>…</html>). - Включать
<?= ThemeRenderer::renderCSS() ?>в<head>. - Включать
<?= $_colorOverrides ?>в<head>. - Выводить
$contentвнутри<main>. - Включать
<?= ThemeRenderer::renderJS() ?>перед</body>. - Вызывать
<?php ImpressionTracker::flush(); ?>перед</body>(для CTR). - Вызывать
<?php HookSystem::doAction('head.meta'); ?>в<head>. - Вызывать
<?php HookSystem::doAction('footer.scripts'); ?>перед</body>.
Запасной шаблон
Если шаблон отсутствует в активной теме, TubePress использует встроенную тему Simply. Пользовательская тема поэтому должна переопределять только те шаблоны, которые нужно изменить, — начните с одного шаблона и расширяйте по мере необходимости.
Следующие шаги
Остались вопросы?
Откройте заявку в панели управления, и наша команда поможет.