Jump to content

Désactiver liens dans Blocktopmenu


Recommended Posts

J'ai utilisé une solution qui vaut ce qu'elle vaut mais qui marche très bien pour moi.

Tu dois modifier la méthode getCategory() dans la page blocktopmenu.php.
Voici la méthode que j'ai utilisée :
- Dans ton BO, tu repères les ID des catégories que tu ne veux pas rendre cliquable dans ton menu horizontal (par ex. les 2 et 8).
- Aux alentours des lignes 430 de blocktopmenu.php (tu dois te trouver dans la méthode getCategory()), tu changes la ligne suivante :

$this->_menu .= '<[balise A] href="'.$categorie->getLink().'">'.$name.'';



par le bloc conditionnel suivant :

   if ( $id_category != 1 && $id_category != 2 && $id_category != 3 )
       $this->_menu .= '<[balise A] href="'.$categorie->getLink().'">';
   else $this->_menu .= '';
   $this->_menu .= $name.'';



Et voilà : tes catégories 2 et 8 ne sont plus cliquables dans ton menu.

J'espère que ça répond à ta question.

Link to comment
Share on other sites

Merci Peps, j'ai testé ta suggestion mais j'ai une page blanche pour résultat, j'imagine que ça se joue à un caractère près !!!

Voici ma partie getCategory originale

private function getCategory($id_category, $id_lang)
{
global $page_name;

$categorie = new Category($id_category, $id_lang);
if(is_null($categorie->id))
return;
$selected = ($page_name == 'category' && ((int)Tools::getValue('id_category') == $id_category)) ? ' class="sfHoverForce"' : '';
$this->_menu .= '';
if(count(explode('.', $categorie->name)) > 1)
$name = str_replace('.', '', strstr($categorie->name, '.'));
else
$name = $categorie->name;
$this->_menu .= 'getLink().'">'.$name.'';
$childrens = Category::getChildren($id_category, $id_lang);
if(count($childrens))
{
$this->_menu .= '

  • ';
    foreach($childrens as $children)
    $this->getCategory($children['id_category'], $id_lang);
    $this->_menu .= '
';
}
$this->_menu .= '';
}



si ça peut mettre quelqu'un sur la voie
Link to comment
Share on other sites

désolé pour la mise en forme !

je refait:

private function getCategory($id_category, $id_lang)
{
global $page_name;
$categorie = new Category($id_category, $id_lang);
if(is_null($categorie->id))
return;
$selected = ($page_name == 'category' && ((int)Tools::getValue('id_category') == $id_category)) ? ' class="sfHoverForce"' : '';
$this->_menu .= '';
if(count(explode('.', $categorie->name)) > 1)
$name = str_replace('.', '', strstr($categorie->name, '.'));
else
$name = $categorie->name;
$this->_menu .= 'getLink().'">'.$name.''; //je suppose que tu parles de cette ligne
$childrens = Category::getChildren($id_category, $id_lang);
if(count($childrens))
{
$this->_menu .= '

  • ';
    foreach($childrens as $children)
    $this->getCategory($children['id_category'], $id_lang);
    $this->_menu .= '
';
}
$this->_menu .= '';
}
Link to comment
Share on other sites

Effectivement, ça se joue toujours au caractère près en PHP.
Regarde bien ton code. J'ai fait pareil et du coup, j'ai essayé corrigé : il y avait une erreur dans le code que je te proposais car le système fait une auto-correction sur la balise A. Et donc prends mon code dans l'esprit et conserve la partie de la balise A cohérente.
Perso, je ne sais pas non plus vraiment comment présenter correctement le code (je viens d'utiliser le bouton 'code' situé au-dessus du pavé de saisie de message. Dans la prévisualisation, tout semble OK, mais une fois en ligne la balise A fait n'importe quoi.

CORRECTION : du coup, regarde à nouveau mon code ci-dessus qui est bon sauf qu'il faut changer [balise A] par a, tout simplement... Ouf!!!

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

Je me permet de déterrer ce post.

J'essaye de désactiver le clique sur certaines catégories de mon block topmenu.

J'ai suivi la méthode decrite.
Rien à dire ça marche au niveau du clique; désactivé.
En revanche le titre de mes catégories et sous catégories apparait maintenant en double. ( C'est à dire que pour l'onglet "PAYS", j'ai une deuxième fois marqué "Pays" en dessous de l'onglet.)

Auriez vous une idée du pourquoi du comment??

Vous remerciant par avance très chaleureusement pour votre aide.
Miguel

Link to comment
Share on other sites

  • 3 months later...

Hello !

Je re-déterre ce post. Ca marche nikel pour moi aussi.

Par contre je voulais faire la même chose mais pour blockcategories.
Je n'arrive pas à dénicher l'endroit dans le code sur le fichier php ou je peux faire la modif.

Qqun a -t-il une idée ??

merci !!

Link to comment
Share on other sites

  • 1 year later...

Je me pose la même question daseb, j'ai trouvé un post qui en parle voir ici : http://www.prestashop.com/forums/topic/280[spam-filter]resolu-categorie-non-cliquable/ mais ça ne fonctionne pas pour moi, je suis sur prestashop 1.5

 

Pour ma part, j'ai légèrement modifié le code en remplaçant ça :

 

$this->_menu .= '<a href="'.$category_link.'">'.$category->name.'</a>';

 

par

 

if( $id_category !=11&& $id_category !=12&& $id_category !=6 && $id_category !=10)
    $this->_menu .='<a href="'.$category_link.'">'.$category->name.'</a>';
   else $this->_menu .='<a href="#">'.$category->name.'</a>';
   $this->_menu .= $name.'';

 

ça fonctionne nickel, merci médiatic service

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