Comment modifier le comportement de VirtueMart sans en modifier le code?
-
Document typeTutoriel PHP
-
NiveauIntermédiaire
-
Version Joomla1.5.x
-
Dernière modification11.05.12
-
Version PHP4.x, 5.x, 5.3.x
-
Créé parValérie Isaksen (alatak)
-
Version MySQL4.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 {…}

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 .

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
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.

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

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.
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 :)
-
-
Catégories






Ajouter un Commentaire