Jump to content

Slider pleine page


Recommended Posts

Bonjour, j'aimerais connaître la manipulation afin de faire apparaître sur ma page d'accueil mon slider en pleine page c'est-à-dire que j'aimerais faire redescendre les colonnes de gauche et de droite afin que le slider puisse faire la taille de ma page .

 

d'avance merci

Link to comment
Share on other sites

bonjour merci pour la reponse mais comment greffer ce module dans top of pages je vois bien le module dans le sous menu position des modules, il est greffé sur homepage content mais impossible de le deplacer vers top of pages....

 

merci

 

Apres quelques petites recherches, g trouve qu'il fallait ajouter un morceau de code dans le fichier php du module , g deux fichiers,

HomeSlide.php

HomeSlideer.php

 

j'ai rajouter ce morceau de code

function hookLeftColumn($params)

{

return $this->hookHome($params);

}

function hookRightColumn($params)

{

return $this->hookHome($params);

}

function hookFooter($params)

{

return $this->hookHome($params);

}

function hookTop($params)

{

return $this->hookHome($params);

}

 

il m'est maintenant possible de greffer le module la ou je le veux mais la page index de mon site reste blanche une fois le module greffé.

 

d'avance merci

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

je comprends pas pourquoi tu as eu besoin d'éditer le code.

Pour greffer un module ça se fait en back office dans l'onglet modules/position

en haute de page on choisit le module et le hook où on veut le greffer (le top of pages)

auparavant on le supprime du hook de homepage content pour qu'il n'y ait pas de conflit et c'est tout

après on adapte les paramètres du slider à sa postion , taille , css etc...

Link to comment
Share on other sites

Bonjour

 

merci de l'attention que tu portes a mon probleme, en fait il ne veux pas me greffer le module il me dit que ce module ne peut etre greffer a cet endroit si je conserve le code d'origine... une fois le code changé avec le rajout des lignes ci dessus le module accepte de se greffer mais la page index est toute blanche. Je repasse donc avec le code d'origine est tout rentre a nouveau dans l'ordre.

Link to comment
Share on other sites

Salut,

 

J'en suis au même point que toi.

Pas d'explication claire nulle part ou alors en renvoyant sur :

return $this->hookLeftColumn($params);

 

Et je ne comprends pas la logique d'appeller un hook leftColumn pour un hook qu'on veut créer...

 

Voila où j'en suis :

J'ai appellé mon hook "SlideShow"

 

Donc dans homeslider.php

function install :

if (parent::install() OR !$this->registerHook('SlideShow') && $this->registerHook('displayHome') && $this->registerHook('actionShopDataDuplication')) {

 

J'ai ensuite ajouté ma fonction de hook toujours dans le fichier homeslider.php

 

public function hookSlideShow() {

return $this->hookDisplayHome();

}

 

Dans header.tpl aprés </head>

<div>{hook h="SlideShow"}</div>

 

A ce stade là j'ai les images qui s'affichent.

Mais je n'ai pas les .js et les .css

 

Dans la console de debuggage dans la partie assigned templates variables

Mon hook n'apparait pas mais les images s'affichent.

 

Si dans override > classes > controller > Front controller.php

Je mets

class FrontController extends FrontControllerCore {

 

public function initContent() {

$this->process();

if (!isset($this->context->cart))

$this->context->cart = new Cart();

if ($this->context->getMobileDevice() == false) {

// These hooks aren't used for the mobile theme.

// Needed hooks are called in the tpl files.

if (!isset($this->context->cart))

$this->context->cart = new Cart();

$this->context->smarty->assign(array(

'HOOK_HEADER' => Hook::exec('displayHeader'),

'HOOK_SLIDESHOW' => Hook::exec('SlideShow'),

'HOOK_TOP' => Hook::exec('displayTop'),

'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),

'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),

));

}

else {

$this->context->smarty->assign(array(

'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'),

));

}

}

 

}

 

ça marche ! Mon hook apparait dans la console de débuggage.

 

Mis à part que je ne veux ce carrousel que sur la home page et pas sur toutes les pages.

Mis à part que je ne suis pas sur que ce soit la bonne méthode.

 

Je ne comprends pas qu'il n'y ait pas d'explications claires.

 

Any help ?

Link to comment
Share on other sites

J'ai modifié

 

<div>{hook h="SlideShow"}</div>

 

par :

{if $page_name == 'index'}

<div>{hook h="SlideShow"}</div>

{/if}

 

Il n'apparait plus que sur la home.

Par contre j'ai toujours les .js et la css sur les autres pages.

 

Any help ?

Link to comment
Share on other sites

Un peu de technique...

 

return $this->QQChose(); 

que tu trouves dans tes hooks permet en fait de renvoyer le code HTML généré par la méthode QQChose()...

 

les les noms des hooks correspondent aux emplacements autorisés.

 

Donc, dans ton cas, tu as dans ton code de slider ça:

function hookLeftColumn($params)
{
 [...]
}

 

rajoute simplement ce nouveau hook:

 

function hookHome($params)
{
 return $this->hookLeftColumn($params);
}

 

Ce qui veux dire... Sur le Hook Home, renvoyer le même contenu que le Hook LeftColumn pour cet objet ($this) avec les mêmes paramètres ($param).

 

Fais nous un retour!

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

Merci SoluNext,

 

C'est justement ça que je ne trouve pas logique

 

function hookHome($params)<br>{<br>  return $this->hookLeftColumn($params);<br>}

 

Pourquoi me greffer au HookLeft ? c'est un hook de hook ?

Un raccourci ?

 

J'ai actuellement trouvé la solution suivante :

 

Mon hook est "SlideShow"

 

Header.tpl

{hook h="SlideShow"}

 

FrontController.php

public function initContent() {

$this->process();

global $smarty;

$page = $smarty->tpl_vars['page_name']->value;

if (!isset($this->context->cart))

$this->context->cart = new Cart();

if ($this->context->getMobileDevice() == false) {

// These hooks aren't used for the mobile theme.

// Needed hooks are called in the tpl files.

if (!isset($this->context->cart))

$this->context->cart = new Cart();

 

if ($page == 'index') {

$this->context->smarty->assign(array(

'HOOK_SLIDESHOW' => Hook::exec('SlideShow')

));

}

 

$this->context->smarty->assign(array(

'HOOK_HEADER' => Hook::exec('displayHeader'),

'HOOK_TOP' => Hook::exec('displayTop'),

'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),

'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),

));

} else {

$this->context->smarty->assign(array(

'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'),

));

}

}

 

homeslider.php

public function hookSlideShow() {

global $smarty;

$page = $smarty->tpl_vars['page_name']->value;

 

if (!$this->_prepareHook() && $page != "index")

return;

 

// Check if not a mobile theme

if ($this->context->getMobileDevice() != false)

return false;

 

$this->context->controller->addJS($this->_path . 'js/jquery.bxSlider.min.js');

$this->context->controller->addCSS($this->_path . 'bx_styles.css');

$this->context->controller->addJS($this->_path . 'js/homeslider.js');

return $this->display(__FILE__, 'homeslider.tpl');

}

 

J'arrive au résultat escompté.

 

Cependant je trouve ça bien compliqué et je ne suis pas sur que ce soit la meilleure façon de faire.

 

Le HookLeftLeftColumn me permet en fait de me passer de l'overrride mais je ne trouve pas ça logique.

 

Question de point de vue ?

Link to comment
Share on other sites

Il ne faut pas voir la programmation de PrestaShop comme les bons vieux codes linéaires, mais il faut penser Objet...

 

En retournant dans le HookHome le même contenu que ce qui est retourné par le HookLeftColumn, tu évites de recopier dans HookHome tout ce qui se trouve dans la procédure HookLeftColumn.

 

On appelle ça de l'héritage.

Ca signifie que, si un jour il y a une mise à jour de code, tout ce qui sera modifié pour le HookLeftColumn sera automatiquement répercuté au HookHome car il l'utilise comme source de contenu!

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