Jump to content

Comment ne pas afficher une sous-catégorie désactivée


Recommended Posts

Bonjour à tous,

 

Après des heures à chercher une solution je m'en remets aux experts ! Mon problème semble simple mais je dois avoir raté l'essentiel... 

 

La base est category.tpl. Modifié pour un usage particulier. Il affiche le contenu de 4 sous-catégories (level 3). Jusque là tout va bien. Je souhaite afficher un message particulier si aucune de ces 4 sous-cat n'est active (active=0 dans la table category). Et là je bloque..

 

Voici le code réduit à l'essentiel :

 

{if isset($subcategories)}
<!-- Subcategories -->
<div id="subcategories">
        
<ul class="inline_list">


{foreach from=$subcategories item=subcategory}
{$prixApartirDe=999} 
{$MenuComplet=''}
{if $subcategory.id_category!=447}
                
<li class="itemMenus">  
                
<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}&date={php}echo($_GET['date']);{/php}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}">
<img src="{$css_dir}images/page-menus_{$subcategory.name}.jpg" alt=""  />
                    
<div class="detailsMenu">
...........
</div>
<div class="aPartirDeMenu">à partir de <br/><span class="tarifMenu">{$prixApartirDe}€</span></div>
</a><br />
                    
</li>
{/if}
{/foreach}
            
</ul>                           
{/if}

Je souhaite afficher un message du type "aucun menu disponible" si l'on a désactivé depuis le BO les 4 menus en question. Pas moyen d'y arriver avec une condition if car il semblerai que l'on ne puisse pas utiliser $subcategory.active... Comment faire ?

 

Merci pour votre aide :-)

 

Jérôme

Link to comment
Share on other sites

Bonjour, 

Si l'on regarde de plus près le controlleur Category, on tombe sur assignSubcategories() qui renvoie vers getSubCategories() de la classe catégorie. 

A vérifier avec ta version de Prestashop, mais normalement elle ne sélectionne que les catégories actives avec cette condition dans la requête SQL:

'.($active ? 'AND `active` = 1' : '').'

A vérifier de ton coté si cette condition est bien présente.

Link to comment
Share on other sites

Merci pour ton retour. Mon Prestsahop est en 1.4.4.0. J'ai ça effectivement :

{if isset($category)}
{if $category->id AND $category->active}

Le soucis qui se présente est lorsque les sous-sous-cat sont désactivées la boucle foreach se lance quand même en affichant non pas 4 mais une trentaine d'ex. du contenu de cette boucle avec des infos vides, dont une image 404 qui pollue l'écran. Et ce n'est pas beau... !

 

Je voudrait simplement éviter l'exe de cette boucle avec une condition vérifiant si l'item subcategory est actif ou non... L'après-midi dessus. sans résultat...

Link to comment
Share on other sites

Apparemment tu ne regardes pas la bonne ligne de code du tpl.

Les sous-catégories s'affichent avec :

{if isset($subcategories)}
{foreach from=$subcategories item=subcategory}

Pour débugger, tu peux toujours ajouter le champ "active" par la requête SQL. SELECT c.active..

 

Link to comment
Share on other sites

  • 2 years later...

Bonjour les presta,

 

Pour faire simple et pour ne pas faire de conneries en supprimant ou modifiant le code du category.tpl!! :)

 

Aller dans votre thème > puis dans css > category.css. aller à la ligne 41.

Ajouter une ligne de code avec commentaire.

                                          

                                                         *SUBCATEGORIES*

 

ligne 41 #subcategories {
         42  display: none; /* modification de l'affichage */  

 

Faites F5 ou rafraîchir la page et voilà vos sub category ne s'affiche plus.

C'est de suite plus épurer et plus clair.

 

Cordialement.

Edited by avppy7 (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...