Smallbear

[Решено] Вопрос про горизонтальное меню

Рекомендуемые сообщения

Smallbear    79

Помогите пожалуйста разобраться с пунктами горизонтального меню.

Проблема вот в чем,у меня в меню 5 разделов : главная,новости,оплата и доставка , контакты , партнерам.Каждый раздел имеет три состояния,обычное ,активное (когда на него наводишь) и включенное (оно равно активному).

Проблема заключается в том , что когда я нажимаю кнопку "партнерам" у меня выделяется кнопка "оплата и доставка",вот скрин:

Изображение

вот мой код:

верх

<a href="<?php echo str_replace('&', '&', $home); ?>" id="tab_home"><?php echo $text_home; ?></a>
    <a href="<?php echo str_replace('&', '&', $allnews); ?>" id="tab_allnews"><?php echo $text_allnews; ?></a>
    <a href="<?php echo str_replace('&', '&', $opldost); ?>" id="tab_opldost"><?php echo $text_opldost; ?></a>
    <a href="<?php echo str_replace('&', '&', $contact); ?>" id="tab_contact"><?php echo $text_contact; ?></a>
    <a href="<?php echo str_replace('&', '&', $partners); ?>" id="tab_partners"><?php echo $text_partners; ?></a>

сам джава скрипт

if (!route) {
$('#tab_home').addClass('nav_a_selected');
} else {
part = route.split('/');

		if (route == 'common/home') {
			$('#tab_home').addClass('nav_a_selected');
		} else if (route == 'account/login') {
			$('#tab_login').addClass('nav_a_selected');
		} else if (part[0] == 'account') {
			$('#tab_account').addClass('nav_a_selected');
		} else if (route == 'checkout/cart') {
			$('#tab_cart').addClass('nav_a_selected');
		} else if (part[0] == 'checkout') {
			$('#tab_checkout').addClass('nav_a_selected');
		} else if (route == 'information/news') {
			$('#tab_allnews').addClass('nav_a_selected');
		} else if (route == 'information/contact') {
			$('#tab_contact').addClass('nav_a_selected');
		}  else if (route == 'information/information') {
			$('#tab_opldost').addClass('nav_a_selected');
		}  else if (route == 'information/information') {
			$('#tab_partners').addClass('nav_a_selected');
		} else  {
		$('#tab_home').addClass('nav_a_selected');
		}

Я понимаю в чем проблема,скорее всего в том что в джава скрипте два раза написано else if (route == 'information/information')

но у меня ведь "оплата и доставка" и "партнерам" это две статьи и я не пойму как написать по другому,может быть кто-нибудь что-то посоветует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Неужели никто не может ничего посоветовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19th    210

Помогите пожалуйста разобраться с пунктами горизонтального меню.

Проблема вот в чем,у меня в меню 5 разделов : главная,новости,оплата и доставка , контакты , партнерам.Каждый раздел имеет три состояния,обычное ,активное (когда на него наводишь) и включенное (оно равно активному).

Проблема заключается в том , что когда я нажимаю кнопку "партнерам" у меня выделяется кнопка "оплата и доставка",вот скрин:

Надеюсь разберешься

$(document).ready(function() {
	route = getURLVar('route');
	information_id = getURLVar('information_id');
	
	if (!route) {
		$('#tab_home').addClass('selected');
	} else {
		part = route.split('/');
		
	if (route == 'common/home') {
	               $('#tab_home').addClass('selected');
          } else if (route == 'product/special') {
               $('#tab_special').addClass('selected');     
          } else if (information_id == 'information_id=4') {
               $('#tab_about').addClass('selected');
		} else if (information_id == 'information_id=6') {
               $('#tab_delivery').addClass('selected');
          } else if (route == 'information/contact') {
               $('#tab_contact').addClass('selected');
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Надеюсь разберешься

я тоже надеялся,да вроде бы и ничего сложного,но почему-то не работает.Получился такой код:

$(document).ready(function() {
	route = getURLVar('route');
    information_id = getURLVar('information_id');

if (!route) {
$('#tab_home').addClass('nav_a_selected');
} else {
part = route.split('/');

		if (route == 'common/home') {
			$('#tab_home').addClass('nav_a_selected');
		} else if (route == 'information/news') {
			$('#tab_allnews').addClass('nav_a_selected');
		} else if (route == 'information/contact') {
			$('#tab_contact').addClass('nav_a_selected');
		}  else if (information_id == 'information_id=6') {
			$('#tab_opldost').addClass('nav_a_selected');
		}  else if (information_id == 'information_id=7') {
			$('#tab_partners').addClass('nav_a_selected');
		} else  {
		$('#tab_home').addClass('nav_a_selected');
		}

Теперь вообще вседа главная выделяется и в чем проблема понять не получается.Уже второй день бьюсь с этим и решить не могу.А это для какой Вы версии написали,возможно такой способ в последнем осторе не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19th    210

Теперь вообще вседа главная выделяется и в чем проблема понять не получается.Уже второй день бьюсь с этим и решить не могу.А это для какой Вы версии написали,возможно такой способ в последнем осторе не работает?

Писал не я, работает в 1.4.9.3. А если попробовать вместо псевдо прописать полный айди уровня

<a href="index.php?route=information/information&information_id=6" id="tab_delivery"><?php echo $text_opldost; ?</a>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Писал не я, работает в 1.4.9.3. А если попробовать вместо псевдо прописать полный айди уровня

<a href="index.php?route=information/information&information_id=6" id="tab_delivery"><?php echo $text_opldost; ?</a>
не помогло,да и не должно было как мне кажется,т.к. ссылки же и до этого нормально работали.

Если не сложно не могли бы Вы скинуть код вашего header.tpl а то я уже с ума схожу вроде уже все перепробовал,но наверно самого очевидного не вижу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

не помогло,да и не должно было как мне кажется,т.к. ссылки же и до этого нормально работали.

Если не сложно не могли бы Вы скинуть код вашего header.tpl а то я уже с ума схожу вроде уже все перепробовал,но наверно самого очевидного не вижу

Вобщем проблему решил, почти как Вы 19th и говорили ,необходимо было дописать строку

information_id= getURLVar('information_id');

но там где у меня было написано

route == 'information/information'

необходимо было заменить на

information_id == 7 (7 - номер вашей статьи)

Решение нашел в коде одного из сайтов.Странно то что в списке магазинов на опенкарт , такая проблема встречается почти в каждом и практически нигде ее и не думают по-моему решать.И теперь мне не понятно ,то ли у меня слишком большие требования,то ли у многих совсем не большие))

Вот сам код (естественно лишние строки которые касаются корзины,моего кабинета,если их у Вас нет в горизонтальном меню можно поудалять,но я стараюсь ничего не удалять чтобы в будующем ничего не слетело.:


$(document).ready(function() {
	route = getURLVar('route');
    information_id= getURLVar('information_id');

	if (route) {
		part = route.split('/');

		if (route == 'common/home') {
			$('#tab_home').addClass('nav_a_selected');
		} else if (route == 'account/login') {
			$('#tab_login').addClass('nav_a_selected');
		} else if (part[0] == 'account') {
			$('#tab_account').addClass('nav_a_selected');
		} else if (route == 'checkout/cart') {
			$('#tab_cart').addClass('nav_a_selected');
		} else if (part[0] == 'checkout') {
			$('#tab_checkout').addClass('nav_a_selected');

		} else if (route == 'information/news') {
			$('#tab_allnews').addClass('nav_a_selected');
		} else if (information_id == 6) {
			$('#tab_opldost').addClass('nav_a_selected');
		} else if (route == 'information/news') {
			$('#tab_allnews').addClass('nav_a_selected');
		} else if (route == 'information/contact') {
			$('#tab_contact').addClass('nav_a_selected');
		} else if (information_id == 7) {
			$('#tab_partners').addClass('nav_a_selected');
		} else {
			$('#tab_home').addClass('nav_a_selected');
		}

	}		$('.switcher').bind('click', function() {		$(this).find('.option').slideToggle('fast');	});	$('.switcher').bind('mouseleave', function() {		$(this).find('.option').slideUp('fast');	}); 		$('#search input').keydown(function(e) {		if (e.keyCode == 13) {			moduleSearch();		}	});
});

P.S. есть еще пару вопросов по коду :

1. часто в коде встречаю надпись

if (!route) {
 part = route.split('/');
у меня же в шаблоне прописано без восклицательного знака

if (route) {
part = route.split('/');

В чем разница этих надписей?

2. у меня в коде есть строка,которую у других я не видел,что она означает?

$('.switcher').bind('click', function() {		$(this).find('.option').slideToggle('fast');	});	$('.switcher').bind('mouseleave', function() {		$(this).find('.option').slideUp('fast');	}); 		$('#search input').keydown(function(e) {		if (e.keyCode == 13) {			moduleSearch();		}	});
});

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19th    210

Решение нашел в коде одного из сайтов.Странно то что в списке магазинов на опенкарт , такая проблема встречается почти в каждом и практически нигде ее и не думают по-моему решать.И теперь мне не понятно ,то ли у меня слишком большие требования,то ли у многих совсем не большие))

Ты еще погляди на тех же магазинах как работает сортировка по цене и поиск в разных регистрах, тоже удивишься ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Ты еще погляди на тех же магазинах как работает сортировка по цене и поиск в разных регистрах, тоже удивишься ;)

ну я еще до поиска не дошел,но видел где-то что с ним могут быть проблемы.

Если честно мне не совсем,это означают что все магазины на опенкарт делают не понятно как ? Ну всмысли не сильно вникая в детали

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aveebeat    9

Здравствуйте! У меня такая же проблема не выделяется в меню!

Вот код меню:

<div class="div4">
      <a href="<?php echo str_replace('&', '&', $home); ?>" id="tab_home"><?php echo $text_home; ?></a>
      <a href="index.php?route=information/information&information_id=4" id="tab_com"><?php echo $text_special; ?></a>
      <a href="index.php?route=information/news" id="tab_news"><?php echo $text_news; ?></a>
      <a href="index.php?route=information/information&information_id=6" id="tab_ysl"><?php echo $text_bookmark; ?></a>
      <a href="index.php?route=information/information&information_id=7" id="tab_otz"><?php echo $text_sitemap; ?></a>
      <a href="<?php echo $contact; ?>" id="tab_contact"><?php echo $text_contact; ?></a>
</div>

Вот js:

$(document).ready(function() {
	route = getURLVar('route');
	
	if (!route) {
		$('#tab_home').addClass('selected');
	} else {
		part = route.split('/');
		
		if (route == 'common/home') {
			$('#tab_home').addClass('selected');
		} else if (route == 'account/login') {
			$('#tab_login').addClass('selected');	
		} else if (part[0] == 'account') {
			$('#tab_account').addClass('selected');
		} else if (route == 'checkout/cart') {
			$('#tab_cart').addClass('selected');
                } else if (route == 'information/news') {
			$('#tab_news').addClass('selected');
		} else if (part[0] == 'checkout') {
			$('#tab_checkout').addClass('selected');
		} else if (route == 'information/contact') {
			$('#tab_contact').addClass('selected');			
		} else if (information_id == 4) {
			$('#tab_com').addClass('selected');
		} else if (information_id == 6) {
			$('#tab_ysl').addClass('selected');
		} else if (information_id == 7) {
			$('#tab_otz').addClass('selected');
		} else {
			$('#tab_home').addClass('selected');
		}
	}
});

Перепробывал все варианты...не работает...!! Помогите пожалуйста! Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Thirdian    2

Похожк Вы забыли дописать: information_id= getURLVar('information_id');

Посмотрите пример выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Похожк Вы забыли дописать: information_id= getURLVar('information_id');

Посмотрите пример выше.

ну да это Вы забыли написать,но если честно я не удивлюсь если это не поможет.Я с эти меню долго боролся))

плюс вот в этом коде,по-моему ошибка в последней строке,видите код черный весь,только вот что не так не могу понять))

<div class="div4">
      <a href="<?php echo str_replace('&', '&', $home); ?>" id="tab_home"><?php echo $text_home; ?></a>
      <a href="index.php?route=information/information&information_id=4" id="tab_com"><?php echo $text_special; ?></a>
      <a href="index.php?route=information/news" id="tab_news"><?php echo $text_news; ?></a>
      <a href="index.php?route=information/information&information_id=6" id="tab_ysl"><?php echo $text_bookmark; ?></a>
      <a href="index.php?route=information/information&information_id=7" id="tab_otz"><?php echo $text_sitemap; ?></a>
      <a href="<?php echo $contact; ?>" id="tab_contact"><?php echo $text_contact; ?></a>
</div>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Хотя у меня последняя строка так же вроде выглядит так что наверное правильно написано,т.к. у меня работает

<a href="<?php echo str_replace('&', '&', $contact); ?>" id="tab_contact"><?php echo $text_contact; ?></a>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EvzeNsx    83

P.S. есть еще пару вопросов по коду :

1. часто в коде встречаю надпись

if (!route) {
 part = route.split('/');
у меня же в шаблоне прописано без восклицательного знака

if (route) {
part = route.split('/');

В чем разница этих надписей?

Операнд ! - логическое НЕ. Это если коротко.

А если более подробно, то в первом случае выражение выполнится при условии, что route примет значение FALSE, а во втором случае (Вашем) - при условии TRUE.

Если честно, не знаю как объяснить более понятно. Возможно Гугл сможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
XuTpblu    1

Товарищи, а подскажите пожалуйста, как быть с SEO-урлами в меню? именно из-за них перестали выделяться менюшки

На всякий случай скрипт:

<a href="<?php echo str_replace('&', '&', $home); ?>" id="tab_home"><b><?php echo $text_home; ?></b></a>
<a href="<?php echo str_replace('&', '&', $news); ?>" id="tab_news"><b><?php echo $text_news; ?></b></a>
<a href="<?php echo str_replace('&', '&', $prosp); ?>" id="tab_prosp"><b><?php echo $text_prosp; ></b></a> 
<a href="<?php echo str_replace('&', '&', $rules); ?>" id="tab_rules"><b><?php echo $text_rules; ?></b></a> 
<a href="<?php echo str_replace('&', '&', $shipping); ?>" id="tab_shipping"><b><?php echo $text_shipping; ?></b></a>
<a href="<?php echo str_replace('&', '&', $pay); ?>" id="tab_pay"><b><?php echo $text_pay; ?></b></a>

js:

$(document).ready(function() { 
route = getURLVar('route'); 	
information_id = getURLVar('information_id'); 	
if (!route) { 		
$('#tab_home').addClass('selected'); 	
} else { 		
part = route.split('/');
if (route == 'common/home') { 
$('#tab_home').addClass('selected');
} else if (route == 'information/news') { 
$('#tab_news').addClass('selected');		 
} else if (route == 'information/information' && information_id==7) { 			
$('#tab_shipping').addClass('selected');	 		
} else if (route == 'information/information' && information_id==9) { 			
$('#tab_pay').addClass('selected');	 		}   		

information_id==7 соответствует ЧПУ "kak-poluchit-zakaz"

information_id==9 соответствует ЧПУ "oplata"

controller/common/header.php

$this->data['text_shipping'] = $this->language->get('text_shipping');
$this->data['text_pay'] = $this->language->get('text_pay');


$this->data['shipping'] = HTTP_SERVER . 'index.php?route=information/information&information_id=7';
$this->data['pay'] = HTTP_SERVER . 'index.php?route=information/information&information_id=9';

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Товарищи, а подскажите пожалуйста, как быть с SEO-урлами в меню? именно из-за них перестали выделяться менюшки

На всякий случай скрипт:

<a href="<?php echo str_replace('&', '&', $home); ?>" id="tab_home"><b><?php echo $text_home; ?></b></a>
<a href="<?php echo str_replace('&', '&', $news); ?>" id="tab_news"><b><?php echo $text_news; ?></b></a>
<a href="<?php echo str_replace('&', '&', $prosp); ?>" id="tab_prosp"><b><?php echo $text_prosp; ></b></a> 
<a href="<?php echo str_replace('&', '&', $rules); ?>" id="tab_rules"><b><?php echo $text_rules; ?></b></a> 
<a href="<?php echo str_replace('&', '&', $shipping); ?>" id="tab_shipping"><b><?php echo $text_shipping; ?></b></a>
<a href="<?php echo str_replace('&', '&', $pay); ?>" id="tab_pay"><b><?php echo $text_pay; ?></b></a>

js:

$(document).ready(function() { 
route = getURLVar('route'); 	
information_id = getURLVar('information_id'); 	
if (!route) { 		
$('#tab_home').addClass('selected'); 	
} else { 		
part = route.split('/');
if (route == 'common/home') { 
$('#tab_home').addClass('selected');
} else if (route == 'information/news') { 
$('#tab_news').addClass('selected');		 
} else if (route == 'information/information' && information_id==7) { 			
$('#tab_shipping').addClass('selected');	 		
} else if (route == 'information/information' && information_id==9) { 			
$('#tab_pay').addClass('selected');	 		}   		

information_id==7 соответствует ЧПУ "kak-poluchit-zakaz"

information_id==9 соответствует ЧПУ "oplata"

controller/common/header.php

$this->data['text_shipping'] = $this->language->get('text_shipping');
$this->data['text_pay'] = $this->language->get('text_pay');


$this->data['shipping'] = HTTP_SERVER . 'index.php?route=information/information&information_id=7';
$this->data['pay'] = HTTP_SERVER . 'index.php?route=information/information&information_id=9';

как вариант можно просто не прописывать псевдонимы этим статьям

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
XuTpblu    1

это я конечно понимаю, но все таки так не красиво как-то получается :) везде ЧПУ, а для элементов из меню их нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
johnnyblaze    0

это я конечно понимаю, но все таки так не красиво как-то получается Изображение везде ЧПУ, а для элементов из меню их нет

ну так как решить? у меня с этим же проблема!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
johnnyblaze    0
проблема не решена для СЕО_УРЛ, кто-нибудь знает как решить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Aligarh    0

У меня тоже незнаю чт делать. Урлы нехотят работать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу