Saltar al contenido
TubePress — gratuito, autoalojado & con mantenimiento activo
Referencia para desarrolladores

Referencia de la API de temas

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

VariableTipoDescripción
$_templatestringNombre de la plantilla actual (p. ej. 'home', 'video')
$_siteNamestringNombre del sitio desde la configuración
$_siteDescriptionstringDescripción del sitio
$_siteUrlstringURL del sitio
$_videosPerRowintColumnas de la cuadrícula (4, 5 o 6)
$_userarray\|nullUsuario con sesión iniciada, o null
$_footerPagesarrayPáginas estáticas marcadas para el pie de página
$_registrationEnabledboolInterruptor de registro
$_ctrEnabledboolInterruptor de clasificación CTR

Apariencia

VariableTipoDescripción
$_siteLogostringNombre del archivo del logotipo (en /uploads/branding/)
$_siteFaviconstringNombre del archivo del favicon
$_siteBackgroundstringNombre del archivo de imagen de fondo
$_siteBackgroundModestring'cover', 'contain' o 'repeat'
$_colorOverridesstringBloque <style> con propiedades CSS personalizadas
$_menuSearchboolMostrar la barra de búsqueda
$_menuItemsarrayElementos de navegación (key, label, url, enabled, templates)

Configuración regional

VariableTipoDescripción
$_localestringCódigo de configuración regional actual (p. ej. 'en')
$_directionstring'ltr' o 'rtl'
$_isRtlboolIdioma de derecha a izquierda
$_availableLangsarrayIdiomas disponibles
$_langPrefixstringPrefijo de URL (p. ej. '/fr' o '')

Configuración de la tarjeta de vídeo

VariableTipoDescripción
$_cardShowDurationboolMostrar la insignia de duración
$_cardShowTitleboolMostrar el título del vídeo
$_cardMetaLeftstringMeta izquierda: 'views', 'likes', 'time', 'none'
$_cardMetaRightstringMeta derecha (mismas opciones)
$_cardGridGapintEspacio entre tarjetas en píxeles
$_cardBorderRadiusintRadio del borde de la tarjeta en píxeles
$_cardThumbnailHoverboolEfecto al pasar el cursor sobre la miniatura
$_cardTitleLinesintLíneas del título (1 o 2)

Configuración de la página de reproducción

VariableTipoDescripción
$_watchShowViewsboolMostrar el número de reproducciones
$_watchShowDurationboolMostrar la duración
$_watchShowDateboolMostrar la fecha de publicación
$_watchShowLikesboolMostrar me gusta / no me gusta
$_watchShowFavoritesboolMostrar el botón de favoritos
$_watchShowPornstarsboolMostrar intérpretes
$_watchShowChannelsboolMostrar canales
$_watchShowCategoriesboolMostrar categorías
$_watchShowTagsboolMostrar etiquetas
$_commentsEnabledboolComentarios 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.

Variables específicas de plantilla

Además de las globales, cada plantilla recibe sus propios datos.

home.php

VariableTipo
$videosarray — filas de vídeos
$paginationObjeto Pagination
$sortstring — clave de orden actual

video.php

VariableTipo
$videoarray — vídeo completo con categorías, etiquetas, intérpretes y canales
$categories, $tags, $performersarray
$commentsarray
$similararray — vídeos similares
$recommendedarray — vídeos recomendados
$userVotestring\|null — 'like', 'dislike' o null
$isFavoritedbool

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

VariableTipo
$category / $tag / $performer / $channelarray — la entidad
$videosarray — filas de vídeos
$paginationObjeto Pagination
$sortstring

Plantillas de listado

PlantillaVariables destacadas
categories.php$categories — cada una tiene video_count; con CTR activado, best_video_thumbnail
performers.php$performersvideo_count; con CTR activado, best_video_thumbnail, total_ctr, ordenado por CTR; $pagination
channels.phpMisma estructura que performers
search.php$query, $videos, $pagination

Clases auxiliares

Estos auxiliares estáticos están disponibles en cada plantilla.

ClaseMétodos principales
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 traducción
url($path)Atajo para Router::url($path)

El flujo de renderizado

  1. El controlador llama al renderizador. ThemeRenderer::render('home', ['videos' => $videos, …]).
  2. Se inyectan las globales. Se añaden las variables de sitio, apariencia, configuración regional y tarjeta/reproducción con prefijo $_.
  3. Los plugins pueden modificar los datos. Se ejecuta HookSystem::applyFilter('theme.template_data', $data, $templateName).
  4. La plantilla se renderiza. Tu archivo de plantilla se almacena en búfer en $content.
  5. Se carga el diseño. layout.php recibe $content más todas las variables.
  6. Se vacían las impresiones. ImpressionTracker::flush() envía la actualización acumulada de impresiones (CTR).
  7. 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:

  1. Mostrar la estructura HTML completa (<!DOCTYPE html></html>).
  2. Incluir <?= ThemeRenderer::renderCSS() ?> en <head>.
  3. Incluir <?= $_colorOverrides ?> en <head>.
  4. Mostrar $content dentro de <main>.
  5. Incluir <?= ThemeRenderer::renderJS() ?> antes de </body>.
  6. Llamar a <?php ImpressionTracker::flush(); ?> antes de </body> (para CTR).
  7. Llamar a <?php HookSystem::doAction('head.meta'); ?> en <head>.
  8. 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í.

Próximos pasos

¿Todavía con dudas?

Abre un ticket desde tu panel y nuestro equipo te ayudará.

Prueba la demo en vivo → Descargar TubePress →