Septiembre 2026

De qué está hecha la web de OKIN

Decir «hemos pasado de Laravel 5 a Laravel 13» no significa nada si no sabes qué es Laravel. Esta página explica cada pieza de la web: qué hace, para qué la usamos y por qué hemos tenido que cambiarla.

19
saltos de versión encadenados
27
secciones del panel, todas revisadas
2.066
fotos y documentos comprobados
0
datos perdidos por el camino

Nuestra web, por capas

Una web no es un único programa: son varias piezas apiladas, cada una apoyada en la de abajo. Nosotros trabajamos en una sola de esas capas — la del panel — pero si la de abajo se queda vieja, se cae todo lo que tiene encima.

Pasa el ratón por cada capa —o púlsala— para ver qué se hizo en ella. Cada una se apoya en la de abajo: por eso no se podía actualizar solo el panel.

Lo que usamos a diario

Estas cuatro piezas son las que tocamos cada vez que entramos a publicar algo.

Backpack

el panel

Es el panel de administración: las pantallas con formularios y listados donde entramos a trabajar. No lo hizo OKIN — es un producto de terceros que se instala y se configura, y encima de él se montaron nuestras 27 secciones.

Lo usamos para: crear artículos del blog, dar de alta productos, cambiar el slider de la portada, subir catálogos en PDF, editar los textos de «Compromiso» y «Sobre nosotros».

versión 3.6 7.1

elFinder

el selector de fotos

La ventanita que se abre cuando pulsamos para elegir una imagen y nos deja navegar por carpetas, igual que el explorador de archivos de Windows. Hay 2.066 ficheros ahí dentro: fotos de producto, PDFs de catálogo, logos.

Lo usamos para: elegir la foto de cada producto, la imagen de cabecera de un artículo, el PDF de un catálogo.

versión 0.4 0.6

CKEditor

el editor de texto

El recuadro con botones de negrita, cursiva y listas donde escribimos el cuerpo de los artículos y los textos largos. Es lo que convierte lo que escribimos en el formato que entiende un navegador.

Lo usamos para: redactar los artículos del blog y los textos de las páginas de contenido.

El sistema de idiomas

las 5 pestañas

Son en realidad dos piezas trabajando juntas: una guarda cada texto en los cinco idiomas dentro del mismo registro, y otra hace que las direcciones cambien (okin.es/en/blog, okin.es/fr/blog). Por eso al editar un producto vemos pestañas de idioma en vez de cinco fichas separadas.

Lo usamos para: mantener castellano, inglés, francés, italiano y alemán sin duplicar el trabajo.

traducciones comprobadas 691 en artículos · 581 en productos · intactas

Lo que lo sostiene todo

Esto no lo vemos nunca, pero es donde estaba el problema de verdad.

PHP

El lenguaje en el que está escrita la web. Cuando alguien entra en okin.es, es PHP quien busca el producto en la base de datos y arma la página. Cambiarlo es como cambiar los cimientos: todo lo de encima tiene que seguir encajando.

Por qué importa: la versión que corre hoy en la web en vivo dejó de recibir parches de seguridad en diciembre de 2019. Los fallos que se han descubierto desde entonces no se han arreglado ahí.

versión 7.1 8.4

Laravel

El armazón sobre el que está construida la web. Se encarga de cosas que si no habría que programar una a una: qué página mostrar según la dirección, cómo hablar con la base de datos, cómo comprobar que quien entra al panel es quien dice ser.

Por qué importa: la versión en vivo dejó de recibir parches en febrero de 2020. Y el panel de administración necesita una versión moderna de Laravel para funcionar: iban atados.

versión 5.8 13.29

La base de datos

El almacén donde vive todo el contenido: los 88 productos, los 140 artículos, los textos en los cinco idiomas, las rutas de las fotos. Las fotos y los PDFs en sí están en carpetas aparte; la base guarda dónde encontrarlos.

Qué se ha hecho: no se ha cambiado de versión, pero sí se ha documentado. Había diez tablas que existían sin que nadie hubiera dejado escrito cómo crearlas — se ha resuelto, y ahora la web se puede levantar de cero en un servidor nuevo.

Lo que trabaja solo, sin que nadie lo toque

Piezas pequeñas que hacen una cosa concreta en segundo plano.

Pieza Qué hace Estado
Generador de sitemap Recorre la web cada madrugada y hace la lista de páginas que Google debe indexar. arreglado Llevaba 16 meses generando un fichero vacío. Ahora lista 1.762 páginas.
Generador de direcciones Convierte «Hogaza de trigo» en /hogaza-de-trigo para que la dirección sea legible. funcionando
Importador de productos Cada hora mira si hay un fichero de Excel nuevo con el catálogo y lo carga. funcionando Ya no pasa por una dirección pública sin contraseña, como antes.
Generador de PDFs Arma los catálogos descargables. funcionando
reCAPTCHA El «no soy un robot» que evita que nos llenen los formularios de spam. pendiente Necesitamos claves nuevas. Ver más abajo.
Cookiebot El aviso de cookies y el registro de consentimientos. sin cambios

Por qué una versión vieja es un problema

Esta es la parte que conviene entender, porque explica por qué había que hacer todo esto y no simplemente «dejarlo como estaba, que funcionaba».

Cada una de estas piezas la mantiene un equipo que publica correcciones cuando se descubre un fallo de seguridad. Pero solo durante un tiempo: pasada esa fecha, dejan de tocar esa versión. Si aparece un agujero nuevo, en las versiones antiguas no se arregla nunca.

Pieza La web en vivo La web nueva
PHP 7.1 — sin parches desde dic. 2019 8.4 — con soporte hasta 2028
Laravel 5.8 — sin parches desde feb. 2020 13 — con soporte hasta 2028
Panel de administración Backpack 3.6 Backpack 7.1

Y esto no es teórico

En agosto de 2026 la web sufrió un ataque real: alguien entró y colocó páginas de spam que se mostraban solo a Google, no a los visitantes. Se limpiaron, y se cerró la puerta por la que entraron.

Ese es el escenario que se repite cuando se trabaja sobre piezas que llevan seis años sin recibir arreglos. La actualización no es una mejora estética: es lo que hace que, la próxima vez que aparezca un fallo, exista un parche que aplicar.

Qué cambia en nuestro día a día

Prácticamente nada, con dos excepciones importantes — y ambas dependen de una decisión que tenemos pendiente.

El fabricante del panel movió algunos campos a una versión de pago. Mientras no se compre la licencia, esos campos funcionan pero de forma más básica. Afecta a 23 de nuestras 27 secciones.

Qué Cómo era Cómo está ahora
Elegir una imagen
30 campos
Se abría el explorador de archivos y elegíamos la foto. Hay que escribir la ruta a mano. Las fotos actuales siguen todas en su sitio: no se ha perdido nada.
Escribir texto con formato
14 campos
Recuadro con botones de negrita, listas y enlaces. Un recuadro simple, con el código del texto a la vista. El contenido ya escrito no se ha alterado.
Desplegables con buscador
5 campos
Escribíamos para filtrar la lista. Desplegable normal. Funciona igual, solo que sin caja de búsqueda.

En cuanto se compre la licencia, recuperar los tres es cuestión de instalarla: no hay que rehacer nada, ni volver a subir fotos, ni reescribir textos. Todo está preparado para que sea un cambio de un rato.

Qué tenemos que decidir

Tres decisiones. Ninguna es urgente hoy, pero las tres hacen falta antes de que la web nueva sustituya a la actual. Las tres dependen de Marketing.

01

La licencia del panel

Comprarla devuelve el selector de fotos y el editor de texto con botones. No comprarla no rompe nada — significa convivir con las tres limitaciones de arriba. Es una decisión de comodidad y presupuesto.

02

Las claves del «no soy un robot»

La clave que usaba la web estaba escrita dentro del propio código y quedó expuesta durante el ataque. Hay que sustituirla por una nueva, generada desde una cuenta de Google de OKIN. Todo indica que la actual la creó la empresa que hizo la web en su día, así que probablemente haya que empezar de cero.

03

Qué campos deben ser obligatorios

Hoy se puede guardar un producto sin título en alemán, o un artículo sin texto en francés. Podemos impedirlo, pero eso depende de cómo trabajamos: qué debe ser obligatorio en cada idioma y qué es legítimo dejar vacío. No se ha decidido desde Sistemas a propósito.