Creare un’estensione Joomla compatibile con Joom!Fish
Joom!Fish è un'estensione di Joomla che permette di creare siti multilingua, traducendo i contenuti, i menu e tutte le estensioni installate sul sito.
Tutte, purchè siano compatibili con il sistema di traduzione utilizzato da Joom!Fish.
Perchè la nostra estensione sia compatibile, dobbiamo:
- usare l'API di Joomla per interrogare il database e recuperare i dati, e non eseguire query dirette a MySQL: in sostanza, utilizzare l'architettura MVC su cui si basa Joomla! 1.5
- assicurarci che le tabelle utilizzate (in cui sono memorizzati gli elementi che vogliamo tradurre) abbiano una chiave primaria o un indice
Tenuto conto di queste considerazioni, è necessario creare un file per interfacciarsi a Joom!Fish.
Installato Joom!Fish nel sistema, apriamo la cartella "administrator/components/com_joomfish/contentelements". Troviamo una serie di file. Questi file sono quelli che consentono la scelta del componente da tradurre da interfaccia di amministrazione.

Apriamone uno per vedere come è strutturato, ad esempio weblinks.xml
<?xml version="1.0" ?>
<joomfish type="contentelement">
<name>Weblinks</name>
<author>A. Kempkens</author>
<version>2.0</version>
<description>Definition for the core web links component</description>
<reference>
<table name="weblinks">
<field type="referenceid" name="id" translate="0">ID</field>
<field type="titletext" name="title" translate="1">Title</field>
<field type="textarea" name="description" translate="1">Description</field>
<field type="text" name="url" translate="1">URL</field>
</table>
</reference>
</joomfish>
Per convenzione ciascun file ha il nome della tabella che si occupa di tradurre, escluso il prefisso.
Il tag name è quello visualizzato nel menu drop-down mostrato nell'immagine. All'interno del tag table, troviamo una serie di tag field. Essi sono usati per tradurre i singoli campi della tabella #__weblinks. Il nome del campo è identificato dall'attributo name.
Inserendo quindi dei tag field per ogni campo della tabella della nostra estensione (o di più tabelle, usando multipli tag table) , possiamo permettere la traduzione di ogni campo della nostra estensione, utilizzati nel frontend.
Se il valore dell'attributo translate del tag field è uguale a 0, esso non verrà mostrato nell'interfaccia di traduzione.
Un altro tag utilizzabile all'interno del tag table è filter: ad esempio la dicitura <filter>c.state >= 0</filter> permette di filtrare le voci, mostrando in Joom!Fish solo le tuple che hanno il campo state maggiore o uguale a 0.
I valori dell'attributo type del tag field possono essere
| referenceid | usato per identificare la chiave primaria della tabella |
| titletext | è l'input box riservato al campo title |
| text | è un input box |
| textarea | è una area di testo (text area) |
| htmltext | è una area di testo con editor WYSIWYG |
| created_date | la data di creazione dell'elemento |
| modified_date | la data di ultima modifica dell'elemento |
| checked_out_by | chi è stato l'ultimo utente ad aver fatto un checkout sull'elemento |
| checked_out_date | la data di questo checkout |
Una volta creato e salvato questo file, accedendo all'interfaccia di amministrazione di Joom!Fish troveremo tra gli elementi del contenuto anche la nostra tabella.
Per maggiori e più avanzate opzioni di configurazione di questo file, si veda questo articolo pubblicato sul sito ufficiale di Joom!Fish.
La traduzione è eseguita nel consueto modo cui Joom!Fish ci ha abituati, e - poste le premesse iniziali - è gestita in modo assolutamente automatico ed indipendente da come è realizzata e configurata la nostra estensione.
