Aller au contenu

October 6, 2012

3

Ajouter des fonctions personnalisées dans les classes de prestashop

Il peut être très pratique d’ajouter des fonctions dans les classes de prestashop dans le but d’effectuer des actions plus rapidement et de manière beaucoup plus clair et simple.
Je vais vous expliquer comment faire via un exemple simple.

Par exemple, si nous souhaitons rajouter une fonction dans la classe “Product“, il suffit de se rendre dans le dossier “classes” puis d’éditer le fichier Product.php

La classe comprend déjà beaucoup de fonctions que vous pouvez modifier mais je ne le vous conseille pas, en effet, il vaudra mieux en ajouter de nouvelles, vous comprendrez rapidement pourquoi lorsque vous effectuerez une mise à jour de prestashop :D

Ici, dans la classe “Product”, ajoutons cette fonction :

public function isInCategory($id_product , $id_cate){
$cates_p = Product::getIndexedCategories($id_product);
foreach($cates_p as $z)
foreach($z as $e)
$indexed_c[] = $e;
 
if(in_array($id_cate, $indexed_c))
return true;
else
return false;
}

Essayez de deviner ce que fait cette fonction ….

Alors ? plutôt facile non ?

La fonction “isInCategory” va simplement permettre de vérifier si un produit appartient à une catégorie, on passera en paramètre l’id du produit et l’id de la catégorie.

Remarque: on utilise au sein de cette fonction, une autre méthode de la classe.

La fonction pourra alors être appelée de n’importe où grâce au code suivant:

Product::isInCategory($id_produit, $id_category);

Le code retournera alors “true” ou “false” !

Publié par
Plus d'articles pour la catégorie Tutoriels
4 Commentaires Poster un commentaire
  1. Clément Alain
    Oct 27 2011

    bonjour,

    Je n’arrive pas a trouver les fonctions qui permettent d’ajouter des nouveaux produits?
    J’ai ce besoin car je souhaite attaquer les tables directement en php pour mettre a jour plusieurs boutiques avec du code de gestion centralisé.
    Si vous avez connaissance de tutos ou des exemples je suis interessé.
    Merci d’avance

    Alain

    Reply
  2. Benjamin
    Mar 29 2012

    Bonjour,

    j’aurais voulu savoir comment je peux étendre une classe existante. Par exemple, j’aimerais pouvoir ajouter des méthodes à la classe Product, mais sans toucher au fichier de base et éviter des problèmes de migration.

    Quelle est donc l’approche la plus propre pour ajouter des fonctionnalités dans les classes existantes sans toucher aux fichiers de base?

    Merci

    Reply
    • eMizZ
      Mar 30 2012

      Utilise l’overriding !

      C’est plutôt simple, pour étendre une classe de prestashop, tu créer dans le dossier /override/classes/ un fichier php ayant le meme non que la classe que tu veux étendre.
      Puis à l’intérieur tu déclare ta classe étendu, exemple pour la classe Tools:
      class Tools extends ToolsCore
      {
      }

      Là tu peux créer des fonctions ayant le même nom que celles dans la classes de base prestashop et les tiennes prendront automatique le dessus !

      Reply
      • Benjamin
        Mar 30 2012

        Trop classe!

        Merci beaucoup!!!

        Cdlt

        Benjamin

        Reply

Partagez votre opinion, postez un commentaire.

(requis)
(requis)

Note: Le HTML est autorisé. Votre e-mail (ne sera pas publié).

S'abonner aux commentaires


+ 4 = 9