Skip to main content

Sviluppo estensioni per Joomla – Capitolo 2

Continuiamo ad approfondire il libro “Learning Joomla 1.5 Extension Development“, di Joseph Le Blanc, che nel capitolo 2 introduce le basi della realizzazione di componenti per Joomla.

Nomi dei componenti

Ciascun componente può essere denominato a piacere, a patto che non vada in conflitto con altri componenti omonimi installati sullo stesso sito. Il nome della cartella che contiene i file del componente sarà com_ più il nome del componente. Riprendo l’esempio del libro per dire che un componente chiamato “Restaurants” sarà contenuto in una cartella chiamata com_restaurants.

Front-end e back-end

Se non sapete la differenza tra front-end e back-end in Joomla, probabilmente non è il caso di pensare a scrivere estensioni. 🙂

Tuttavia, la differenza che ci interessa in questo momento è a livello di file system. Tutti i file relativi alla parte di amministrazione del sito sono infatti contenuti nella sottocartella administrator, mentre gli altri sono all’esterno di tale cartella.

Ciascun componente per Joomla, salvo poche eccezioni, è costituito di una parte per il front-end e una per il back-end. Quindi troverete due cartelle chiamate com_restaurants:

  • /administrator/components/com_restaurants
  • /components/com_restaurants

In entrambe le cartelle avremo sicuramente un file principale chiamato con il nome del componente, ovvero restaurants.php.

index.php e parametro option

In Joomla, la pagina che viene richiamata è sempre la stessa: index.php. Tramite i parametri, gli diciamo quale componente e quale funzione attivare nella pagina corrente. Ad esempio, richiamando l’indirizzo:

index.php?option=com_restaurants

stiamo dicendo a Joomla di caricare il componente com_restaurant eseguendo la pagina di default restaurants.php; per il momento non gli stiamo passando nessun parametro, la pagina verrà eseguita normalmente e il risultato stampato a video nella posizione dedicata al componente.

Cosa mettere in restaurants.php?

Innanzitutto, in tutte le pagine PHP di Joomla è presente all’inizio una riga simile a questa:

defined('_JEXEC') or die('Restricted access');

Questo fa sì che la pagina non possa mai essere richiamata direttamente con un URL del tipo

http://www.miosito.it/components/com_restaurants/restaurants.php

ma che debba necessariamente essere richiamata dalla index.php.

A seguire, possiamo far fare a restaurants.php quello che vogliamo ( query, elaborazioni ) come in una qualsiasi pagina PHP, stampando poi il risultato che vogliamo visualizzato. Teoricamente, potremmo anche “copiare e incollare” del codice PHP esterno; ma la programmazione avanzata per Joomla trova la sua vera potenza nell’uso degli oggetti e dei metodi specifici che ci garantiscono velocità di sviluppo, prestazioni, sicurezza, solidità del codice e coerenza dei risultati.

Registrare il componente

Esiste una tabella jos_components dove possiamo registrare il nostro componente, indicando una serie di parametri quali il nome, il link che lo attiva (“option=…”), l’immagine da usare nel menù amministrativo, e così via. Tecnicamente la presenza in questa tabella non è fondamentale per l’esecuzione del componente; tuttavia questo ci consente di vedere tale opzione nel menù componenti del nostro Pannello di controllo, nonchè la possibilità di creare voci di menù che corrispondono a tale componente.

In sostanza, ci evita di doverlo chiamare con un URL scritto manualmente, facendo in modo che Joomla ne riconosca la presenza.

Toolbar

Il primo oggetto prezioso che viene approfondito è il JToolBarHelper: questo oggetto ci consente di creare facilmente dei pulsanti di amministrazione corrispondenti alle principali funzioni (“Nuovo”,”Pubblica”,”Spubblica”,”Cancella”, e così via). I metodi relativi costruiscono il pulsante e creano automaticamente il link al componente stesso con l’indicazione della specifica attività (detta task).

Ad esempio inserendo nel nostro restaurants.php il metodo

JToolBarHelper::save()

crea un pulsante che, se cliccato, richiamerà il link

index.php?option=com_restaurants&task=save

Nel nostro file potremo poi riconoscere il task passato e richiamare di conseguenza diverse funzioni (spesso spostate in file separati, ma per adesso parlare di questo è prematuro).

Nella prossima puntata…

Dopo solo due capitoli l’impressione è che la quantità e qualità delle informazioni presenti in questo libro possano davvero portare a un livello diverso il modo di sviluppare estensioni per Joomla. Vediamo come procede, affrontando nel prossimo capitolo l’approccio MVC e la gestione del database.