samedi 9 octobre 2010

Joomfish module personnalisé (com_tpresto)

Joomfish! le célèbre composant qui rend votre site Joomla Multilingue n'est pas parfait, et ce parce qu'il ne supporte pas tout les composants, surtout les moins utilisés, et c'est normal. Mais ce n'est pas la fin du monde car les gars de Joomfish! ont tout pris en compte.

Il suffit de créer un petit fichier XML décrivant les information du module a traduire, un petit tutoriel est aussi disponible a cette adresse: http://docs.joomla.org/Adding_Joomfish_functionality_to_custom_components

En ce qui me concerne j'ai le module com_tpresto de chez TemplatePlazza qui n'est pas supporté par Joomfish!.

Je commence par accéder a ma base de donnée et repérer les tables qu'utilise ce module, qui sont:



je vais me concentrer sur jos_tpresto_items ou sont stockés tous les Items.


Apart le champ id qui doit toujours etre fournit a Joomfish!, j'aurais besoin de traduire le champ titre et description.
Je crée un nouveau fichier XML avec le nom de la table comme nom de fichier sans le "jos_" (Obligatoire!) comme suit :  administrator/components/com_joomfish/contentelements/tpresto_items.xml , puis je vais l'ouvrir avec un éditeur de texte et ecrire ceci :

<?xml version="1.0" ?>
<joomfish type="contentelement">
<name>TPResto - items</name>
<author>S. Bourouis</author>
<version>1.0</version>
<description>Definition for the TPResto component</description>
<reference type="content">
    <table name="tpresto_items">
        <field type="referenceid" name="id" translate="0">ID</field>
        <field type="titletext" name="title" translate="1">Title</field>
        <field type="htmltext" name="description" translate="1">Description</field>
    </table>
</reference>
</joomfish>

la partie la plus importante de ce fichier est la partie qui suit la balise <reference type="content">.

  • Je précise le nom de ma base sans "jos_" => <table name="tpresto_items">
  • Je spécifie la clé primaire de la table => <field type="referenceid" name="id" translate="0">ID</field>
  • je spécifie les champs a traduire => <field type="titletext" name="title" translate="1">Title</field> et <field type="htmltext" name="description" translate="1">Description</field>

avec les attributs:

  • translate="0" => ne pas traduire / translate="1" => traduire
  • name="id" => le nom du champ dans la base
  • type="titletext" => le nature du formulaire a afficher pour la variable dans le formulaire de traduction.
c'est tout, il suffit d'aller dans le panneau d'admin de Joomfish et de chercher "TPResto - items" dans le menu déroulant.

Si apres traduction rien ne se passe dans le site, il vous faut aller dans le fichier php du module (inutile pour notre example) et changer tout les
$query = 'SELECT champ FROM #__table'; 
par
$query = 'SELECT * FROM #__table'; 
pour permettre a Joomfish! de reconnaître l'id de l’élément a traduire.
Il suffit après de faire de même pour les autres tables du composant pour avoir la traduction complète.

Pour plus d'informations laissez un commentaire.

Aucun commentaire:

Enregistrer un commentaire