Virtuemart et la personnalisation des messagesMise à jour le Mardi, 16 Juin 2009 14:11 Écrit par Tr@nquille Mercredi, 22 Avril 2009 23:19 Je souhaite personnaliser les messages virtuemart.Une technique courante consiste à aller modifier directement les fichiers de langue de Virtuemart, dans la langue concernée. Tout ça se passe dans: /www/administrator/components/com_virtuemart/languages/ une arborescence complète assez intuitive par rapport à la localisation des messages que l'on souhaite modifier. Bon, étudions un cas pratique, c'est plus parlant: On va modifier le message lié au mini-panier, comme quoi 'votre panier est actuellement vide' la technique complète de mise en place et d'adaptation d'un template pour vm est expliquée dans cet article: Personnalisation complète du mini-panier Repérons dans notre page /www/components/com_virtuemart/themes/default/templates/common/minicart.tpl.php 'PHPSHOP_EMPTY_CART' qui correspond à l'affichage au final d'un message comme celui-ci: Je modifie le contenu de cette variable en 'votre panier est presque vide' et lorsque je teste sur le site mon message à moi apparait, bref c'est ok aussi. Autre solution, en utilisant une nouvelle variable dans le code php du template (PHPSHOP_PANIER_VIDE) :
echo $VM_LANG->_('PHPSHOP_PANIER_VIDE')
puis en la créant aussi dans le bon fichier common/french.php, à la fin de préférence: //ne pas oublier de rajouter une virgule après la dernière variable présente 'PHPSHOP_PANIER_VIDE' => 'Votre panier est presque vide.' ça fonctionne aussi. Mais encore une fois, à la prochaine mise à jour de Virtuemart, cette modif sera surement écrasée. L'idéal serait de pouvoir rajouter no(s)tre propre(s) fichier(s) qui contiendraient nos variables, et qui viendraient s'ajouter aux fichiers de langue par défaut de Virtuemart.
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
*
* mes chaines de messages
*
*/
global $VM_LANG;
$langvars = array (
'CHARSET' => 'UTF-8',
'PHPSHOP_PANIER_VIDE' => 'Votre panier est presque vide.'
); $VM_LANG->initModule('custom', $langvars );
?>
Dans l'appel de la fonction initmodule en fin de fichier j'ai bien modifié le nom du 'répertoire' pour mettre le mien. je teste et ça ne fonctionne pas. C'était trop simple... j'ai bien cherché mais pour rajouter un dossier de module de langue c'est pas simple. Il me reste à tester ça:je crée un fichier.php dans la racine de mon template virtuemart contenant un tableau que je garnirai au fur et à mesure de mes variables messages. Ensuite, dans le fichier theme.php au même endroit, j'inclus ce fichier.php en global et le tour est joué. Si je veux gérer plusieurs langues, je crée un fichier par langue (french.php pour le français) et je teste dans le fichier theme.php quelle langue est utilisée par joomla pour la boutique. Il faut se souvenir que virtuemart s'appuie sur la langue choisie dans joomla pour s'adapter au langage. J'utilise donc le même système de sélection de langue, avec orthographe exacte donc... à suivre pour les tests maintenant.En attendant, j'utilise la technique du début, à savoir que je modifie la variable langue appelée par la page pour laquelle je souhaite modifier le message. Et je note toutes mes modifs en prévision des mises à jour Virtuemart... |


