Jump to content

Edit History

NicolasC

NicolasC


Traduction en FR : je n'avais pas vu que j'étais sur le forum FR !!

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 !

 

NicolasC

NicolasC

Hi all,

How can I set up the PHP code of a module, so that a public static method of a PHP class of this module can then be called from within smarty's code outside of the module's .tpl file ?

 

Example :

Considering the ps_featuredproject module, let's assume

  • that I need to display for example the attached category's name on my front page
  • but outside the block generated by the module's template .tpl file (ie : outside the featured products list, somewhere else on the front page)

A solution would be to define in the module  a public static getFeaturedCateforName() in one of the module's class, then to call this static method from the main  index.tpl file, where I need.

This is likely to be possible : the "prestablog" module defines such smarty-aware static methods, for example.

However, I do not succeed to do so, and do not find a hint in the documentation.

 

My attempts :

  • When defining a static method in the core ps_featureproduct.php file located in the module's root directory , this method cannot be callable from smarty
  • When defining a static method in PHP class placed in the module/class directory, so as it is done in the prestablog module, this method cannot be callable from smarty

 

How should I proceed ?

Should I list explcitely somewhere, in a specific file, what are the methods that can be called from smarty code ?

 

Thank you very much in advance,

Nicolas

 

×
×
  • Create New...