Jump to content

override modules par theme


Recommended Posts

Bonjour à tous.

 

n.b.: : Désolé si j'utilise pas la bon terme si le titre est pas correct

 

Voile je cherche à mettre en forme le modules blocktopmenu par mon theme.

 

Mais ce qui m'étonne c'est qu'il faut que je créer 2 dossier, 1 pour le css, un pour le tpl???

 

je créer le css dans un dossiers /css/modules/blocktopmenu de mon theme

/prestashop15/themes/montheme/css/modules/blocktopmenu/css/

 

+

je créer le .tpl dans un dossiers /css/modules/blocktopmenu de mon theme

/prestashop15/themes/montheme/modules/blocktopmenu

 

si je met le tpl dans le premier dossier il le prend pas en compte, et si je fais l'inverse non plus???

Bizarre nan?

Link to comment
Share on other sites

Merci

J'utilise la V 1.5.0.13 (j'ai pas osé passer à la 1.5.0.15 compte-tenu des pb d'upgrade.)

 

Sinon qu'elle la bonne methode?

un dossier dans le theme/modules/nom_du_theme

ou

un dossier dans le theme/css/modules/nom_du_theme

Link to comment
Share on other sites

PrestaShop 1.4

  • /themes/my_theme/modules/my_module/my_module.tpl
  • /themes/my_theme/css/modules/my_modules/my_module.css
  • /themes/my_theme/js/modules/my_modules/my_module.js

PrestaShop 1.5

  • /themes/my_theme/modules/my_module/views/templates/front/my_module.tpl
  • /themes/my_theme/css/modules/my_modules/views/templates/front/my_module.css
  • /themes/my_theme/js/modules/my_modules/views/templates/front/my_module.js

Link to comment
Share on other sites

désol´e j'aurais du spécifier ma version dès le début mais étant dans la catégorie prestashop 1.5 c'était je pensais implicite.

En revanche ce qui est étonnant c'est que si j'utilise:

/themes/my_theme/css/modules/blocktopmenu/css/superfish-modified.css

C'est bon

 

 

/themes/my_theme/css/modules/blocktopmenu/blocktopmenu.css

Pas bon

 

en revanche ca ne fonctionne pas avec:

/themes/my_theme/css/modules/blocktopmenu/views/templates/front/blocktopmenu.css

Pas bon (normal car ce module ne contient pas de dossier views)

Edited by jd440 (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

Salut jd440, si tu veux étendre la class (fichier php) d'un module utilises ce code qu'il te faudra mettre dans le répertoire override/class/module :

<?php

abstract class Module extends ModuleCore
{
public static function getInstanceByName($moduleName)
{
if (!isset(self::$_INSTANCE[$moduleName]))
{
if (Tools::file_exists_cache(_PS_MODULE_DIR_.$moduleName.'/'.$moduleName.'.php'))
{
include_once(_PS_MODULE_DIR_.$moduleName.'/'.$moduleName.'.php');  

/*** HACK START */
if (file_exists(_PS_THEME_DIR_.'modules/'.$moduleName.'/'.$moduleName.'.php')){
// include the file
include_once(_PS_THEME_DIR_.'modules/'.$moduleName.'/'.$moduleName.'.php');// <- NEW ALTERNATIVE
$moduleName = $moduleName.'Ovr';
}
/*** HACK END */
if(class_exists($moduleName, false)){
return self::$_INSTANCE[$moduleName] = new $moduleName;
}
}
return false;
}
return self::$_INSTANCE[$moduleName];
}
}

Edited by erehcab (see edit history)
  • Like 3
Link to comment
Share on other sites

  • 1 month later...

Bizarre, je suis en 1.5.2 et j'override mes .css et .tpl de modules par ces chemins :

  • /themes/my_theme/modules/my_module/my_module.tpl
  • /themes/my_theme/css/modules/my_modules/my_module.css

Si j'essaie ceci, ça ne fonctionne pas

  • /themes/my_theme/modules/my_module/views/templates/front/my_module.tpl
  • /themes/my_theme/css/modules/my_modules/views/templates/front/my_module.css

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Bizarre, je suis en 1.5.2 et j'override mes .css et .tpl de modules par ces chemins :

  • /themes/my_theme/modules/my_module/my_module.tpl
  • /themes/my_theme/css/modules/my_modules/my_module.css

Si j'essaie ceci, ça ne fonctionne pas

  • /themes/my_theme/modules/my_module/views/templates/front/my_module.tpl
  • /themes/my_theme/css/modules/my_modules/views/templates/front/my_module.css

 

Idem, l'overriding d'une structure "my_module/views/templates/front/my_module.tpl" en "/themes/my_theme/modules/my_module/views/templates/front/my_module.tpl" ne semble pas fonctionner comme il faut. Cela marche seulement en utilisant l'overriding : "/themes/my_theme/modules/my_module/my_module.tpl".

 

Je suis aussi en 1.5.2.0

Edited by GuillaumeT (see edit history)
Link to comment
Share on other sites

  • 3 months later...

Voilà juste une petite correction du code ci-dessus pour que cela fonctionne sur la version 1.5.3

 

<?php
abstract class Module extends ModuleCore
{
public static function getInstanceByName($module_name)
{
 if (!Validate::isModuleName($module_name))
  die(Tools::displayError());
 if (!isset(self::$_INSTANCE[$module_name]))
 {
  if (Tools::file_exists_cache(_PS_MODULE_DIR_.$module_name.'/'.$module_name.'.php'))
  {
   /*** HACK START */
   if (file_exists(_PS_THEME_DIR_.'modules/'.$module_name.'/'.$module_name.'.php'))
   {
 // include the file
 include_once(_PS_THEME_DIR_.'modules/'.$module_name.'/'.$module_name.'.php');
   }
   else
   {
 include_once(_PS_MODULE_DIR_.$module_name.'/'.$module_name.'.php');
   }
   /*** HACK END */

   if (class_exists($module_name, false))
 return self::$_INSTANCE[$module_name] = new $module_name;
  }
  return false;
 }
 return self::$_INSTANCE[$module_name];
}
}

  • Like 2
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...