Ir para o conteúdo
TubePress — gratuito, auto-hospedado & ativamente mantido
Referência para desenvolvedores

Referência da API de temas

Referência da API de temas do TubePress: todas as variáveis globais de template, funções helper e classes disponíveis ao criar ou personalizar um tema de site de vídeos.

Esta página é a referência completa de tudo que um tema pode usar: as variáveis globais injetadas em cada template, as variáveis específicas de cada template e as classes auxiliares disponíveis no código do tema. Se você está criando ou personalizando um tema, mantenha esta página aberta ao lado de Desenvolvimento de temas.

Cada template é renderizado por ThemeRenderer::render($template, $data). O renderizador injeta um conjunto de variáveis globais com prefixo $_, mescla os dados específicos do template $data, executa o filtro theme.template_data, armazena em buffer seu template em $content e, em seguida, carrega layout.php.

Variáveis globais

Estas estão disponíveis em todos os templates e em layout.php.

Site

VariávelTipoDescrição
$_templatestringNome do template atual (ex.: 'home', 'video')
$_siteNamestringNome do site nas configurações
$_siteDescriptionstringDescrição do site
$_siteUrlstringURL do site
$_videosPerRowintColunas da grade (4, 5 ou 6)
$_userarray\|nullUsuário conectado ou null
$_footerPagesarrayPáginas estáticas marcadas para o rodapé
$_registrationEnabledboolAlternância de registro
$_ctrEnabledboolAlternância de classificação CTR

Aparência

VariávelTipoDescrição
$_siteLogostringNome do arquivo do logotipo (em /uploads/branding/)
$_siteFaviconstringNome do arquivo do favicon
$_siteBackgroundstringNome do arquivo da imagem de fundo
$_siteBackgroundModestring'cover', 'contain' ou 'repeat'
$_colorOverridesstringBloco <style> com propriedades CSS personalizadas
$_menuSearchboolExibir a barra de pesquisa
$_menuItemsarrayItens de navegação (key, label, url, enabled, templates)

Localidade

VariávelTipoDescrição
$_localestringCódigo da localidade atual (ex.: 'en')
$_directionstring'ltr' ou 'rtl'
$_isRtlboolIdioma da direita para a esquerda
$_availableLangsarrayIdiomas disponíveis
$_langPrefixstringPrefixo da URL (ex.: '/fr' ou '')

Configurações do cartão de vídeo

VariávelTipoDescrição
$_cardShowDurationboolExibir o emblema de duração
$_cardShowTitleboolExibir o título do vídeo
$_cardMetaLeftstringMeta à esquerda: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringMeta à direita (mesmas opções)
$_cardGridGapintEspaçamento da grade em pixels
$_cardBorderRadiusintRaio da borda do cartão em pixels
$_cardThumbnailHoverboolEfeito de hover na miniatura
$_cardTitleLinesintLinhas do título (1 ou 2)

Configurações da página de exibição

VariávelTipoDescrição
$_watchShowViewsboolExibir o contador de visualizações
$_watchShowDurationboolExibir a duração
$_watchShowDateboolExibir a data de publicação
$_watchShowLikesboolExibir curtir / não curtir
$_watchShowFavoritesboolExibir o botão de favorito
$_watchShowPornstarsboolExibir performers
$_watchShowChannelsboolExibir canais
$_watchShowCategoriesboolExibir categorias
$_watchShowTagsboolExibir tags
$_commentsEnabledboolComentários ativados
São configurações, não mágica. Cada valor de $_card* e $_watch* vem diretamente da tela de Aparência do admin, portanto os proprietários do site podem reestilizar seu tema sem tocar no código — desde que você leia essas variáveis em vez de codificá-las.

Variáveis específicas do template

Além das variáveis globais, cada template recebe seus próprios dados.

home.php

VariávelTipo
$videosarray — linhas de vídeo
$paginationObjeto de paginação
$sortstring — chave de ordenação atual

video.php

VariávelTipo
$videoarray — vídeo completo com categorias, tags, performers e canais
$categories, $tags, $performersarray
$commentsarray
$similararray — vídeos semelhantes
$recommendedarray — vídeos recomendados
$userVotestring\|null — 'like', 'dislike' ou null
$isFavoritedbool

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

VariávelTipo
$category / $tag / $performer / $channelarray — a entidade
$videosarray — linhas de vídeo
$paginationObjeto de paginação
$sortstring

Templates de listagem

TemplateVariáveis notáveis
categories.php$categories — cada uma tem video_count; com CTR ativado, best_video_thumbnail
performers.php$performersvideo_count; com CTR ativado, best_video_thumbnail, total_ctr, ordenado por CTR; $pagination
channels.phpMesma estrutura que performers
search.php$query, $videos, $pagination

Classes auxiliares

Estes auxiliares estáticos estão disponíveis em todos os templates.

ClasseMétodos principais
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)Auxiliar de tradução
url($path)Atalho para Router::url($path)

O fluxo de renderização

  1. O controlador chama o renderizador. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. As variáveis globais são injetadas. As variáveis de site, aparência, localidade e cartão/exibição com prefixo $_ são adicionadas.
  3. Plugins podem modificar os dados. HookSystem::applyFilter('theme.template_data', $data, $templateName) é executado.
  4. O template é renderizado. Seu arquivo de template é armazenado em buffer em $content.
  5. O layout é carregado. layout.php recebe $content mais todas as variáveis.
  6. As impressões são enviadas. ImpressionTracker::flush() envia a atualização em lote de impressões (CTR).
  7. O cron é executado. CronManager::run() executa quaisquer tarefas agendadas pendentes.

Requisitos do layout.php

O layout.php de um tema deve fazer o seguinte:

  1. Emitir o shell HTML completo (<!DOCTYPE html></html>).
  2. Incluir <?= ThemeRenderer::renderCSS() ?> em <head>.
  3. Incluir <?= $_colorOverrides ?> em <head>.
  4. Ecoar $content dentro de <main>.
  5. Incluir <?= ThemeRenderer::renderJS() ?> antes de </body>.
  6. Chamar <?php ImpressionTracker::flush(); ?> antes de </body> (para CTR).
  7. Chamar <?php HookSystem::doAction('head.meta'); ?> em <head>.
  8. Chamar <?php HookSystem::doAction('footer.scripts'); ?> antes de </body>.

Fallback de template

Se um template estiver ausente no tema ativo, o TubePress usa como fallback o tema Simply integrado. Um tema personalizado, portanto, só precisa substituir os templates que realmente deseja alterar — comece com um template e expanda a partir daí.

Próximos passos

Ainda com dúvidas?

Abra um ticket pelo painel e nossa equipe vai ajudá-lo.

Experimente o demo ao vivo → Baixar TubePress →