Jump to content

Liens actifs topmenu problèmes récurrents


Recommended Posts

Bonjour,

 

Est ce quelqu'un a la solution concernant le problème récurrent du topmenu concernant les liens actifs.

 

Ce module est en fonction depuis des années et le problème est toujours là:

 

lorsque vous créez un lien dans le menu, la class active ne fonctionne pas, elle fonctionne uniquement pour les catégories et cms.

 

Les divers solutions sur le forum ne fonctionnent pas avec la version 2.2.4 du module sur un presta 1.6.1.7

 

Merci

Christophe

Link to comment
Share on other sites

Effectivement, tout ce passe ici :

case 'LNK':
                    $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop);
                    if (count($link)) {
                        if (!isset($link[0]['label']) || ($link[0]['label'] == '')) {
                            $default_language = Configuration::get('PS_LANG_DEFAULT');
                            $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID());
                        }
                        $this->_menu .= '<li><a href="'.Tools::HtmlEntitiesUTF8($link[0]['link']).'"'.(($link[0]['new_window']) ? ' onclick="return !window.open(this.href);"': '').' title="'.Tools::safeOutput($link[0]['label']).'">'.Tools::safeOutput($link[0]['label']).'</a></li>'.PHP_EOL;
                    }
                    break;
Link to comment
Share on other sites

Voici mes modifs, le problèmes est qu'il réactualiser la page pour pour avoir le résultat escompté.

Le lien accueil n'est pas activé en arrivant sur le site

case 'LNK':
                    $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop);
                    if (count($link)) {
                        if (!isset($link[0]['label']) || ($link[0]['label'] == '')) {
                            $default_language = Configuration::get('PS_LANG_DEFAULT');
                            $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID());
                        }
			$selected = (Tools::HtmlEntitiesUTF8($link[0]['link']) == $_SERVER['HTTP_REFERER']) ? ' class="sfHoverForce"' : '';
                        $this->_menu .= '<li' .$selected.'><a href="'.Tools::HtmlEntitiesUTF8($link[0]['link']).'"'.(($link[0]['new_window']) ? ' onclick="return !window.open(this.href);"': '').' title="'.Tools::safeOutput($link[0]['label']).'">'.Tools::safeOutput($link[0]['label']).'</a></li>'.PHP_EOL;
                    }
                    break;
Link to comment
Share on other sites

Une agence de com se n'est uniquement du dev, il y a beaucoup d'autre facteurs qui entrent en jeux.
Alors il est vrai que je ne suis loin d'être un puriste du codage, mais lorsque que je livre un site, il fonctionne.

Bien entendu je passe surement beaucoup plus de temps que vous à trouver les solutions, mais je fini par les trouver et mes clients sont satisfaits.
Maintenant, si vous souhaitez m'aidez, vous pouvez se sera avec grand plaisir.
 

Après si celà vous amuse d'éplucher mon activité et tout ce qui s'en suit, vous pouvez.,

Mes clients savent qui je suis, mes capacités et mes compétences.

Il viennent pas chez moi pour avoir un développeur, mais pour avoir un prestataire qui sera capable de comprendre ce qu'ils souhaitent et de les satisfaire.

 

Donc si vous avez la solution et souhaitez la partager avec moi et les autres membres de la communauté, le post est ouvert.
Dans le cas contraire Merci de laisser la place aux autres.

 

Christophe

Link to comment
Share on other sites

La condition est bien en place, le problème est juste qu'il faut cliquer 2 fois sur le lien pour qu'elle reste et je n'arrive pas à comprendre pourquoi ?

                case 'LNK':
                    $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop);
                    if (count($link)) {
                        if (!isset($link[0]['label']) || ($link[0]['label'] == '')) {
                            $default_language = Configuration::get('PS_LANG_DEFAULT');
                            $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID());
                        }
                        $this->_menu .= '<li '.($_SERVER['HTTP_REFERER'] == (Tools::HtmlEntitiesUTF8($link[0]['link'])) ? 'class="sfHover"' : '').'><a href="'.Tools::HtmlEntitiesUTF8($link[0]['link']).'"'.(($link[0]['new_window']) ? ' onclick="return !window.open(this.href);"': '').' title="'.Tools::safeOutput($link[0]['label']).'">'.Tools::safeOutput($link[0]['label']).'</a></li>'.PHP_EOL;
                    }
                    break;
Link to comment
Share on other sites

Pour ceux que cela intéressent, voici la solution à remplacer vers la ligne 561 du blocktopmenu.php (le mieux est de faire un override).
lorsque vous créez vos liens personnalisés ne mettez pas l'url complète, par exemple pour la page d'accueil :   /
pour les autres pages :      /ma-page

                case 'LNK':
                    $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop);
                    if (count($link)) {
                        if (!isset($link[0]['label']) || ($link[0]['label'] == '')) {
                            $default_language = Configuration::get('PS_LANG_DEFAULT');
                            $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID());
                        }
                        $this->_menu .= '<li '.($_SERVER['REQUEST_URI'] == (Tools::HtmlEntitiesUTF8($link[0]['link'])) ? 'class="sfHover"' : '').'><a href="'.Tools::HtmlEntitiesUTF8($link[0]['link']).'"'.(($link[0]['new_window']) ? ' onclick="return !window.open(this.href);"': '').' title="'.Tools::safeOutput($link[0]['label']).'">'.Tools::safeOutput($link[0]['label']).'</a></li>'.PHP_EOL;
                    }
                    break;

Pour les gens bien sympathiques que j'ai eu la chance de rencontrer ce jour, en fait j'ai même rien à dire.
Ce qui est sur c'est que si j'ai à faire travailler un développeur sur des sujets très spécifiques, je sais au moins où je n'irais pas.

 

A bientôt

Christophe

Edited by Bondaty and Co (see edit history)
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...