Créer un PDF Recommander Imprimer

Comment modifier le comportement de VirtueMart sans en modifier le code?

(0 votes)
  • Document type
    Tutoriel PHP
  • Niveau
    Intermédiaire
  • Version Joomla
    1.5.x
  • Dernière modification
    11.05.12
  • Version PHP
    4.x, 5.x, 5.3.x
  • Créé par
    Valérie Isaksen (alatak)
  • Version MySQL
    4.x, 5.x

Comment modifier le comportement de VirtueMart, ou ajouter une fonctionnalité, sans modifier le code de VirtueMart?
Depuis la version 1.1.4 de VirtueMart, c'est possible grâce aux user_class.

La solution: les user_class

Les user_class sont des classes enfants qui étendent ou remplacent n'importe quel classes existantes dans le code de VirtueMart. Les classes de VirttueMart sont toutes dans le dossier:

/administrator/components/com_virtuemart/classes.

Les user_class seront, elles, déclarées, et placées dans le thème de votre boutique.

Les classes parentes dans le code de VirtueMart sont toutes déclarées forme vm_ps_xxx. Les classes enfants doivent  être déclarées sous la forme ps_xxx.

Exemple:

La classe de virtuemart ps_html est déclarée:

class vm_ps_html {...}

La classe enfant doit être déclarée:

class ps_html extends vm_ps_html {…}

Le repertoire user_class dans le theme

Techniquement, VirtueMart vérifie s'il y a un fichier dans le répertoire user_class du thème. Si c'est le cas, VirtueMart utilise cette classe pour étendre la classe d'origine. Si le fichier n'est pas trouvé, alors la classe d'origine est utilisé sans extension. Le fonctionnement est analogue au fonctionnement de la réécriture de template dans Joomla 1.5 .

active_userclass

Concrètement comment faire?

  • 1. Dans la configuration de la boutique, autoriser l'usage des user_class
  • 2. Créer votre classe et votre fonction, dans un fichier ayant le même nom que le fichier d'origine
  • 3. Créer un répertoire user_class dans le thème utilisé par votre boutique au même niveau que le dossier template
  • 4. Placer votre fichier dans ce répertoire

Exemples

Affichage de la liste des civilités

Dans VirtueMart, lors de la création d'un compte dans le liste déroulante des civilités, est affiché les termes "Prof ", " Dr", " autre" (??) des titres qui ne sont pas vraiment indispensable dans le cas d'une "boutique" classique ». Grâce aux user_class, la fonction list_user_title() du fichier ps_html.php est réécrite de façon à ce qu'elle affiche uniquement les plus classiques et indispensabes "M., Mme, ou Melle ".

La solution

list_user_title

Affichage du pathway

VirtueMart a ceci de particulier, que les catégories sont supposées être affichées via un module, comme par exemple mod_virtuemart, et non avec des liens dans un menu.
VirtueMart ajoute donc automatiquement au fil d'Ariane, le nom des catégories, et le nom des produits.
Si donc on publie les catégories via un menu, le fil d'Ariane n'est pas correct, car le nom des catégories est dupliqué. Il est ajouté une première fois en tant que lien du menu par Joomla, puis une seconde fois par VirtueMart.

ariane-sans-userclass

Il faut donc réecrire la fonction qui met à jour le fil d'Ariane, de façon à ce qu'il affiche ceci:

ariane-avec-userclass

La solution

La solution consiste à réécrire la fonction vmAppendPathway() du fichier mainframe.class.php, qui est la fonction qui ajoute les catégories au fil d'Ariane.

vmAppendPathway

Conclusion

Les "user_class" sont un moyen efficace de modifier  le comportement de VirtueMart, sans en modifier le code, et bénéficier des corrections de bugs, ou de nouvelles fonctionnalités.

P.S. : le code est ajouté sous forme d'image, pour une présentation plus lisible. Dès que possible, je mettrai les exemples en téléchargement :)

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Recherche

Télécharger Joomla

telecharger joomla télécharger Joomla 1.5.26 télécharger Joomla 2.5.4 télécharger Joomla Platform 12.1

Connexion

Espace contributeurs