Skip to main content

Opgradering af K2 til Joomla 4 - Derfor opgav jeg

Michael Sønderup Nielsen - Joomla konsulent
Kategori: Joomla 4
Opdateret 28. juli 2023

Opgradering af K2 til Joomla 4

Har du en hjemmeside, der køres på K2, som jeg i øvrigt selv har været stor fan af på Joomla 2.5 og 3. Men så kom Joomla 4. Inden at du med stor iver begiver dig ud i at opgradere til Joomla 4, så læs lige med her først.

Når du opgraderer fra Joomla 3 til Joomla 4, skal K2 være fuldstændig deaktiveret. Hvis ikke, risikerer du at skade din hjemmeside og blive tvunget til at starte helt forfra fra en backup.

OBS!!! K2 er ikke kompatibelt med Joomla 4 (i skrivende stund, juli 2023). Så spar dig selv for besværet.

Jeg må indrømme, at jeg har haft en forkærlighed for K2 - det var en af de mest alsidige udvidelser der fandtes til Joomla. Men mystisk nok har K2-udviklerne endnu ikke introduceret en version til Joomla 4, på trods af løfter om at dette vil ske ... på et eller andet tidspunkt. Så jeg besluttede mig for at prøve kræfter med det på vegne af en kunde. Og hvordan gik det så?

Jeg begyndte at arbejde med en hjemmeside med omkring 14.000 artikler - alle i K2, selvom ingen af K2s særlige funktioner faktisk blev udnyttet (så K2 var i egentlig overflødig).

Efter lidt research fandt jeg ud af, at der endnu ikke var en K2-version kompatibel med Joomla 4. "Intet problem", tænkte jeg, "det klarer jeg bare - det kan ikke tage så lang tid". Jeg kunne ikke have taget mere fejl.

Jeg startede arbejdet på en kopi af hjemmesiden, deaktiverede K2, opgraderede hjemmesiden til Joomla 4 og aktiverede så K2 igen. Ved et besøg på frontend blev jeg mødt af den første fejl:

Call to undefined method Joomla\CMS\Application\AdministratorApplication::isSite()

"Piece of cake", tænkte jeg, åbnede k2.php-filen, der ligger i plugins/system/k2-mappen, og erstattede:

if ($app->isSite()) {

med:

if ($app->isClient('site')) {

Jeg opdaterede hjemmesiden, og fik øje på en ny fejl:

Class “JRequest” not found

"Det er da nemt", tænkte jeg, og i k2.php-filen, som jeg allerede havde åbnet, erstattede jeg alle forekomster af:

JRequest::getCmd, JRequest::getInt, og JRequest::get

med:

Joomla\CMS\Factory::getApplication()->getInput()->get

"Det er sjovt", forsikrede jeg mig selv, men som timerne gik, blev det mere og mere frustrerende, mindre og mindre underholdende. Efter et par uger med at rette disse fejl (nogle af dem var virkelig komplekse at løse, da nogle Joomla 3-funktioner ikke havde en Joomla 4-modpart, hvilket jeg antager er en væsentlig årsag til K2-udviklernes forsinkelse med migreringen til Joomla 4), havde jeg en fungerende frontend.

Jeg erfarede så, at min kunde bruger K2s backend til at tilføje indhold, hvilket var meget mere komplekst at arbejde med på grund af den betydelige forskel i skabelonmotoren mellem Joomla 3 og Joomla 4. Det vil med andre ord sige, at arbejdet med backend også krævede konvertering af selve layoutet. Så selvom jeg er kendt for at tage udfordringer med oprejst pande, kastede jeg alligevel håndklædet i ringen.

Så, hvad gjorde jeg så?

I stedet for at prøve at tilpasse K2 til Joomla 4, flyttede jeg K2-indholdet til Joomla 4 artikler i stedet. Det var ikke en ligetil proces, men langt mindre indviklet end at få K2 til at fungere fejlfrit på Joomla 4.

Er det værd at vente på, at K2-teamet udvikler en Joomla 4-version?

NEJ!

Der er flere indikationer, der tyder på, at det simpelthen ikke kommer til at ske.

Og for at tale lige ud af posen, så gør det heller ikke noget. Alle de smarte features, der er i K2, kan nu også findes i Joomla 4s artikelsystem. Så vent ikke på K2!

Du er altid velkommen til at kontakte mig, hvis du har brug for rådgivning, sparring, eller svar på spørgsmål om opgradering til Joomla 4, specielt hvis du står over for udfordringer med K2.


Ofte stillede spørgsmål

Hvorfor skal jeg deaktivere K2, før jeg migrerer fra Joomla 3 til Joomla 4?

For at sikre en problemfri migreringsproces, er det nødvendigt at deaktivere K2. Hvis dette ikke gøres, kan det føre til irreversible skader på din hjemmeside og tvinge dig til at starte forfra fra en backup.

Er K2 kompatibel med Joomla 4?

Som det står i skrivende stund (juli 2023), er K2 desværre ikke kompatibel med Joomla 4. Dette er en vigtig faktor at overveje, før du påbegynder opgraderingen.

Hvorfor opstod der fejl, da du opgraderede til Joomla 4 med K2 aktiveret?

Fejl opstod, fordi K2 endnu ikke er kompatibel med Joomla 4. Forskellige systemkald og klasser, som K2 forventede at finde, er enten ændret eller ikke længere tilgængelige i Joomla 4.

Hvordan løste du de opståede fejl under opgraderingsprocessen?

De opståede fejl blev løst ved at erstatte eller modificere specifikke kodekald i K2-filerne. For eksempel blev kaldet "$app->isSite()" erstattet med "$app->isClient('site')", og alle forekomster af "JRequest::getCmd", "JRequest::getInt", og "JRequest::get" blev erstattet med "Joomla\CMS\Factory::getApplication()->getInput()->get".

Hvorfor valgte du til sidst at opgive at gøre K2 kompatibel med Joomla 4?

Til sidst blev det klart, at opgraderingsprocessen krævede en dybere forståelse og uhensigtsmæssige meget tid at lave de nødvendige layoutændringer fra Joomla 3 til Joomla 4, især i forhold til backenden.

Hvad var din løsning på problemet med K2 og Joomla 4?

I stedet for at forsøge at gøre K2 kompatibelt med Joomla 4, valgte jeg at overføre K2-indholdet til Joomla 4 artikler. Selvom denne proces var mere kompliceret end forventet, var den mindre kompleks end at få K2 til at fungere problemfrit med Joomla 4.
Hjælp til Joomla?