Files
2026-05-07 13:34:36 +00:00

5.7 KiB

Contexto del Proyecto: CNT Sindikatua

¿Qué es?

Tema de WordPress para el sitio web del sindicato CNT (Confederación Nacional del Trabajo) del País Vasco. Basado en el Timber Starter Theme con Twig como motor de plantillas.

Stack Tecnológico

Componente Tecnología
CMS WordPress
Tema base Timber Starter Theme (v2)
Motor de plantillas Twig (PHP)
Frontend Bootstrap 5.3, Bootstrap Icons
Fuente Yaro (custom)
PHP Composer, PSR-4 autoloading
Post Types post (noticias, campaña, conflictos laborales), opinion, videos, documento
Plugins clave Polylang (multilenguaje ES/EU), ACF (Advanced Custom Fields), Contact Form 7, Routes

Idiomas

Soporte bilingüe: Español (/es) y Euskera (/eu) mediante Polylang.

Estructura del tema

cnt-sindikatua/
├── assets/              # CSS, JS, fuentes, imágenes
│   ├── fonts/yaro-font-family/
│   ├── scripts/site.js
│   └── styles/
├── src/                 # Clases PHP (autoload PSR-4)
│   ├── StarterSite.php  -> Clase principal del tema
│   ├── Comments.php     -> Desactiva comentarios globalmente
│   └── SMTP.php         -> Configuración de correo SMTP
├── views/               # Plantillas Twig
│   ├── layouts/base.twig        -> Layout base (HTML, header, footer)
│   ├── partials/                -> Componentes reutilizables
│   └── templates/               -> Plantillas por página/taxonomía
├── functions.php        -> Punto de entrada, inicializa todo
├── style.css            -> Estilos + metadatos del tema
└── template-portada.php -> Template especial para portada

Funcionalidades principales

1. Portada dinámica

template-portada.php con contexto que incluye:

  • Últimas noticias (getLastsPostsNews)
  • Último artículo de opinión (getLastPostOpinion)
  • Último post de campaña (getLastPostCampana)
  • Último post de conflictos laborales (getLastPostConflicts)
  • Botones de enlaces con imagen (getBotonesEnlaces)
  • Slider de videos (getVideosSlider)

2. Archivos personalizados con rutas (Routes)

Rutas definidas en functions.php con upstatement/routes:

Ruta ES Ruta EU Archivo PHP
/es/noticias /eu/berriak archive-noticias.php
/es/noticias/conflictos-laborales /eu/berriak/lan-gatazkak archive-conflictos-laborales.php
/es/documentos /eu/dokumentuak archive-documentos.php

Todas con soporte de paginación (/page/:paged).

3. Páginas especiales

Cada una con su template Twig correspondiente:

  • Acerca de CNT / CNT-ri buruz
  • Afiliación / Afiliazioa
  • Contactos / Kontaktua (con formulario CF7)
  • Servicios / Zerbitzuak
  • Industria
  • Enlaces / Loturak
  • Noticias / Berriak
  • Opinión / Iritzia
  • Videos / Bideoak
  • Documentos / Dokumentuak
  • Aviso Legal, Política de Privacidad, Política de Cookies

4. Videos

  • Custom post type videos
  • Reproductor modal con iframe (YouTube/Vimeo)
  • Slider en portada
  • Embed generado automáticamente con generar_embed_universal()
  • Script en site.js maneja apertura/cierre del modal (autoplay al abrir, stop al cerrar)

5. Opinión

  • Custom post type opinion
  • Archive propio con paginación
  • Sección destacada en portada

6. SMTP

  • Clase SMTP.php que configura phpmailer_init
  • Configuración desde opciones de ACF (host, puerto, seguridad, credenciales, remitente)
  • Almacenado como opciones de WordPress (options_smtp_*)

7. Comentarios

  • Totalmente desactivados en todo el sitio mediante Comments.php
  • Oculta menú de comentarios en admin, redirige acceso directo, elimina soporte en post types

8. Redes sociales

  • Configurables desde ACF (opciones del tema)
  • Hasta 4 iconos con imagen y URL
  • Estilo SVG blanco en footer con efecto hover

9. Búsqueda

  • Excluye páginas marcadas con ACF exclude_from_search
  • Filtro en pre_get_posts
  • Header: Top bar (idiomas), logos configurables (ACF), menú principal con dropdown, menú hamburguesa (offcanvas)
  • Footer: Logos, textos configurables, últimas noticias, último artículo de opinión, redes sociales, enlaces, listado de sedes

11. Paginación

  • Estilos personalizados con las clases CSS del tema
  • Varios partials: pagination.twig, pagination-custom.twig, pagination-custom-pages.twig

Identidad visual

  • Color principal: Rojo CNT (--rojo-cnt: #dc2d30)
  • Colores secundarios: --rojo-cnt-dark: #9d1b1d, --rojo-cnt-light: #d6453f
  • Tipografía titular: Yaro (YaroSt-Black) para headings y títulos especiales
  • Soporte SVG en subidas de medios mediante filtro upload_mimes

Scripts JS

  • site.js: Maneja el modal de videos (autoplay al abrir, stop al cerrar)
  • Bootstrap JS: Menús, offcanvas, modals
  • Dependencias cargadas desde vendor/ via Composer

Migración

  • Proyecto migrado desde Joomla a WordPress
  • MIGRATION.md contiene instrucciones para limpieza de BBDD (tablas con prefijos legacy: d8yd3_, bak_, gdkw3_, qwe9g_)
  • Categorías limpiadas durante migración: Blog, News, Review, tutorial, updates, Joomla!, Uncategorised, Helbideak, Service
  • Categorías mantenidas: Berriak/noticias, Albisteak/noticias, Lan gatazkak/conflictos laborales, Industria, Acerca de CNT

Notas de desarrollo

  • Versión de assets cacheada con time() para evitar caché del navegador en desarrollo
  • Antiguo intento de reescritura de reglas para search pagination comentado en StarterSite.php
  • Función pll_current_language() para integración ACF + Polylang
  • Hook en CF7 para añadir título de página como campo oculto en formularios