Перейти к содержимому
TubePress — бесплатный, самостоятельный & активно поддерживаемый
Справочник разработчика

Справочник Theme API

Справочник Theme API TubePress: все глобальные переменные шаблонов, хелпер-функции и классы, доступные при создании или настройке темы тьюб-сайта.

Эта страница содержит полный справочник всего, что может использовать тема: глобальные переменные, внедряемые в каждый шаблон, переменные, специфичные для каждого шаблона, и вспомогательные классы, доступные в коде темы. Если вы создаёте или настраиваете тему, держите эту страницу открытой рядом с Разработкой темы.

Каждый шаблон рендерится через ThemeRenderer::render($template, $data). Рендерер внедряет набор глобальных переменных с префиксом $_, объединяет их с данными $data, специфичными для шаблона, запускает фильтр theme.template_data, буферизует ваш шаблон в $content, затем загружает layout.php.

Глобальные переменные

Они доступны в каждом шаблоне и в layout.php.

Сайт

ПеременнаяТипОписание
$_templatestringТекущее имя шаблона (например, 'home', 'video')
$_siteNamestringНазвание сайта из настроек
$_siteDescriptionstringОписание сайта
$_siteUrlstringURL сайта
$_videosPerRowintСтолбцы сетки (4, 5 или 6)
$_userarray\|nullАвторизованный пользователь или null
$_footerPagesarrayСтатические страницы, отмеченные для футера
$_registrationEnabledboolПереключатель регистрации
$_ctrEnabledboolПереключатель рейтинга CTR

Внешний вид

ПеременнаяТипОписание
$_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Язык с написанием справа налево
$_availableLangsarrayДоступные языки
$_langPrefixstringПрефикс URL (например, '/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 — строки видео
$paginationОбъект Pagination
$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 — строки видео
$paginationОбъект Pagination
$sortstring

Шаблоны списков

ШаблонОсновные переменные
categories.php$categories — каждая имеет video_count; при включённом CTR — best_video_thumbnail
performers.php$performersvideo_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)

Процесс рендеринга

  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. Включать <?= ThemeRenderer::renderCSS() ?> в <head>.
  3. Включать <?= $_colorOverrides ?> в <head>.
  4. Выводить $content внутри <main>.
  5. Включать <?= ThemeRenderer::renderJS() ?> перед </body>.
  6. Вызывать <?php ImpressionTracker::flush(); ?> перед </body> (для CTR).
  7. Вызывать <?php HookSystem::doAction('head.meta'); ?> в <head>.
  8. Вызывать <?php HookSystem::doAction('footer.scripts'); ?> перед </body>.

Запасной шаблон

Если шаблон отсутствует в активной теме, TubePress использует встроенную тему Simply. Пользовательская тема поэтому должна переопределять только те шаблоны, которые нужно изменить, — начните с одного шаблона и расширяйте по мере необходимости.

Следующие шаги

Остались вопросы?

Откройте заявку в панели управления, и наша команда поможет.

Попробовать демо → Скачать TubePress →