Jump to content

[RESOLU] Afficher le homeslider sur n'importe quelle page (et pas que sur la page d'accueil) ?


Recommended Posts

Bonjour à tous,

 

tout est dans le titre : je cherche à faire apparaitre le homeslider sur certaines autres pages que la page d'accueil.

Il est bien greffé dans displayheader et displaytopcolumn, maintenant je voudrais qu'il soit vraiment sur ces pages...

 

Quelqu'un peut me dire ou je peux changer ça ?

 

Merci d'avance

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

Il faudrait vérifier dans votre header.tpl, ou index.tpl mais le Hook displaytopcolumn ne doit être inclus que sur la home page je suppose (ce qui est le cas si il est présent dans l'index.tpl en fait...)

 

Si il est dans le header.tpl, il est peut être entouré d'une condition du type :

 

{if $page_name == 'index'}

   {displaytopcolumn }

{/if}

Link to comment
Share on other sites

Bonjour et merci Szed.

 

Je n'ai rien concernant le displaytopcolumn dans le index.tpl, et dans le header.tpl j'ai ceci :

 

<div class="columns-container">
                <div id="columns" class="container">
                    {if $page_name !='index' && $page_name !='pagenotfound'}
                        {include file="$tpl_dir./breadcrumb.tpl"}
                    {/if}
                    <div class="row">
                        <div id="top_column" class="center_column col-xs-12 col-sm-12">{hook h="displayTopColumn"}</div>
                    </div>
                    <div class="row">
                        {if isset($left_column_size) && !empty($left_column_size)}
                        <div id="left_column" class="column col-xs-12 col-sm-{$left_column_size|intval}">{$HOOK_LEFT_COLUMN}</div>
                        {/if}
                        <div id="center_column" class="center_column col-xs-12 col-sm-{12 - $left_column_size - $right_column_size}">

 

Mon niveau étant proche du cro-magnon, pourriez-vous m'indiquer ou je dois placer la condition ?

 

Merci :)

Link to comment
Share on other sites

Votre hook n'est justement pas entouré d'une condition.

Donc au vu de cela, il devrait être appelé sur toute les pages.

 

Donc trois possibilité :

 - Sur les autres pages, le hook/slider est caché en CSS.

 - Dans Modules > Positions, le slider à toutes les pages en exceptions, hormis la page d'accueil.

 - La condition "tu ne t'affiche que sur la home", est directement dans le .tpl du module.

 

Avez vous un lien vers votre site.

Si il s'agit du site ecigopaline, il ne s'agit pas de la solution CSS.

Je pencherais pour des exceptions.

Link to comment
Share on other sites

Il s'agit bien du site dans ma signature...

Pour être vraiment précis, j'ai fait un homesliderbis en local, que je ne voudrais afficher que sur quelques pages créées directement (en suivant ce topic).

Mes pages sont crées, le homesliderbis fonctionne correctement et je lui ai appliqué les exceptions que je veux.

Il doit donc s'agir de votre troisième option, je vais vérifier le .tpl et je reviens dire ce qu'il en est...

Link to comment
Share on other sites

Re.

Donc, dans le fichier homesliderbis.php (je n'ai pas trouvé de fichier .tpl dans ce module...) voici la partie qui concerne les hook :

 

public function hookdisplayHeader($params)
    {
        if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
            return;
        $this->context->controller->addCSS($this->_path.'homesliderbis.css');
        $this->context->controller->addJS($this->_path.'js/homesliderbis.js');
        $this->context->controller->addJqueryPlugin(array('bxslider'));

        $slider = array(
            'width' => Configuration::get('homesliderbis_WIDTH'),
            'speed' => Configuration::get('homesliderbis_SPEED'),
            'pause' => Configuration::get('homesliderbis_PAUSE'),
            'loop' => (bool)Configuration::get('homesliderbis_LOOP'),
        );

        $this->smarty->assign('homesliderbis', $slider);
        return $this->display(__FILE__, 'header.tpl');
    }

    public function hookdisplayTop($params)
    {
        return $this->hookdisplayTopColumn($params);
    }

    public function hookdisplayTopColumn($params)
    {
        if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
            return;

        if (!$this->_prepareHook())
            return false;

        return $this->display(__FILE__, 'homesliderbis.tpl', $this->getCacheId());
    }

    public function hookDisplayHome()
    {
        if (!$this->_prepareHook())
            return false;

        return $this->display(__FILE__, 'homesliderbis.tpl', $this->getCacheId());
    }

    public function clearCache()
    {
        $this->_clearCache('homesliderbis.tpl');
    }

 

Que dois-je changer pour qu'il s'affiche sur la page "new" que j'ai créée ?

Link to comment
Share on other sites

Dans cette fonction 

 public function hookdisplayTopColumn($params)
{
   if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
            return;

   if (!$this->_prepareHook())
            return false;

   return $this->display(__FILE__, 'homesliderbis.tpl', $this->getCacheId());
}

Je ne suis pas sur de mon coup, mais je pense que c'est le : 

if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
   return;

 

qui vérifie si l'on n'est pas sur la page d'accueil.

Enfin, c'est plutot, "si on n'est pas sur la home, on ne fait rien".

 

Commentez ces 2 lignes, ou supprimer les, pour tester.

  • Like 1
Link to comment
Share on other sites

Dans cette fonction 

 public function hookdisplayTopColumn($params)
{
   if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
            return;

   if (!$this->_prepareHook())
            return false;

   return $this->display(__FILE__, 'homesliderbis.tpl', $this->getCacheId());
}

Je ne suis pas sur de mon coup, mais je pense que c'est le : 

if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')

   return;

 

qui vérifie si l'on n'est pas sur la page d'accueil.

Enfin, c'est plutot, "si on n'est pas sur la home, on ne fait rien".

 

Commentez ces 2 lignes, ou supprimer les, pour tester.

C'est ce que je pensais, mais je voulais un avis avant :)

Je vais commenter et tester...

 

EDIT : c'est parfait, il s'affiche là ou je veux !!! Mais j'ai un nouveau souci...

Je n'avais qu'une photo et il s'est affiché. J'ai uploadé une seconde photo; pour voir si tout fonctionne comme je veux, et il a disparu :(

La méthode que j'ai utilisé pour créer mon homesliderbis est toute simple : j'ai fait un copié/collé du module homeslider, et dans tous les fichiers et noms de fichier j'ai remplacé homeslider et HomeSlide par homesliderbis et HomeSlideBis...

 

Je sais que ce n'est plus le même souci, mais vous auriez une idée ?

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

  • 8 months later...

bonjour,

j'aimerais aussi mettre le homeslider sur toutes mes pages,

j'ai donc enlevé

if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
   return;

ça marche le module s'affiche sur toutes les pages mais il s'affiche deux fois sur toutes les pages sauf page d'accueil.

 

Cordialement

Robin

Link to comment
Share on other sites

  • 1 month later...

En fait il y a d'autres lignes à commenter.

 

Dans le fichier nomdusite/modules/homeslider/Homeslider.php lignes 586 et 610 il y a ceci :

if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index')
            return;

 

il faut commenter ces quatre lignes.

 

Explication : pour que le slider fonctionne, il doit être greffé dans displayHeader (c'est là que tous les fonctionnement JS se font). Donc, si il est bien sur tes pages mais que (ligne 586) il n'est greffé que sur le header de l'index, il va bien s'afficher mais ne va pas appeler le JS qui doit le faire fonctionner...

 

 

EDIT :

Oups j'ai oublié !!! Dans le fichier nomdusite/modules/homeslider/views/templates/hook/homeslider.tpl lignes 6 et 26 il y a un :

 

{if $page_name =='index'} , {/if}

 

Faire sauter ces deux lignes (ou les commenter) pour que ça fonctionne ;)

Edited by Zythom (see edit history)
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...