La JED è una sorta di App Store ufficiale di Joomla! dove poter trovare moltissime estensioni compatibili con il CMS quali componenti, moduli e plugin. Sulla JED però le estensioni non vengono acquistate direttamente, ma vengono soltanto mostrate come una sorta di catalogo indicizzato. Il download o l'eventuale acquisto viene fatto sui siti degli sviluppatori proprietari delle estensioni desiderate.
Scrivo questo articolo in quanto non ci sono molte informazioni riguardo l'implementazione del sistema di aggiornamento nativo di Joomla, specialmente per le estensioni non gratuite, e vorrei fare un po' di chiarezza condividendo quanto appreso dalla mia esperienza personale.
Questo argomento interessa per lo più gli sviluppatori che hanno le proprie estensioni pubblicate sulla JED o che hanno intenzione di pubblicarne delle nuove.
In uno dei prossimi articoli, descriverò come utilizzare Virtuemart ed un suo plugin per l'acquisto di prodotti digitali, per gestire l'aggiornamento delle proprie estensioni a pagamento compatibilmente con il Joomla Update System, soddisfacendo i requisiti della JED.
Dal 10 gennaio 2017, tutte le nuove estensioni inviate per la revisione sulla JED dovranno essere compatibili con il sistema nativo di Joomla! per l'aggiornamento delle estensioni.
Qui i casi sono due:
- Caso numero uno, estensioni già pubblicate sulla JED. Le estensioni non verranno rimosse dal portale, sarà però indicato in modo molto visibile, che l'estensione non è compatibile con il Joomla Update System (attualmente questo è indicato da un testo di colore rosso vicino alle specifiche dell'estensione). Inoltre, quando si preme il tasto per il download, un popup in primo piano ci avviserà di nuovo dell'incompatibilità dell'estensione con il Joomla Update System, e che dovremo recarci manualmente sul sito dello sviluppatore di tanto in tanto per verificare che l'estensione sia aggiornata, o per scaricare l'aggiornamento in caso sia disponibile.
- Caso numero due, estensioni da inviare per la revisione e per la successiva pubblicazione sulla JED. Le estensioni non potranno essere inviate per la revisione se non compatibili con il Joomla Update System, di fatti una checkbox obbligatoria, che indica la conferma da parte nostra alla compatibilità, ci vieta di proseguire se non abbiamo messo il segno di spunta.
Anche se il mio consiglio (ed il consiglio di molti altri sviluppatori) è quello di conformarsi al sistema di aggiornamenti nativo di Joomla! che funziona egregiamente, chi ha già pubblicato una o più estensioni sulla JED non è quindi obbligato ad aggiornarla. Chi invece deciderà di cimentarsi nello sviluppo di un'estensione per Joomla! dovrà necessariamente implementare tale sistema.
Entrando nel dettaglio del sistema di aggiornamento, l'implementazione per le estensioni free è piuttosto semplice, in quanto non richiede alcuna verifica prima del download. Per implementare il sistema sulle estensioni gratuite, è sufficiente inserire nel file XML della propria estensione il tag "updateservers" inserendo al suo interno l'indirizzo del file XML, dove sarà possibile controllare l'ultima versione dell'estensione, nel modo mostrato sotto.
<updateservers> <server type="extension" priority="2" name="Nome">tuodominio.it/file.xml</server> </updateservers>
Nel file XML che risiede sul server, dovremo seguire una formattazione che fornirà a Joomla! tutti i dati necessari per controllare la versione dell'estensione ed eventualmente per scaricare l'aggiornamento. Sotto è visibile un esempio di file XML da inserire sul proprio server per implementare il Joomla Update System sulle nostre estensioni.
<updates> <update> <name>Nome estensione</name> <description>Descrizione estensione</description> <element>mod_nome_estensione</element> <type>module</type> <client>site</client> <version>1.0.1</version> <infourl title="Nome sviluppatore">tuodominio.it/prodotto.html</infourl> <downloads> <downloadurl type="full" format="zip">tuodominio.it/file.zip</downloadurl> </downloads> <tags> <tag>stable</tag> </tags> <maintainer>Nome sviluppatore</maintainer> <maintainerurl>tuodominio.it</maintainerurl> <section>Updates</section> <targetplatform name="joomla" version="3.*"/> </update> </updates>
Nel codice riportato sopra possiamo osservare tutti i tag XML che Joomla! utilizza per verificare l'aggiornamento eventualmente disponibile.
- Name, indica il nome dell'estensione.
- Description, indica la descrizione dell'estensione.
- Element, indica l'identificativo di sistema dell'estensione, ovvero il nome con cui Joomla! riconosce tale estensione.
- Type, indica il tipo dell'estensione che può essere component, module, plugin, template.
- Client, indica la parte di sito a cui l'estensione si riferisce.
- Version, indica l'ultima versione attualmente disponibile.
- Infourl, indica la pagina della descrizione dell'estensione sul server remoto.
- Downloadurl, indica l'indirizzo da dove scaricare il pacchetto (l'eventuale extra query viene aggiunta dal sistema dopo questo URL, prosegui la lettura dell'articolo per capire di cosa stiamo parlando).
- Tag, indica la release dell'estensione, dove stable sta a significare che la versione in oggetto non è una beta.
- Mantainer, indica il nome dello sviluppatore.
- Mantainerurl, indica il sito web dello sviluppatore.
- Targetplatform (version), indica la versione di Joomla! con la quale l'estensione è compatibile (3.* significa tutte le sotto-versioni di Joomla! 3).
Le cose si complicano molto per chi desidera pubblicare estensioni a pagamento, le quali richiederanno di verificare che l'utente abbia acquistato il prodotto prima di effettuare il download.
La JED, per adesso, non ha ancora messo a disposizione una guida o un metodo ufficiale per ottenere questo risultato, perciò ogni sviluppatore deve progettare e creare il proprio metodo.
Nel database di Joomla sono presenti due tabelle che riguardano gli aggiornamenti, la prima è #__update_sites, dove troveremo i veri e propri link per l'aggiornamento delle estensioni, la seconda è #__update_sites_extensions, dove troveremo le corrispondenze tra gli ID dei siti di aggiornamento e gli ID delle estensioni da aggiornare.
Joomla! ci viene in aiuto con una colonna speciale chiamata extra_query sita nella tabella #__update_sites che di default è vuota, ma che può contenete una parte di URL aggiunto al normale URL dato dal file XML che risiede sul nostro server al momento della richiesta di aggiornamento. In questo modo (una volta creato un controllo sul nostro sito web) potremo verificare che l'utente abbia effettivamente acquistato l'estensione prima di permettere il download dell'aggiornamento.
Ci sono molti componenti per Joomla! per la vendita e/o distribuzione di software, ed ogni sviluppatore utilizza quello che ritiene più opportuno in base alle proprie esigenze. L'unico componente che attualmente offre un sistema funzionante per fare il controllo prima del download degli aggiornamenti a pagamento è Akeeba Release System ora in avanti chiamato ARS. ARS è disponibile gratuitamente per il download, ed ha una guida da poter seguire (in lingua inglese). In uno dei prossimi articoli vedremo come poter implementare il Joomla Update System tramite ARS oppure tramite Virtuemart ed un suo plugin per la vendita dei prodotti digitali.
Ricapitolando, nel file XML contenuto nel pacchetto della nostra estensione dovremo dichiarare l'indirizzo del server di aggiornamento. Tale indirizzo porterà ad un altro file XML che conterrà i parametri utilizzati da Joomla! per aggiornare la nostra estensione. Se l'estensione non è gratuita e vogliamo effettuare un controllo prima del download, dovremo inserire nel database una query (una parte di URL) che consentirà, tramite un controllo personalizzato, di verificare che l'utente abbia il permesso di aggiornare.
Commenta questo articolo sul forum