01
Treść po migracji to surowy HTML, nie bloki
Joomla zapisuje wpis jako jeden blok HTML-a. Mechanizmy działające na blokach obrazu — natywny lightbox, srcset, automatyczne rozmiary — omijały dwadzieścia lat aktualności.
→ Własny lightbox na delegacji zdarzeń, działający na dowolnym obrazie niezależnie od tego, jak powstała treść, z rozpoznawaniem pełnego rozmiaru i fallbackiem.
02
Puste og:image — udostępnienia bez zdjęcia
Stare wpisy nie miały obrazka wyróżniającego, bo poprzedni system nie znał takiego pola. Każde udostępnienie wychodziło jako goły link.
→ Rekonstrukcja miniaturki z pierwszego zdjęcia w treści i ustawienie realnej wartości w bazie — zamiast filtrowania konkretnej wtyczki SEO. Rozwiązanie przeżyje zmianę wtyczki.
03
Zdjęcia poza biblioteką mediów
Pliki leżały w katalogu spoza biblioteki, a migracja zmieniła domenę — adresy w treści nie zgadzały się z bazą.
→ Pięciostopniowe dopasowanie: klasa z identyfikatorem, adres, adres bez sufiksu rozmiaru, nazwa pliku w metadanych, import do biblioteki. Tylko z własnej domeny; nieudane wpisy oznaczane.
04
Setki rekordów urzędowych w martwych tabelach
Wydziały z obsadą, jednostki, ewidencje, wykazy, konkursy ofert z dziewięciu roczników — wszystko jako tabele do przewijania.
→ Filtrowanie po stronie przeglądarki, bez przeładowania: wyszukiwarka, akordeony, zakładki roczników, liczniki. Zero zapytań do serwera przy filtrowaniu.
05
Elementor jako środowisko docelowe
Widget HTML nie daje dostępu do kolejkowania skryptów, style motywu potrafią nadpisać wszystko, a wbudowany lightbox dublował nasz.
→ Moduły samowystarczalne, style scope’owane prefiksem identyfikatora, pomijanie elementów obsługiwanych przez lightbox Elementora.
06
Redakcja bez dostępu do plików na serwerze
Część modułów musiała zadziałać od razu po wklejeniu, bez wgrywania grafik.
→ Ikony i drobne grafiki osadzone bezpośrednio w module tam, gdzie to miało sens; reszta z biblioteki mediów.
07
Dostępność w modułach interaktywnych
Akordeony, zakładki, modale i lightbox to najłatwiejsze miejsce na złamanie wymogu WCAG.
→ Obsługa klawiatury i Escape, atrybuty ARIA, powrót fokusu po zamknięciu modala, respektowanie preferencji ograniczonego ruchu.
08
Archiwum kadencji 1999–2029
Dane historyczne o bardzo różnej kompletności — starsze kadencje mają wyraźnie mniej informacji.
→ Jeden szablon odporny na braki i identyczna nawigacja dla wszystkich kadencji rad i zarządów.
09
Waga zdjęć od urzędu
Materiały przychodziły jako pliki po kilka–kilkanaście megabajtów, wstawiane w pełnym rozmiarze.
→ Konwersja do WebP tam, gdzie się dało, i rozmiary pochodne zamiast oryginałów w treści.
10
Adresy artykułów jako dowód w sprawozdaniach finansowych
Linki do konkretnych wpisów były podawane w sprawozdaniach finansowych i dokumentacji rozliczeniowej — jako potwierdzenie publikacji informacji o zadaniu i źródle finansowania. Migracja zmienia strukturę adresów, więc każdy z nich mógł przestać działać. Ryzyko było formalne, nie marketingowe.
→ Pełne mapowanie starych adresów na nowe i przekierowania 301 — jeden do jednego dla artykułów wskazanych w dokumentach, reguły zbiorcze dla reszty. Załączniki zachowały swoje adresy.
11
Odbudowa profilu linków przychodzących
Serwis powiatowy żyje z linków z zewnątrz: gminy, szkoły, jednostki, instytucje dotujące, media lokalne. Odnośników w cudzych serwisach nie da się poprawić z poziomu własnej strony.
→ Dwutorowo: przekierowania łapią ruch z linków, których nikt nie zaktualizuje, a równolegle kontakt z partnerami i podmiana adresów u źródła tam, gdzie link ma zostać na lata.