Afficher directement les catégories dans le menu haut horizontal

28 posts in this topic

Posted · Report post

Bonjour,

Je souhaiterai faire apparaître les différentes catégories de mon catalogue directement dans le menu du haut, horizontalement. Et donc supprimer le lien 'Catalogue' et le système de roll over. Il n'y a que 6 catégories dans le site dont je m'occupe, mais pour gagner de la place et tout mettre sur une seule ligne, je supprimerai (ou déplacerai peut-être) les liens 'Nouveautés', 'A ne pas manquer' et 'Chèques cadeaux'... enfin bon je me débrouillerai pour la mise en page.

Dans la page lib/fonctions/display.php à partir de la ligne 1910 il y a la fonction get_menu pour gérer le menu horizontal mais je ne sais pas comment faire pour y insérer directement les catégories.

On voit un exemple dans un site parmi les références de Peel (http://www.surfstation.fr/)

J'ai la version 6.4 de PEEL.

Quelqu'un peut-il m'aider ?

Merci :)

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Les éléments principaux du menu sont généré par le menu $GLOBALS['main_menu_items'] dans la fonction get_menu. Vous devez donc créer autant d'index dans ce tableau que vous avez de catégorie. Au niveau de


$sql = 'SELECT c.id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie, c.image_' . $_SESSION['session_langue'] . ' AS image
FROM peel_categories c
WHERE c.etat = "1" AND c.parent_id="0"
ORDER BY c.position ASC, categorie ASC';
$qid = query($sql);
while ($cat = fetch_assoc($qid)) {
$GLOBALS['menu_items']['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = $cat['categorie'];
// A décommenter pour ajouter l'image de la catégorie dans le menu déroulant.
// $menu_items['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = array($cat['categorie'], $cat['image']);
}
[/CODE] Vous pouvez supprimer l'index ['catalog'] du tableau :
[CODE]
$GLOBALS['menu_items'][get_product_category_url($cat['id'], $cat['categorie'])] = $cat['categorie'];

Share this post


: post
Share on other sites

Posted · Report post

Bonjour et merci pour la réponse, c'est sympa.

:)

En fait je suis bien arrivé à mettre mes 6 catégories dans le menu horizontal en faisant ça :


			$GLOBALS['main_menu_items']['cat1'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/index.php?catid=1' => CAT1);

			$GLOBALS['main_menu_items']['cat2'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/index.php?catid=2' => CAT2);

			$GLOBALS['main_menu_items']['cat3'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/index.php?catid=3' => CAT3);

			$GLOBALS['main_menu_items']['cat4'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/index.php?catid=4' => CAT4);

			$GLOBALS['main_menu_items']['cat5'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/index.php?catid=5' => CAT5);

			$GLOBALS['main_menu_items']['cat6'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/index.php?catid=6' => CAT6);

En faisant ça, 2 problèmes :

1/ J'ai été obligé d'inscrire en dur dans le fichier lang/fr.php le nom des 6 catégories (CAT1, CAT2, etc...). Or à la base, j'aurai préféré que ce soit géré, comme avant, dans le Back Office.

2/ Et finalement (c'est vrai, je ne l'avais pas mentionné dans ma première demande), j'aimerais que mes sous catégories apparaissent en roll over (comme dans le menu de gauche). Et là, forcément, ça ne peut fonctionner.

Comment dois-je m'y prendre ?

post-6586-0-68843800-1344447482_thumb.jp

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Ce code devrait résoudre le problème :


$sql = 'SELECT c.id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie, c.image_' . $_SESSION['session_langue'] . ' AS image
FROM peel_categories c
WHERE c.etat = "1" AND c.parent_id="0"
ORDER BY c.position ASC, categorie ASC';
$qid = query($sql);
while ($cat = fetch_assoc($qid)) {
$GLOBALS['main_menu_items'][$cat['categorie']][get_product_category_url($cat['id'], $cat['categorie'])] = $cat['categorie'];
// A décommenter pour ajouter l'image de la catégorie dans le menu déroulant.
// $menu_items['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = array($cat['categorie'], $cat['image']);
$subcatsql = 'SELECT c.id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie, c.image_' . $_SESSION['session_langue'] . ' AS image
FROM peel_categories c
WHERE c.etat = "1" AND c.parent_id="' . intval($cat['id']) . '"
ORDER BY c.position ASC, categorie ASC';
$subcatqid = query($subcatsql);
while ($subcat = fetch_assoc($subcatqid)) {
$GLOBALS['menu_items'][$cat['categorie']][get_product_category_url($subcat['id'], $subcat['categorie'])] = $subcat['categorie'];
// A décommenter pour ajouter l'image de la catégorie dans le menu déroulant.
// $menu_items['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = array($cat['categorie'], $cat['image']);
}
}
[/CODE]

Le tableau main_menu_items contient les entrées du menu principal, et le tableau menu_items les sous-menu. Les informations sont sortie de la BDD, et donc administrable en back office.

Share this post


: post
Share on other sites

Posted · Report post

Super, ça marche très bien !

:D

Merci, merci, merci !

++

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Ce code ne fonctionne pas pour la version 6.3.1 visiblement.

Suis-je obligé d'évoluer vers la 6.4 ou il y a-t-il un moyens d'adapter ?

merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

le code n'est pas dépendant d'une version en particulier, quel est votre problème exactement ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Et bien je souhaite obtenir le même résultat que berserker.

J'ai donc remplacé


$sql = 'SELECT c.id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie, c.image_' . $_SESSION['session_langue'] . ' AS image

   FROM peel_categories c

   WHERE c.etat = "1" AND c.parent_id="0"

   ORDER BY c.position ASC, categorie ASC';

  $qid = query($sql);

  while ($cat = fetch_assoc($qid)) {

   $menu_items['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = $cat['categorie'];

  }

par le code que vous proposiez dans votre dernier post.

Mais cela ne fonctionne pas.

Si j'ai bien compris, nul besoin de créer des index pour chaque catégories car elles sont récupérées dans la BDD avec ce code.

Ce code devrait don suffir, ou ais-je oublier quelques chose ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Vous pouvez dans un premier temps reprendre la fonction get_menu() dans la version actuellement en téléchargement sur peel.fr, sans avoir à migrer l'intégralité de votre boutique, ainsi que les autres fonctions nécessaires au fonctionnement de la nouvelle version de get_menu().

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Simon,

C'est ok merci, j'ai remplacer la fonction "get_menu" entièrement avant de la mettre à jour avec le code modifier.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Je suis sur la version 6.2, j'ai repri aussi le get_menu sur la nouvelle version dispo, vous dites "ainsi que les autres fonctions necessaires au bon fonctionnement du get_menu"

 

J'ai teste en remplacant le get_menu mais ca ne fonctionne pas, quelles sont les autres fonctions a modifier ?

 

Merci d'avance

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Quel est votre problème exactement ?

Share this post


: post
Share on other sites

Posted · Report post

Lorsque je recupere la fonction get_menu et je la colle a la place de la mienne, je teste et je n'ai rien plus de structure, plus de texte juste le background. Peut-etre dois-je changer d'autres choses sur la page display product ?

Share this post


: post
Share on other sites

Posted · Report post

Salut,

Excuse moi J1P, je me permet de faire une paranthèse sur le sujet initial:

 

[

 

J'ai remarqué (et c'est très embêttant) que le lien vers le back officer "administrer" disparaissait lorsque l'on faisait cette modif.
Il y a-t-il un moyens de le rajouter à la suite du menu comme avant ?

Merci

 

]

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Djespace

 

Effectivement sur ma version 6.2 le home et le administration ont disparu aussi, je ne sais pas pourquoi. Neanmoins je suis arrive a avoir mon menu avec les categories comme indique ci-dessus mais en modifiant legerement car entre 6.2 et 6.4 il y a quelques differences

Share this post


: post
Share on other sites

Posted · Report post

L'essentiel est que tu ais pu arriver à ce que tu souhaitait  ;) 

Simon, si vous avez une idée pour le lien administrer ?
car la ligne est toujours présente dans display.php, mais peut-être faut-il la déplacer dans une autre partie du fichier.?

Share this post


: post
Share on other sites

Posted · Report post

up ! :D

Share this post


: post
Share on other sites

Posted · Report post

bonjour,

 

suis désolée mais je comprend bien ton problème

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Il faudrait nous donner la fonction get_menu, pour comprendre pourquoi le lien administrer et home ne s'affiche pas.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Paulanna,

Je vais essayer d'être plus clair.
 

Sur une boutique d'origine, vierge de toutes modifications;
Lorsqu'un administrateur est identifié sur la boutique, un lien "administration" apparaît alors dans le menu haut horizontal (à la suite des liens catalogue, promotions, à ne pas manquer etc...).

La modification proposée dans ce sujet (pour afficher les rubriques du catalogue dans le menu haut, à la place des autres précédemment citées), fonctionne très bien, mais elle fait disparaître ce fameux lien "administration".

Voilà le souci.

Share this post


: post
Share on other sites

Posted · Report post

regarde dans le code source de ton navigateur voir si tu as le lien administrer

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Il faudrait nous donner la fonction get_menu, pour comprendre pourquoi le lien administrer et home ne s'affiche pas.

 

La voici :

 

function get_menu()
	{
		if (empty($GLOBALS['main_menu_items'])) {
			$GLOBALS['main_menu_items']['home'] = array($GLOBALS['wwwroot'] . '/' => HOME);
			//$GLOBALS['main_menu_items']['catalog'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/' => CATALOGUE);
			//$GLOBALS['main_menu_items']['news'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/nouveautes.php' => NOUVEAUTES);
			//$GLOBALS['main_menu_items']['promotions'] = array($GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/promotions.php' => DO_NOT_MISS);
			if (is_annonce_module_active()) {
				$GLOBALS['main_menu_items']['annonces'] = array($GLOBALS['wwwroot'] . '/modules/annonces/' => ADS);
				if (est_identifie()) {
					$GLOBALS['menu_items']['annonces'][$GLOBALS['wwwroot'] . '/modules/annonces/'] = AD_LIST;
					$GLOBALS['menu_items']['annonces'][$GLOBALS['wwwroot'] . '/modules/annonces/creation_annonce.php'] = AD_CREATE;
				}
				// $GLOBALS['main_menu_items']['annonces_verified'] = array(get_verified_url(false) => BECOME_VERIFIED);
			}
			if (is_vitrine_module_active()) {
				if (is_module_url_rewriting_active()) {
					$GLOBALS['main_menu_items']['vitrine'] = array(get_list_showcase_url(false, false) => SHOP);
				} else {
					$GLOBALS['main_menu_items']['vitrine'] = array($GLOBALS['wwwroot'] . '/modules/vitrine/' => SHOP);
				}
			}
			if (is_module_gift_checks_active()) {
				$GLOBALS['main_menu_items']['check'] = array($GLOBALS['wwwroot'] . '/modules/gift_check/cheques.php' => CHEQUE_CADEAU);
			}
			if (est_identifie()) {
				//$GLOBALS['main_menu_items']['account'] = array(get_account_url(false, false) => COMPTE);
				$GLOBALS['menu_items']['account'][$GLOBALS['wwwroot'] . '/achat/historique_commandes.php'] = ORDER_HISTORY;
				$GLOBALS['menu_items']['account'][$GLOBALS['wwwroot'] . '/utilisateurs/change_mot_passe.php'] = CHANGE_PASSWORD;
				if (is_cart_preservation_module_active()) {
					$GLOBALS['menu_items']['account'][$GLOBALS['wwwroot'] . '/modules/cart_preservation/cart_preservation.php'] = CART_PRESERVATION_TITLE;
				}
				$GLOBALS['menu_items']['account'][$GLOBALS['wwwroot'] . '/utilisateurs/change_params.php'] = CHANGE_PARAMS;
				$GLOBALS['menu_items']['account'][$GLOBALS['wwwroot'] . '/sortie.php'] = LOGOUT;
			} else {
				//$GLOBALS['main_menu_items']['account'] = array($GLOBALS['wwwroot'] . '/membre.php' => COMPTE);
			}
			//$GLOBALS['main_menu_items']['contact'] = array(get_contact_url(false, false) => CONTACT);
			if (a_priv('admin*', true)) {
				$GLOBALS['main_menu_items']['admin'] = array($GLOBALS['administrer_url'] . '/index.php' => ADMIN);
			}
			$GLOBALS['menu_items']['promotions'][$GLOBALS['wwwroot'] . '/' . URL_ACHAT . '/promotions.php'] = PROMOTIONS;
			if (is_flash_sell_module_active() && is_flash_active_on_site()) {
				$GLOBALS['menu_items']['promotions'][$GLOBALS['wwwroot'] . '/modules/flash/flash.php'] = FLASH;
			}
		}
		$sql = 'SELECT c.id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie, c.image_' . $_SESSION['session_langue'] . ' AS image
            FROM peel_categories c
            WHERE c.etat = "1" AND c.parent_id="0"
            ORDER BY c.position ASC, categorie ASC';
        $qid = query($sql);
        while ($cat = fetch_assoc($qid)) {
            $GLOBALS['main_menu_items'][$cat['categorie']][get_product_category_url($cat['id'], $cat['categorie'])] = $cat['categorie'];
            // A décommenter pour ajouter l'image de la catégorie dans le menu déroulant.
            // $menu_items['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = array($cat['categorie'], $cat['image']);
            $subcatsql = 'SELECT c.id, c.nom_' . $_SESSION['session_langue'] . ' AS categorie, c.image_' . $_SESSION['session_langue'] . ' AS image
                FROM peel_categories c
                WHERE c.etat = "1" AND c.parent_id="' . intval($cat['id']) . '"
                ORDER BY c.position ASC, categorie ASC';
            $subcatqid = query($subcatsql);
            while ($subcat = fetch_assoc($subcatqid)) {
                $GLOBALS['menu_items'][$cat['categorie']][get_product_category_url($subcat['id'], $subcat['categorie'])] = $subcat['categorie'];
                // A décommenter pour ajouter l'image de la catégorie dans le menu déroulant.
                // $menu_items['catalog'][get_product_category_url($cat['id'], $cat['categorie'])] = array($cat['categorie'], $cat['image']);
            }                
        }

		$current_url = get_current_url(false);
		$current_url_full = get_current_url(true);

		$output = '
<div class="main_menu_wide">
	<div class="main_menu">
		<ul id="menu1">
';
		foreach($GLOBALS['main_menu_items'] as $this_main_item => $this_main_array) {
			$current_menu = (!empty($GLOBALS['menu_items'][$this_main_item][$current_url_full]));
			$full_match = true;
			if ($current_menu === false && !empty($GLOBALS['menu_items'][$this_main_item])) {
				$current_menu = (!empty($GLOBALS['menu_items'][$this_main_item][$current_url]));
				$full_match = false;
			}
			foreach($this_main_array as $this_main_url => $this_main_title) {
				if ($current_menu !== false || !empty($this_main_array[$current_url]) || !empty($this_main_array[$current_url_full])) {
					$main_class = ' class="current"';
				} else {
					$main_class = '';
				}
				if ($this_main_item == 'home' && empty($GLOBALS['main_menu_homelink_as_text'])) {
					$this_main_text = '<a href="' . htmlspecialchars($this_main_url) . '"' . $main_class . '><img src="' . $GLOBALS['wwwroot'] . '/images/home.png" alt="" style="padding: 0px 6px 0px 4px;" /></a>';
				} else {
					if (!empty($this_main_url) && !is_numeric($this_main_url)) {
						$this_main_text = '<a href="' . htmlspecialchars($this_main_url) . '"' . $main_class . '>' . $this_main_title . '</a>';
					} else {
						$this_main_text = '<span>' . $this_main_title . '</span>';
					}
				}
				if (!empty($GLOBALS['menu_items'][$this_main_item])) {
					$this_main_text .= '
				<ul class="sousMenu">
';
					foreach($GLOBALS['menu_items'][$this_main_item] as $this_url => $this_title) {
						if (($current_url == $this_url && !$full_match) || $current_url_full == $this_url) {
							$class = ' class="current"';
						} else {
							$class = '';
						}
						if (!empty($this_url) && !is_numeric($this_url)) {
							/*
							A décommenter pour ajouter l'image de la catégorie dans le menu déroulant.
							if($this_main_item == 'catalog' && is_array($this_title)) {
								$this_text = '<a href="' . htmlspecialchars($this_url) . '"' . $class . '><img src="'.$GLOBALS['repertoire_upload']. '/thumbs/' . thumbs($this_title[1],50,50) . '" />' . $this_title[0] . '</a>';
							} else {
								$this_text = '<a href="' . htmlspecialchars($this_url) . '"' . $class . '>' . $this_title . '</a>';
							}
							*/
							$this_text = '<a href="' . htmlspecialchars($this_url) . '"' . $class . '>' . $this_title . '</a>';
						} else {
							$this_text = '<span' . $main_class . '>' . $this_title . '</span>';
						}
						$this_main_text .= '<li>' . $this_text . '</li>';
					}
					$this_main_text .= '
				</ul>';
				}
				$output .= '
			<li class="menu_main_item menu_' . $this_main_item . '">' . $this_main_text . '</li>
';
			}
		}
		$output .= '
		</ul>
	</div>
</div>
';
		return $output;
	}

Share this post


: post
Share on other sites

Posted · Report post

le code à l'air bon.

 

regarde dans ton code source de ton navigateur

Share this post


: post
Share on other sites

Posted · Report post

rien dans mon code source.
voici mes div class main menu wide et main menu:

 

<div class="main_menu_wide">
	<div class="main_menu">
		<ul id="menu1">

			<li class="menu_main_item menu_home"><a href="http://www.leds-boutique.fr/"><img src="http://www.leds-boutique.fr/images/home.png" alt="" style="padding: 0px 6px 0px 4px;" /></a></li>

			<li class="menu_main_item menu_Ampoules LED"><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-12.html">Ampoules LED</a>
				<ul class="sousMenu">
<li><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-gu10-1.html">Ampoules LED GU10</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-mr16-2.html">Ampoules LED MR16</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-mr11-35.html">Ampoules LED MR11</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-e27-4.html">Ampoules LED E27</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-b22-5.html">Ampoules LED B22</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-ampoules-led-e14-3.html">Ampoules LED E14</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-supports-et-douilles-20.html">Supports et Douilles</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-transformateurs-21.html">Transformateurs</a></li>
				</ul></li>

			<li class="menu_main_item menu_Spots Complets"><a href="http://www.leds-boutique.fr/achat/cat-spots-complets-36.html">Spots Complets</a>
				<ul class="sousMenu">
<li><a href="http://www.leds-boutique.fr/achat/cat-kits-spots-d-interieur-37.html">Kits spots d'intérieur</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-encastrables-plafonds-ip54-32.html">Encastrables Plafonds IP54</a></li>
				</ul></li>

			<li class="menu_main_item menu_Rubans LED"><a href="http://www.leds-boutique.fr/achat/cat-rubans-led-10.html">Rubans LED</a>
				<ul class="sousMenu">
<li><a href="http://www.leds-boutique.fr/achat/cat-bandeaux-led-15.html">Bandeaux LED</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-alimentations-16.html">Alimentations</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-controleurs-17.html">Contrôleurs</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-connectiques-18.html">Connectiques</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-kits-complets-34.html">Kits complets</a></li>
				</ul></li>

			<li class="menu_main_item menu_Eclairage Extérieur"><a href="http://www.leds-boutique.fr/achat/cat-eclairage-exterieur-8.html">Eclairage Extérieur</a>
				<ul class="sousMenu">
<li><a href="http://www.leds-boutique.fr/achat/cat-projecteurs-led-26.html">Projecteurs LED</a></li>
				</ul></li>

			<li class="menu_main_item menu_Eclairage Professionnel"><a href="http://www.leds-boutique.fr/achat/cat-eclairage-professionnel-22.html">Eclairage Professionnel</a>
				<ul class="sousMenu">
<li><a href="http://www.leds-boutique.fr/achat/cat-dalles-plafond-led-27.html">Dalles plafond LED</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-eclairage-d-entrepots-led-28.html">Eclairage d'entrepots LED</a></li><li><a href="http://www.leds-boutique.fr/achat/cat-tubes-led-7.html">Tubes LED</a></li>
				</ul></li>

			<li class="menu_main_item menu_Nos packs"><a href="http://www.leds-boutique.fr/achat/cat-nos-packs-33.html">Nos packs</a></li>

		</ul>
	</div>
</div>
</div>
			</div>
			<!-- Fin Header -->

 

 

Elle contiennent bien mes catégorie et sous catégorie, mais pas de trace d'un lien admin.

Share this post


: post
Share on other sites

Posted · Report post

est ce que tu as regardé ton code souce après t'être identifié ?

Share this post


: post
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

Twitter Advisto ecommerce

Facebook PEEL Shopping