Automatické aktualizace v Joomla pro každého

Snad každého kdo se zabývá vývojem nějakých rozšíření a doplňků pro Joomlu, už určitě podobná myšlenka napadla. Jaká by to byla paráda, vystavit novou verzi komponenty, modulu, pluginu, nebo třeba jen jazykového balíčku a okamžitě by se o tom dozvěděl celý svět.

S příchodem Joomly 2.5 se objevila možnost automatických aktualizací nejen Joomly samotné, ale také libovolného rozšíření, které si uživatelé nainstalovali. A právě ona aktualizace rozšíření je pro všechny ty, kteří vyvíjejí doplňky pro Joomla. Stačí jen pár poměrně jednoduchých úprav a budete za hvězdy. Žádný speciální webhosting ani pomůcky k tomu nepotřebujete. Vystačíte s textovým editorem a FTP klientem :-).

V následující části se pokusím nastínit praktické řešení. Příklad je postaven pro automatické aktualizace překladů k rozšířením, ale provedení pro komponenty, moduly a pluginy je prakticky stejné, automaticky nelze aktualizovat šablony. Ale nutně to číst nemusíte, existuje i oficiální manuál Deploying an Update Server.

Postup:

V textovém editoru vytvoříte dva XML soubory. Jeden hlavní, např. translationlist.xml, který bude obsahovat seznam všech rozšíření a jejich aktuálně dostupnou verzi. Tento soubor nemusí nutně obsahovat informace o rozšířeních k aktualizaci, může být prázdný, ale musí existovat. Dále vytvoříme soubor extension.xml, obsahující detaily o konkrétním rozšíření.

Soubor translationlist.xml nakopírujete na váš server, do libovolného dostupného umístění. Přímo se pro tyto účely nabízí kořenová složka vašich souborů ke stažení. Soubor extension.xml pak nakopírujete, třeba do složky se souborem, který obsahuje instalační balíček rozšíření.

Do stávajícího XML souboru instalačního balíčku (například cs-CZ.com_test_j25.xml) zapíšete ještě informaci o možnosti automatických aktualizací.

Jak to funguje:

Pokud si uživatel nainstaluje některé z vašich rozšíření, budou údaje, uvedené v instalačním XML (cs-CZ.com_test_j25.xml) o možnosti automatické aktualizace zapsány do databáze a Joomla si pak bude na vašem serveru kontrolovat údaje v souboru translationlist.xml (extension.xml) a porovnávat naistalovanou verzi s verzí dostupnou ke stažení. Pokud je dostupná verze stejná, nebo nižší, nic se neděje. Jestliže je ale dostupná verze vyšší, bude nabídnuta k automatické instalaci. Uživatel jen potvrdí instalaci.

Joomla provádí kontrolu vždy jen po přihlášení uživatele do administrační části a interval mezi jednotlivými  kontrolami je ve výchozím nastavení minimálně 6 hodin. Je tedy zřejmé, že váš server nebude nesmyslně bombardován častými dotazy. Tedy pokud nemáte po světě statisíce instalací.

Příklady souborů ke stažení:

www.bongovo.cz/download/test/example_pack.zip

Jak si zjednodušit život:

Předchozí metoda nemusí být pro každého to pravé ořechové, můžete zkusit Akeeba Live Update.


Poznámky:

  1. Další použití je již na vás. Pokud se aktualizacemi nechcete v budoucnu moc zatěžovat a máte vše připravené a funkční, stačí při vydání nové verze přehrát původní soubor s rozšířením novou verzí a v souboru translationlist.xml změnit číslo verze rozšíření. Nemusím snad připomínat, že verze uvedená v instalačním balíčku musí být shodná s verzí uvedenou v translationlist.xml.
  2. Poud máte více než jedno rozšíření, budete postupovat podobně, jen soubor translation.xml bude společný. Tam zapíšete další rozšíření na nový řádek.
  3. Pokud jste autorem překladů pro rozšíření, zamyslete se také nad typem instalačních balíčků, které používáte. Pokud jsou typu package + language, důrazně doporučuji, přečíst si článek Pozor na instalace překladů rozšíření! Váš současný způsob distribuce může napáchat velké škody!
  4. Pokud jste autorem placených rozšíření, nebude vám toto jednoduché řešení fungovat. Ale přesto jej můžete použít, postačí když v souboru translationlist.xml do detailsurl vyplníte namísto odkazu na soubor extension.xml textovou informaci, například: Toto rozšíření je pro členy předplatného dostupné na stránce... Tato se na stránce s vyhledanou aktualizací objeví a hned pod ní bude funkční odkaz na vaše stránky.