[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Динамическое меню html+css+php
marabuzo
Доброго вам времени суток!
Есть динамическое меню http://php-css.h19.ru
Теперь хочу сделать следующее: что бы при выборе пункта менюшки он оставался, как выбранный пункт, подсвеченный нужным светом.
user posted image
Можно сделать с использованием переменных и затем их проверкой, но получиться громоздский php код. Подскажите,пожалуйста как все сделать красиво и при min php кода smile.gif



Спустя 27 минут, 49 секунд (17.05.2012 - 22:25) inpost написал(а):
Громоздко? Совсем нет. Обычные
if($_GET['page'] == $var) {echo 'class="selected"';}


Либо массив навигации, а дальше циклом прогнать, и там в цикле такую же проверку. Дольше делать, съекономишь по объему 10-15 символов.

Спустя 13 минут, 58 секунд (17.05.2012 - 22:39) marabuzo написал(а):
т.е. каждому <li> писвоить свой класс и затем если элемент выбран, делать его активным?
inpost, можно пожалуйста поподробнее и кусочек кода..

Спустя 3 минуты, 14 секунд (17.05.2012 - 22:42) inpost написал(а):
лучше ты со своим кусочком кода, как ты и хотел делать.

Спустя 4 минуты, 32 секунды (17.05.2012 - 22:47) Gabriel написал(а):
мне вот интересно.... а какже всем извесный JavaScript/jQuery?
думаю, даже вариант прогона цыклом по меню для сравнения будет менее геморным....

Спустя 2 дня, 29 минут, 22 секунды (19.05.2012 - 23:16) marabuzo написал(а):
Цитата (inpost @ 17.05.2012 - 19:42)
лучше ты со своим кусочком кода, как ты и хотел делать.

вот что у меня получилось:

<div id ="menu">
<ul>
<?php
if(@$n == 'selekted') @$m[0]="sel"; else $m[0]="no_sel";
if(@$k == 'selekted') @$m[1]="sel"; else $m[1]="no_sel";
if(@$p == 'selekted') @$m[2]="sel"; else $m[2]="no_sel";
if(@$v == 'selekted') @$m[3]="sel"; else $m[3]="no_sel";

echo " <li class=\"$m[0]\"><a href='?n=selekted'>Меню-1</a></li>";
echo "<li class=\"$m[1]\"><a href=\"?k=selekted\">Меню-2</a></li>";
echo "<li class=\"$m[2]\"><a href=\"?p=selekted\">Меню-3</a></li>";
echo "<li class=\"$m[3]\"><a href=\"?v=selekted\">О сайте</a></li>";

?>
</ul>
</div>
smile.gif
Как можно по другому сделать? Или что подправить в коде?Можно ли ..<a href='?переменная=selekted'.. как то исключить?

Спустя 3 часа, 19 минут, 28 секунд (20.05.2012 - 02:35) inpost написал(а):
marabuzo
Собаки тут вообще что делают? Зачем они?
И что за $n, $k ? Обычно ссылка передаётся через суперглобальный массив GET, $_GET (!!!), а не непонятные $n, $k.
echo ''; - через одинарные кавычки, чтобы не парить мозг с экранизацией двойных.

Ну норм, только я бы сделал непосредственно внутри вывода ссылки через тернарный оператор.
HTML идёт:
<ul>
<
li class="<?php echo (тут тернарный оператор); ?>"><a href="link" />menu</li>

Спустя 9 часов, 34 минуты, 11 секунд (20.05.2012 - 12:10) marabuzo написал(а):
Действительно, через тернарный оператор гораздо короче и понятнее.
..
<li class="<?php echo ($n == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>
<li class="<?php echo ($k == 'selekted') ? 'sel' : 'no_sel'; ?>"><a href='?k=selekted'>Меню-2</a></li>

...
Собачки нужны были для удаления сообщения - Notice: Undefined variable:..

И каким образом можно в моем случае передать ссылку пи помощи $_GET, не используя конструкцию ->
<form action="index.php" method="get"> ... </FORM>???

Спустя 18 минут, 12 секунд (20.05.2012 - 12:28) inpost написал(а):
marabuzo
Собачки нужны, чтобы скрыть непонимание ПХП. Любую ошибку надо не скрывать, а исправлять. Простой способ:
(isset($n) && $n == 'selected')

index.php?page=n
index.php?page=k
index.php?page=contacts
index.php?page=news
index.php?page=main


Потом включаешь ЧПУ (реврайт) на сайте, и ссылки делаешь красивыми:
site.ru/n
site.ru/contacts
site.ru/news
site.ru/main

Спустя 31 минута, 15 секунд (20.05.2012 - 12:59) marabuzo написал(а):
Ну это то понятно, конечно при разработке серьезного сайта использование собачкек не приемлемо.. Это так, для сокращения написания кода)

В данном коде все-таки можно как-то использовать суперглобальный массив $_GET,$_POST ? Или уже надо в дело пускать и язык JScript? Конструкцию <form>?

Спустя 29 минут, 22 секунды (20.05.2012 - 13:28) inpost написал(а):
marabuzo
Собака - признак быдлокодерства, а не сокращенной записи, именно поэтому я над этим акцентировал внимание.

Насчёт вопроса, я не понял, у тебя итак всё правильно работает...
<li class="<?php echo ($n == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>

- это твой, а это через GET:
<li class="<?php echo ($_GET['n'] == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>

Спустя 1 час, 48 минут, 26 секунд (20.05.2012 - 15:17) marabuzo написал(а):
Спасибо, разобрался!

Цитата (inpost @ 20.05.2012 - 09:28)
.. ЧПУ (реврайт) на сайте

первый раз такое встречаю ..

Как я понимаю необходимо в корневой папке сайта создать файл - .htaccess?
И каким содержимым его необходимо заполнить?

Спустя 1 час, 9 минут, 54 секунды (20.05.2012 - 16:27) inpost написал(а):
marabuzo
Загугли. Там много информации по этому поводу.

Спустя 1 час, 4 минуты, 8 секунд (20.05.2012 - 17:31) marabuzo написал(а):
<li class="<?php echo ($page == 'k') ? 'sel' : 'no_sel'; ?>"><a href='?page=k'>Склад</a></li>

написал в корне файл .htaccess
со след. содержанием :

<IfModule mod_rewrite.c>
RewriteEngine On - включаем mod_rewrite
RewriteBase / - точка от которой начинать монтировать урлы
сама сторочка преобразования ссылок
RewriteRule ^index/([a-z]+).php$ index.php?page=$1 [R]
[R] указывает на реврайт сайта
ИТОГ: НЕ преоразуются ссылки huh.gif В чем ошибка?

Спустя 17 минут, 55 секунд (20.05.2012 - 17:49) inpost написал(а):
А ты точно открываешь страницу так: index/PAGE.php ?

Спустя 4 дня, 1 час, 3 минуты, 59 секунд (24.05.2012 - 18:53) marabuzo написал(а):
Переписал немного..
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?page=$1 [L]

но и при этом у меня ссылка имеет следующий вид
http://localhost/site/?page=...
huh.gif

Спустя 33 минуты, 34 секунды (24.05.2012 - 19:26) inpost написал(а):
она имеет 2 вида, и такой, как ты показал, и уже с реврайтом.

Спустя 2 часа, 21 минута, 15 секунд (24.05.2012 - 21:48) marabuzo написал(а):
Я понимаю, но как все же мне добиться красивой ссылки???
Где и что еще можно дописать??? Уже сотню вариантов перебрал...

Спустя 9 минут, 40 секунд (24.05.2012 - 21:57) inpost написал(а):
index.php?page=$1 - регулярка
/index.php?page=contacts = /contacts (синоним). Открывай ссылку по второму виду.
И сайт пропиши с hosts, а не через локалхост.

Спустя 2 минуты, 17 секунд (24.05.2012 - 22:00) johniek_comp написал(а):
мб ты так хотел?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

Спустя 12 часов, 6 минут, 10 секунд (25.05.2012 - 10:06) marabuzo написал(а):
Спасибо всем!!! biggrin.gif Все работает. Нашел причину
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.