Jump to content
NicolasC

Comment faire pour pouvoir appeler une méthode de classe d'un module depuis du code Smarty

Recommended Posts

Bonjour,

comment puis-je définir une méthode static dans le code PHP d'un module de telle sorte que cette méthode puisse être appelée de n'importe quel fichier template smarty ?

 

Example :

COnsidérons le module ps_featuredproducts. Mettons

  • que j'ai besoin d'afficher le nom (ou lien ou image...) de la catégorie associée à ce module
  • mais quelque part sur la page de garde, loin du bloc généré par le fichier .tpl du module (loin de la liste des produits donc).

Une solution pratique serait de définie une méthode public static, par exemple public static function getCategoryName(), dans une classe PHP du module.

Puis d'appeler cette méthode depuis le code Smarty du fichier template index.tpl de ma page de garde.

 

Ca devrait être possible : le module "prestablog" définit ce genre de méthode static et je peux bien les appeler depuis n'importe quel template en smarty.

Mais je n'y arrive pas... et ne trouve pas d'info dans la doc.

 

Mes tentative :

  • j'ai défini une méthode public static dans le fichier ps_featureproduct.php à la racine du module. Mais ca ne marche pas : pas appelable depuis le code smarty.
  • j'ai défini une méthode public static dans une classe placée dans le répertoire ps_featuredproducts/class, en m'inspirant de ce qui est fait dans le module "prestablog". Mais ca ne marche pas non plus : il n'est pas possible de l'appeler depuis index.tpl.

 

Comment devrais-je faire ?

Est-ce que par exemple il y a un "fichier secret" à définir dans le module, dans lequel il me faudrait  lister toutes les méthodes de classe que je veux rendre disponible en smarty ?

Ou une autre ruse bien sentie ?

 

 

merci X1000 pour votre aide à venir !

 

Edited by NicolasC
Traduction en FR : je n'avais pas vu que j'étais sur le forum FR !! (see edit history)

Share this post


Link to post
Share on other sites

Puisque tu poses la question sur le forum francophone on va partir du principe que tu l'es.

Il n'y a aucun problème pour appeler une fonction statique d'une module depuis smarty mais il est nécessaire que le module soit chargé avant.

En général quand ce besoin se fait sentir (même si la plupart du temps c'est que ton code est mal organisé) il te suffit d'instancier ton module en l'accrochant au hookHeader par exemple

 

Share this post


Link to post
Share on other sites

Eheh merci, super.

Je vais essayer.

Et tu as vu, j'ai été discipliné : j'ai traduit mon post en FR 😀

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More