Jump to content

[RESOLU] Comment faire apparaitre un block ou module sur une page et pas sur les autres


Recommended Posts

hello

une petite question qui me taraude:
j'ai installé le block catégorie dans ma colonne de gauche. Je voudrais qu'il n'apparaisse pas quand je suis sur ma page d'accueil mais qu'il soit visible sur les autres pages.(ex page produit)

Et inversement, par ex pour le bloc nouveautés comment le faire apparaitre uniquement sur la page d'accueil et pas sur les autres?
J'ai essayé de bidouiller les fichiers tpl et le global css mais nada!

une piste?
merci

Sujet déplacé -yoya971

Link to comment
Share on other sites

Bonjour,

Pour les catégories :
Une petite modification dans ton fichier /modules/blockcategories/blockcategories.tpl

Ajoute en tout début du fichier :

{if $smarty.server.SCRIPT_NAME != '/index.php'}


Ajoute à la fin du fichier

{/if}



Pour les nouveautés :
Une petite modification dans ton fichier /modules/blocknewproducts/blocknewproducts.tpl

Ajoute en tout début du fichier :

{if $smarty.server.SCRIPT_NAME == '/index.php'}


Ajoute à la fin du fichier

{/if}



J'ai pas testé, je te laisse faire !

A+

Link to comment
Share on other sites

merci pour les indics, par contre je dois mal saisir le code car je n'ai pas d'effet, voici par ex mon tpl des catégories:

{if $smarty.server.SCRIPT_NAME != '/index.php'}
[removed][removed]

<!-- Block categories module -->


{l s='Categories' mod='blockcategories'}




  • {foreach from=$blockCategTree.children item=child name=blockCategTree}
    {if $smarty.foreach.blockCategTree.last}
    {include file=$branche_tpl_path node=$child last='true'}
    {else}
    {include file=$branche_tpl_path node=$child}
    {/if}
    {/foreach}



[removed]
// <![CDATA[
// we hide the tree only if JavaScript is activated
$('div#categories_block_left ul.dhtml').hide();
// ]]>
[removed]
<!-- /Block categories module -->
{/if}
Link to comment
Share on other sites

Hello divine

en fait en passant par les exceptions j'arrive bien à faire ce que je veux pour certaines pages, par contre j'ai un souci pour d'autres: par exemple dans la page des produits en liste, impossible de rentrer une exception.

Aie suis pas sur d'etre clair!

Link to comment
Share on other sites

suis ok avec c'est plus propre en passant par le BO des modules, mais comment faire alors pour pas que mon module par ex nouveaux produit n'apparaisse pas dans la récap des mes produits, je trouve pas l'équivalent du product list en php

Link to comment
Share on other sites

Alors dans ce cas tu ouvres le fichier tpl du module concerné et tu mets au tout début:

{if $page_name != category}

en n'oubliant pas de refermer la condition par {/if} à la fin du fichier.


Hello

Je cherche a faire la quasi même chose mais avec X pages pour un même Block.
Module a ne pas afficher sur la page {if $page_name != category} ainsi que sur la page new-products et best-sales par exemple.

Je test mais sans résultat.

1
{if $page_name != category}
{if $page_name != new-products}
{if $page_name != best-sales}

Block midule blablabla

{/if}
{/if}
{/if}

2
{if $page_name != category}{$page_name != new-products}{$page_name != best-sales}

Block midule blablabla

{/if}


3
{if $page_name != category ; $page_name != new-products ; $page_name != best-sales}

Block midule blablabla

{/if}

4
{if $page_name != category' '$page_name != new-products' '$page_name != best-sales}

Block midule blablabla

{/if}


et bien d'autre combinaisons...

++

DAV

Link to comment
Share on other sites

Oups!
Après tests = page blanche
Donc le code ne doit pas être valide.


Et de cette façon j'ai bien les page mais les conditions ne sont pas prisent en compte.

{if $page_name != 'category' || $page_name != 'new-products'}...{/if}
{if $page_name == 'category' || $page_name == 'new-products'}...{/if}




++

DAV

Link to comment
Share on other sites

Exact j'avais oublié les guillemets.

Donc cela serait plutôt:
{if $page_name != 'category' or $page_name != 'new-products'}

Par contre je viens de tester et le truc bizarre c'est que cela ne marche pas avec != en revanche avec == ça marche bien...
C'est embêtant car cela veut dire qu'il faut mettre toutes les pages pour lesquelles le module doit s'afficher au lieu de mettre juste celles sur lesquelles il ne doit pas s'afficher.

Je ne comprend pas pourquoi ça ne marche pas avec le !=

Link to comment
Share on other sites

héhé, c'est étonnant tout de même, car avec une seule condition ça fonctionne très bien avec !=
Smarty n'est pas mon livre de chevet mais depuis le temps je commence a connaitre celles les plus utilisées dans la solution.

Bon à défaut je vais faire l'inverse avec les == pour les faire apparaitre plutôt que de les cacher.

Si tu trouves la syntaxe exacte, fais moi signe.

++ et merci pour ce coup de main.

DAV

Link to comment
Share on other sites

C'est clair que c'est étrange mais peut être avons nous oublié quelque chose.

Sinon je n'aurais pas posé la problématique, vu qu'avec une seule condition ça fonctionne.
Un spécialiste smarty peut être pour nous expliquer du pourquoi du comment cela n'est pas good ?

Si tu trouves jeckyl alors merci d'avance.

++
DAV

Link to comment
Share on other sites

Bon, j'ai pas repris toute la discussion mais par exemple si je veux que mon module ne soit pas affiché ni sur l'index ni sur les pages category alors j'utilise :

{if $page_name != 'index' && $page_name != 'category'}



et vous pouvez utiliser soit && soit and.

Ne me demandez pas pourquoi cela fonctionne comme cela et pas autrement c'est ainsi fait il doit y avoir une notion d'exclusivité du OR, donc utilisez le AND.

Un petit exemple à suivre sur http://prestashop.mediacom87.net

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