Referencia de la API de temas de TubePress: todas las variables globales de plantilla, funciones auxiliares y clases disponibles al crear o personalizar el tema de un sitio tube.
Esta página es la referencia completa de todo lo que puede usar un tema: las variables globales inyectadas en cada plantilla, las variables específicas de cada plantilla y las clases auxiliares disponibles en el código del tema. Si estás creando o personalizando un tema, mantén esta página abierta junto a Desarrollo de temas.
Cada plantilla es renderizada por ThemeRenderer::render($template, $data). El renderizador inyecta un conjunto de variables globales con prefijo $_, fusiona los $data específicos de la plantilla, ejecuta el filtro theme.template_data, almacena en búfer tu plantilla en $content y luego carga layout.php.
Variables globales
Estas están disponibles en cada plantilla y en layout.php.
Sitio
Variable
Tipo
Descripción
$_template
string
Nombre de la plantilla actual (p. ej. 'home', 'video')
$_siteName
string
Nombre del sitio desde la configuración
$_siteDescription
string
Descripción del sitio
$_siteUrl
string
URL del sitio
$_videosPerRow
int
Columnas de la cuadrícula (4, 5 o 6)
$_user
array|null
Usuario con sesión iniciada, o null
$_footerPages
array
Páginas estáticas marcadas para el pie de página
$_registrationEnabled
bool
Interruptor de registro
$_ctrEnabled
bool
Interruptor de clasificación CTR
Apariencia
Variable
Tipo
Descripción
$_siteLogo
string
Nombre del archivo del logotipo (en /uploads/branding/)
$_siteFavicon
string
Nombre del archivo del favicon
$_siteBackground
string
Nombre del archivo de imagen de fondo
$_siteBackgroundMode
string
'cover', 'contain' o 'repeat'
$_colorOverrides
string
Bloque <style> con propiedades CSS personalizadas
$_menuSearch
bool
Mostrar la barra de búsqueda
$_menuItems
array
Elementos de navegación (key, label, url, enabled, templates)
Configuración regional
Variable
Tipo
Descripción
$_locale
string
Código de configuración regional actual (p. ej. 'en')
$_direction
string
'ltr' o 'rtl'
$_isRtl
bool
Idioma de derecha a izquierda
$_availableLangs
array
Idiomas disponibles
$_langPrefix
string
Prefijo de URL (p. ej. '/fr' o '')
Configuración de la tarjeta de vídeo
Variable
Tipo
Descripción
$_cardShowDuration
bool
Mostrar la insignia de duración
$_cardShowTitle
bool
Mostrar el título del vídeo
$_cardMetaLeft
string
Meta izquierda: 'views', 'likes', 'time', 'none'
$_cardMetaRight
string
Meta derecha (mismas opciones)
$_cardGridGap
int
Espacio entre tarjetas en píxeles
$_cardBorderRadius
int
Radio del borde de la tarjeta en píxeles
$_cardThumbnailHover
bool
Efecto al pasar el cursor sobre la miniatura
$_cardTitleLines
int
Líneas del título (1 o 2)
Configuración de la página de reproducción
Variable
Tipo
Descripción
$_watchShowViews
bool
Mostrar el número de reproducciones
$_watchShowDuration
bool
Mostrar la duración
$_watchShowDate
bool
Mostrar la fecha de publicación
$_watchShowLikes
bool
Mostrar me gusta / no me gusta
$_watchShowFavorites
bool
Mostrar el botón de favoritos
$_watchShowPornstars
bool
Mostrar intérpretes
$_watchShowChannels
bool
Mostrar canales
$_watchShowCategories
bool
Mostrar categorías
$_watchShowTags
bool
Mostrar etiquetas
$_commentsEnabled
bool
Comentarios habilitados
Estos son ajustes, no magia. Cada valor de $_card* y $_watch* proviene directamente de la pantalla de administración de Apariencia, por lo que los propietarios del sitio pueden rediseñar tu tema sin tocar el código, siempre que leas estas variables en lugar de codificarlas de forma fija.
Comunidad
Variable
Tipo
Descripción
$_subscriptionsEnabled
bool
Las suscripciones a canales están activadas y el tema las admite
$_subscriptionsUnseen
int
Videos nuevos de los canales del miembro desde su última visita (0 para invitados)
$_memberUploadsEnabled
bool
Las subidas de miembros están activadas y el tema las admite
$_pwaEnabled
bool
La app instalable está activada
Variables específicas de plantilla
Además de las globales, cada plantilla recibe sus propios datos.
home.php
Variable
Tipo
$videos
array — filas de vídeos
$pagination
Objeto Pagination
$sort
string — clave de orden actual
video.php
Variable
Tipo
$video
array — vídeo completo con categorías, etiquetas, intérpretes y canales
$categories, $tags, $performers
array
$comments
array
$similar
array — vídeos similares
$recommended
array — vídeos recomendados
$userVote
string|null — 'like', 'dislike' o null
$isFavorited
bool
$subscriptionsOn
bool — mostrar el botón Suscribirse (ajuste activado y tema compatible)
$channelSubscribed, $channelSubscribers
bool, int — el estado del espectador y el número de suscriptores del primer canal del video
$ownerPreview
bool — quien subió el video está viendo su propio video sin publicar
El controlador llama al renderizador.ThemeRenderer::render('home', ['videos' => $videos, …]).
Se inyectan las globales. Se añaden las variables de sitio, apariencia, configuración regional y tarjeta/reproducción con prefijo $_.
Los plugins pueden modificar los datos. Se ejecuta HookSystem::applyFilter('theme.template_data', $data, $templateName).
La plantilla se renderiza. Tu archivo de plantilla se almacena en búfer en $content.
Se carga el diseño.layout.php recibe $content más todas las variables.
Se vacían las impresiones.ImpressionTracker::flush() envía la actualización acumulada de impresiones (CTR).
Cron se ejecuta.CronManager::run() ejecuta las tareas programadas pendientes.
Requisitos de layout.php
El layout.php de un tema debe hacer todo lo siguiente:
Mostrar la estructura HTML completa (<!DOCTYPE html> … </html>).
Incluir <?= ThemeRenderer::renderCSS() ?> en <head>.
Incluir <?= $_colorOverrides ?> en <head>.
Mostrar $content dentro de <main>.
Incluir <?= ThemeRenderer::renderJS() ?> antes de </body>.
Llamar a <?php ImpressionTracker::flush(); ?> antes de </body> (para CTR).
Llamar a <?php HookSystem::doAction('head.meta'); ?> en <head>.
Llamar a <?php HookSystem::doAction('footer.scripts'); ?> antes de </body>.
Plantilla de respaldo
Si falta una plantilla en el tema activo, TubePress recurre al tema Simply incluido. Por tanto, un tema personalizado solo necesita reemplazar las plantillas que realmente quiere cambiar: empieza con una plantilla y ve ampliando desde ahí.