Jump to content

utiliser un template différent pour la homepage


Recommended Posts

bonjour à tous.

Je dois sur un site faire une page d'accueil totalement différente du reste du site.

Dans l'idéal j'aimerai pouvoir y appliquer un layout/template specifique à cette page.

l'override permet maintenant ce genre de chose, pour un produit ou une catégorie specifique, mais je n'ai pas réussi à l'appliquer à l'index (pas possible ?)

http://www.prestashop.com/forums/topic/168197-override-layout-template/

 

j'aimerai eviter de conserver le layout des autres pages en y ajoutant à chaque éléments des

{if $page_name != 'index'}

ce qui ne me paraitrait pas optimum dans ce cas.

 

Une piste serait de surcharger un controleur pour le faire appeler un autre layout si $page_name == 'index'.

Cela pourrait-il marcher ? Sur quel controleur dois-je me pencher ?

une solution meilleure ?

merci !

Link to comment
Share on other sites

donc tu me conseillerais de créer un module, que j'accroche sur ce hook "actionDispatcher" que je ne connaissais pas.

ça OK

 

et l'action de ce module serait de changer le controller si $page_name =="index"

ça par contre, ça risque de ne pas être de mon niveau

Link to comment
Share on other sites

  • 2 weeks later...

J'essaie de me pencher sur ce problème.

Dans l'idéee, je surcharge FrontController.php et cette fameuse fonction getLayout() comme ceci :

 

public function getLayout()
{
 if (/* PAGE COURANTE = HOME*/)
 {
  $entity = 'home';
 }
 else
 {
  $entity = Tools::getValue('controller');
 }
 $id_item = (int)Tools::getValue('id_'.$entity);
 $layout_dir = _PS_THEME_DIR_;
 $layout_override_dir  = _PS_THEME_OVERRIDE_DIR_;
 if ($this->context->getMobileDevice() != false)
 {
  $layout_dir = _PS_THEME_MOBILE_DIR_;
  $layout_override_dir = _PS_THEME_MOBILE_OVERRIDE_DIR_;
 }
 $layout = false;
 if ($entity)
 {
  if ($id_item > 0 && file_exists($layout_override_dir.'layout-'.$entity.'-'.$id_item.'.tpl'))
   $layout = $layout_override_dir.'layout-'.$entity.'-'.$id_item.'.tpl';
  elseif (file_exists($layout_override_dir.'layout-'.$entity.'.tpl'))
   $layout = $layout_override_dir.'layout-'.$entity.'.tpl';
 }
 if (!$layout && file_exists($layout_dir.'layout.tpl')) 
  $layout = $layout_dir.'layout.tpl';
 return $layout;
}

 

J'ai bon ?

Mon problème est de savoir comment tester si PAGE COURANTE = HOME ?

Link to comment
Share on other sites

en fait si j'utilise if ($page == 'index.php') toutes les pages appellent layout-home.tpl puisque toutes les pages ont pour URL index.php?XXXX

Je me demande si il n'est pas plus simple finalement dans layout.tpl d'appeler différents templates suivant {$page_name} ?

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...