Jump to content

Override ?


Recommended Posts

  • 4 weeks later...

le override permet de réécrire une fonctionnalité de classe ou de controller sans toucher au coeur de prestashop.
Cela signifie que si demain tu mets à jour ton prestashop, les seules modifs de développement que tu as dû faire se situent dans le theme ou dans ce dossier override.

Override utilise la fonctionnalité "extends" du php objet.

Prenons l'exemple du controlleur de la homepage de prestashop.
Tu ne souhaites par exemple plus que le template qui soit affiché soit index.tpl mais home.tpl par exemple :

La manière "sale" serait de modifier IndexController.php dans /controllers/IndexController.php et de changer dans la fonction displayContent le index.tpl par home.tpl...

La manière "propre", utilisant l'override est de créer dans /override/controllers/ le fichier IndexController.php dans lequel on mettra le code ci-dessous :

<?php
class IndexController extends IndexControllerCore {
   public function displayContent()
   {
       self::$smarty->display(_PS_THEME_DIR_.'home.tpl');
   }
}



De cette manière, tu n'as pas touché au fichier original..

Link to comment
Share on other sites

Bonjour,

L'override ne concerne que les class et les controllers, pas le tpl. si vous surclasser le ordercontroler par exemple, il utilisera les tpl de votre thème par défaut sauf si dans votre code vous lui dites d'utiliser un autre tpl.

Pour les tabs de l'admin, vous pouvez mettre en tab une class qui se trouve dans vos modules. Il suffit de mettre à jour la table ps_tab. si vous voulez redéfinir l'onglet "customers" de l'admin, mettez à jour sa ligne (2 je crois) en mettant dans le champ module, le nom du module ou vous avez mis la class AdminCustomers.php. Prestashop ne prendra plus la class dans admin/tab mais la class de votre module.

Cdt

Link to comment
Share on other sites

  • 2 weeks later...
Olecore, donne nous un exemple complet en action stp.


Salut,
L'exemple de mathieu est un exemple complet en soi :

<?php
class IndexController extends IndexControllerCore {
   public function displayContent()
   {
       self::$smarty->display(_PS_THEME_DIR_.'home.tpl');
   }
}



Sinon un autre exemple complet ICI

Link to comment
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...