🐦 Hummingbird — tema por defecto de PS 9.x

Actualizado: 2024-12-01

Hummingbird es el tema por defecto de PrestaShop 9.x, sustituyendo a Classic. Usa Bootstrap 5, ES Modules nativos, SCSS con tokens CSS y elimina jQuery como dependencia obligatoria.

#Novedades de Hummingbird vs Classic

CaracteristicaClassic (PS 8.x)Hummingbird (PS 9.x)
Framework CSSBootstrap 4Bootstrap 5
JavaScriptjQuery obligatorioVanilla JS / ES Modules
CSS VariablesNoSi (tokens CSS personalizables)
SCSSPartial SCSSTokens + componentes modulares
WebpackWebpack 4Webpack 5 + ESBuild
TwigSmarty principalTwig con Smarty en FO legacy
Dark modeNo nativoSoporte via prefers-color-scheme
AccesibilidadBasicaWCAG 2.1 AA objetivo

#Estructura del tema

Estructura de directorios de Hummingbird
text
themes/hummingbird/
├── assets/
│   ├── css/
│   │   └── theme.css         ← CSS compilado
│   ├── js/
│   │   └── theme.js          ← JS compilado
│   └── img/
├── config/
│   └── theme.yml             ← Configuracion del tema
├── modules/                  ← Overrides de modulos
├── templates/
│   ├── catalog/
│   ├── checkout/
│   ├── customer/
│   └── layouts/
│       ├── layout-full-width.tpl
│       └── layout-left-column.tpl
├── _dev/                     ← Fuentes SCSS y JS (no incluido en la distribucion)
│   ├── scss/
│   │   ├── _variables.scss
│   │   ├── _tokens.scss      ← CSS Custom Properties
│   │   └── components/
│   └── js/
│       └── components/
├── preview.jpg
└── theme.yml

#Bootstrap 5 — cambios en el HTML

Bootstrap 4 (Classic)Bootstrap 5 (Hummingbird)
data-toggledata-bs-toggle
data-dismissdata-bs-dismiss
data-targetdata-bs-target
ml-auto / mr-automs-auto / me-auto
float-left / rightfloat-start / float-end
text-left / righttext-start / text-end
jQuery.modal('show')new bootstrap.Modal(el).show()
no-guttersg-0
sr-onlyvisually-hidden

#SCSS y sistema de tokens CSS

_tokens.scss — personalizar el tema con CSS Custom Properties
scss
// En _dev/scss/_tokens.scss (o en tu child theme)
:root {
  // ── Colores ──
  --color-primary:        #1a73e8;
  --color-primary-light:  #4a90e8;
  --color-secondary:      #6c757d;
  --color-success:        #28a745;
  --color-danger:         #dc3545;
  --color-warning:        #ffc107;

  // ── Tipografia ──
  --font-family-base:     'Inter', system-ui, sans-serif;
  --font-size-base:       1rem;
  --font-size-sm:         0.875rem;
  --font-size-lg:         1.125rem;
  --line-height-base:     1.5;

  // ── Espaciado ──
  --spacer:               1rem;
  --spacer-xs:            calc(var(--spacer) * .25);
  --spacer-sm:            calc(var(--spacer) * .5);
  --spacer-lg:            calc(var(--spacer) * 1.5);
  --spacer-xl:            calc(var(--spacer) * 3);

  // ── Bordes ──
  --border-radius:        0.375rem;
  --border-radius-lg:     0.5rem;
  --border-color:         #dee2e6;
}

#JavaScript modular (ES Modules)

Patron de componentes JS en Hummingbird
javascript
// En _dev/js/components/myComponent.js

export default class MyComponent {
  constructor(el, options = {}) {
    this.el = el;
    this.options = {
      animationDuration: 300,
      ...options,
    };
    this.init();
  }

  init() {
    this.el.addEventListener('click', (e) => this.handleClick(e));
  }

  handleClick(event) {
    event.preventDefault();
    // ...
  }
}

// En _dev/js/theme.js — punto de entrada
import MyComponent from './components/myComponent';

// Inicializar cuando el DOM esta listo
document.addEventListener('DOMContentLoaded', () => {
  document.querySelectorAll('[data-my-component]').forEach(el => {
    new MyComponent(el);
  });
});

// Exponer en window para compatibilidad con modulos legacy
window.MyTheme = { MyComponent };

#Migracion desde Classic

Tarea de migracionPrioridadNotas
Cambiar data-toggle por data-bs-*AltaAfecta dropdowns, modals, tabs
Reemplazar jQuery por Vanilla JSMediajQuery sigue disponible pero no es recomendado
Actualizar clases de utilidades BS4 a BS5Altaml-, mr-, float-left, etc.
Migrar SCSS a sistema de tokensMediaPermite personalizacion sin recompilar
Probar modulos de tercerosCriticaMuchos modulos usan jQuery y BS4
Actualizar child themesAltaRevisar todos los templates extendidos
Testar checkout completoCriticaBootstrap 5 cambia el HTML del checkout
Descargar en Markdown Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.