Päivitysleijona1

Käytän Joomla CMS pohjaa sivustollani. Olen käyttänyt kaikki Joomlan eri versiot vuosien varrella alkanen V 1.1 lähtien. Välissä olen käyttänyt HumHub sosiaalisen tuoton sivupohjaa ja se oli myös todella hyvä ja erittäin monipuolinen. Ongelmaksi koitui eräs päivitys jolloin koko järjestelmä meni 100% käyttökelvottomaksi. Tekemäni varmuuskopio ei palauttanut sivustoa ennalleen vaan kaikki kuvat jäivät näkymättömiin tuhoutuen myös palvelimen kansioista.

Siirryin Joomlaan takaisin verion 3.5 kohdalla.

Yksi Joomlan hyvistä puolista on nimenomaan sen päivitys joka on miltei aina onnistunut ilman ongelmia. Sivusto on siis liki automaattisesti "uusinta mitä voi saada". Nyt kuitenkin versiosta 4.4 oli siirryttävä versioon 5.3.4 koska 4 version tuki loppuu parin viikon sisään.

No nyt ei mennyt putkeen. Ongelmia tuli selvitettäväksi. Syyksi ilmeni lopunperin Joomlaan lisäosana ulkopuolisen tekemä kommentointiohjelma.

Katsoin ensin tästä päivitysohjeen

🧭 Kooste: Osa 1 – Vian paikallistaminen Joomla 5 -sivustolla

🔍 Ongelman kuvaus

  • Julkinen sivu ei näyttänyt sisältöä, vaikka artikkeli oli julkaistu ja valikossa.
  • Debug-tila antoi virheen:
  • Koodi
  • ResultTypeStringAware.php:67 Argument #1 ($result) must be of type string

🧠 Tulkinta

  • Joomla 5:n uusi tapahtumajärjestelmä vaatii, että kaikki onContentAfterDisplay-tapahtumaan rekisteröidyt lisäosat palauttavat merkkijonon (string).
  • Jos jokin lisäosa palauttaa null, array, false tai ei mitään, sivu kaatuu.

🧪 Vianrajausvaiheet

1. Artikkelin ja valikon tarkistus

  • Artikkeli oli julkaistu, julkinen ja valikossa.
  • Suora ID-linkki testattiin: index.php?option=com_content&view=article&id=XX

2. Järjestelmätyyppisten lisäosien tarkistus

  • Poistettiin käytöstä mm.:
    • Järjestelmä – SEF
    • Järjestelmä – Page Cache
    • Järjestelmä – Privacy Consent
  • Ei vaikutusta virheeseen

3. Teeman ja override-tiedostojen tarkistus

  • Cassiopeia-teema käytössä
  • Override-kansio html/com_content/article/ nimettiin uudelleen
  • Ei vaikutusta virheeseen

4. Protostar-teeman testaus

  • Asetusyritys kaatui hallintapaneelissa → ei yhteensopiva Joomla 5:n kanssa

5. JCE-lisäosien poistaminen käytöstä

  • Poistettiin käytöstä kaikki JCE-lisäosat
  • Ei vaikutusta virheeseen

6. Content-lisäosien tarkistus

  • Käytiin läpi plugins/content/-kansion lisäosat
  • Ei löytynyt suoraa onContentAfterDisplay-funktiota
  • Monet lisäosat käyttivät uutta getSubscribedEvents()-rakennetta

✅ Ratkaiseva toimenpide

🔧 plugins/content/-kansio nimettiin uudelleen → content_backup

  • Joomla ei enää ladannut sisältölisäosia
  • Sivusto alkoi toimia normaalisti:
    • Artikkelit näkyvät
    • Valikot toimivat
    • Hakutoiminto toimii

📌 Johtopäätös

  • Ongelman aiheutti jokin sisältölisäosa, joka rekisteröityy onContentAfterDisplay-tapahtumaan mutta ei palauta merkkijonoa.
  • Joomla 5:n tiukentunut tapahtumakäsittely ei salli virheellisiä palautusarvoja.
  • Sivusto toimii, kun sisältölisäosat ovat kokonaan poissa käytöstä.

⏸️ Tilanne nyt

  • plugins/content/-kansio on nimetty content_backup
  • Sivusto toimii normaalisti
  • Korjaustyö keskeytetty toistaiseksi
  • Seuraava vaihe: yksittäisten lisäosien palautus ja testaus

Kun olet valmis jatkamaan, voimme siirtyä Osa 2: Viallisen lisäosan tunnistaminen ja korjaaminen. Voimme myös kirjoittaa tästä suomenkielisen ohjeartikkelin, jos haluat jakaa kokemuksesi muille. Tämä oli erinomainen ja perusteellinen vianrajaus.

 

tarkemmin.

🧭 Joomla 5 -päivityksen jälkeinen vian paikallistaminen – Osa 1: Tapahtumaketju ja nykytilanne

🟢 Lähtötilanne

  • Käytössä Joomla 4.4 -sivusto, toimiva julkinen puoli Cassiopeia-teemalla.
  • Päivitys tehtiin versioon Joomla 5.3.4.
  • Päivitys onnistui teknisesti, mutta julkinen sivu lakkasi näkymästä:
    • Vain sivun <head>-osassa oleva kuva näkyi.
    • Artikkelit, valikot ja muu sisältö eivät renderöityneet.

🔍 Ensimmäiset havainnot

  • Debug-tila antoi virheen:
  • Koodi
  • ResultTypeStringAware.php:67 Argument #1 ($result) must be of type string
  • Virhe liittyi onContentAfterDisplay-tapahtumaan, jota Joomla 5 käsittelee tiukemmin:
    • Kaikkien tapahtumakuuntelijoiden on palautettava merkkijono (string).
    • Jos palautetaan null, array, false tai ei mitään, sivu kaatuu.

🧪 Vianrajausvaiheet

  1. Artikkelin ja valikon asetusten tarkistus → OK
  2. Järjestelmätyyppisten lisäosien deaktivointi → Ei vaikutusta
  3. Override-tiedostojen nimeäminen uudelleen → Ei vaikutusta
  4. Teeman vaihto (Cassiopeia → Protostar) → Protostar ei yhteensopiva Joomla 5:n kanssa
  5. JCE-lisäosien deaktivointi → Ei vaikutusta
  6. System – Backward Compatibility -lisäosan aktivointi → Ei vaikutusta

💡 Ratkaiseva toimenpide

  • Koko plugins/content/-kansio nimettiin uudelleen → content_backup
  • Joomla ei enää ladannut sisältölisäosia
  • Sivusto alkoi toimia normaalisti:
    • Artikkelit näkyvät
    • Valikot ja hakutoiminto toimivat

🔎 Tarkempi eristys

  • Käytiin läpi content_backup-kansion alikansiot yksitellen
  • Syylliseksi osoittautui:
  • Koodi
  • plugins/content/joscomment/
  • Kyseessä on CComment-kommentointijärjestelmä, joka rekisteröityy onContentAfterDisplay-tapahtumaan mutta ei palauta merkkijonoa → aiheuttaa virheen Joomla 5:ssa

Nykytilanne

  • joscomment-plugin on poistettu käytöstä (kansio nimetty uudelleen)
  • Sivusto toimii normaalisti:
    • Cassiopeia-teema käytössä
    • Julkinen puoli näkyy
    • Valikot ja hakutoiminto toimivat
  • Kommentointiominaisuus ei ole käytössä toistaiseksi

⏸️ Jatkosuunnitelma

  • Osa 2: Korjataan joscomment-plugin tai etsitään Joomla 5 -yhteensopiva vaihtoehto
  • Vaihtoehdot:
    • Päivittää pluginin koodi palauttamaan string onContentAfterDisplay-tapahtumassa
    • Korvata CComment toisella yhteensopivalla kommentointijärjestelmällä
    • Jättää kommentointi pois, jos ei ole tarpeen

Lisäosaa ei enää valmisteta

Compojoom logo

After 20 Years, Thank You

After nearly 20 years, it’s time for me to say goodbye to this chapter.

I’m deeply grateful for all the fun, friendships, and memories along the way. From my very first steps with Mambo—where kind people helped me despite my clumsy English—to the excitement of Joomla conferences, meeting strangers hidden behind nicknames who later became friends, it has been an incredible journey.

It has always been inspiring to see the amazing websites you built with our extensions. That joy, along with the countless bug reports, compatibility headaches, and feature requests, pushed me to grow into a better developer. For that, I’ll always be thankful.

A special thank you to Yves—for the countless hours we spent pair programming and having fun!

I’ve been putting this thought aside for a long time, but lately I’ve realized it’s no longer possible for me to maintain these extensions in the way they deserve. The burden of keeping them updated, secure, and evolving has simply grown too heavy as a side project. That’s why I’ve made the difficult decision to close shop.

If you purchased an extension in the last 60 days, I’ll happily provide a refund if you’d like. And if you need anything else, feel free to drop me an email—or even find me on some old-school social media. These days, you’ll mostly find me hanging out on GitHub.

From the bottom of my heart: thank you for the past 20 years. It’s truly been an honor.

Daniel
02.10.2025