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ón3.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ón0.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 comprobadas691 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ón7.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ón5.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.