Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Проверка названия текущей страницы

#1 magestro

magestro
  • Пользователь
  • 11 сообщений
  • Репутация: 0
0

Отправлено 26 Июнь 2012 - 22:48

Всем доброго времени суток!
Заранее извиняюсь за вопрос, так как понимаю что это похоже на "НАПИШИТЕ ЗА МЕНЯ КОД".
И, скорее всего, похожие темы уже понимались, но кривизна моих рук слишком велика для решения подобием.

Сабж:

Если страницы index.php, news.php, rolls.php.... и т.д.
Есть менюшка с ссылками: Главная, Новости, Роллы,и т.д.соответсвенно.
В зависимости от того, на какой странице находишься менялся бэкграунд ссылки на эту страницу(появлялась зелёная лампочка). При наведении на какую-либо ссылку появляется всё та же зелёная лампочка.

Реализовывалось всё при помощи ксс: a:hover{background url(..)}//изменялся БГ при наведении на ссылку
#menu .current_page_item a {
background: url(....) no-repeat center top }//у каждой страницы у ссылки на саму себя в блоке стоял класс current_page_item

Появилась необходимость делать менюшку с помощью require(для удобства). Напомню, эта функция позволяет вставить html код || php скрипт в любое место страницы.

Но необходимость в том, что бы на каждой странице подсвечивалась своя ссылка осталась.
Как я планирую это реализовать? В файле menu.php, который подключается require сделать примерно так:
<li *Если* Page_name=="index.php" *то* 'class="current_page_item" ' == *читается*><a href="Index.php">Домашняя</a </li>

<li *Если* Page_name=="news.php" *то* 'class="current_page_item" ' == *читается*><a href="news.php">Новости</a></li>
<li *Если* Page_name=="rolls.php" *то* 'class="current_page_item" ' == *читается*><a href="rolls.php">Роллы</a></li>

Вопрос: как это сделать.

И есть ещё один вопрос, почитать чтонибудь для нуба в пхп, но не нуба в ООП, с условием на то, что в книге должно быть примеров больше чем теории(из теории хватит списка команд и их краткого описания) и чем меньше страниц, тем лучше?

Заранее спасибо за ответ, надеюсь на понимание к халявщику.(к слову гугл я порыл на эту тему, но правильно воспринять информацию не смог)

PS
Напоминаю, что в PHP я полный профан.

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Php адрес текущей страницы
  2. Массовая проверка проиндексированности страниц в Я и Г?
  3. Изменение названия страницы сайта и влияние этого у ПС
  4. Проверка посещения роботом страницы сайта
  5. Как убрать название страницы с самой страницы?

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 26 Июнь 2012 - 22:54

может это будет интересно? http://www.softtime....p?id_article=69
  • 1

#3 magestro

magestro
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 26 Июнь 2012 - 23:12

Если что-то не так с цветом, то опять же извиняюсь,пытался сделать максимально читабельным.

может это будет интересно? http://www.softtime....p?id_article=69

Отлично! Функция
$_SERVER['PHP_SELF']

возращает название страницы(точнее адрес). Теперь следующие шани:
1)как выделить из адреса текст до слэша.
2)Как сделать проверку(хотя ладно, это сам найду)
3)Как сделать так, чтобы в случае фолс браузер не читал(не воспринимал) часть кода?

Если что-то не так с цветом, то опять же извиняюсь,пытался сделать максимально читабельным.


Отлично! Функция
$_SERVER['PHP_SELF']

возращает название страницы(точнее адрес). Теперь следующие шани:
1)как выделить из адреса текст до слэша.
2)Как сделать проверку(хотя ладно, это сам найду)
3)Как сделать так, чтобы в случае фолс браузер не читал(не воспринимал) часть кода?


По третьему пункту:
как сделать что-то такого типа:
<li *Если*$_SERVER['PHP_SELF']=="index.php"*то* 'class="current_page_item" ' ==*читается*><a href="Index.php">Домашняя</a </li>

<li *Если*$_SERVER['PHP_SELF']=="news.php"*то* 'class="current_page_item" ' ==*читается*><a href="news.php">Новости</a></li>
<li *Если*$_SERVER['PHP_SELF']=="rolls.php"*то* 'class="current_page_item" ' ==*читается*><a href="rolls.php">Роллы</a></li>
  • 0

#4 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 27 Июнь 2012 - 00:25

Как-то так:
<?php
/*складываем ссылки и заголовки пунктов меню в массив, чтобы потом удобно было выводить менюшку циклом */
$menu_item = array(
    'index.php' => 'Домашняя',
    'news.php' => 'Новости',
    'rolls.php' => 'Роллы'
);

/*получаем имя текущей страницы*/
$current_file_name = basename($_SERVER['PHP_SELF']);
/*выводим на экран меню и текущему пункту присваиваем класс "current"*/
echo "<ul>n";
foreach ($menu_item as $link=>$name){
    echo "t<li", ($link == $current_file_name ? ' class="current"' : ''), '><a href="', $link, '">', $name, "</a></li>n";
}
echo "</ul>n";
?>
Типа выводим менюшку, причем пункту меню со ссылкой на текущую страницу даем класс "current".
Например, для страницы news.php будет так:
<li><a href="index.php">Домашняя</a></li>
<li class="current"><a href="news.php">Новости</a></li>
<li><a href="rolls.php">Роллы</a></li>

  • 4

#5 magestro

magestro
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 27 Июнь 2012 - 00:52

Как ни странно, но оно работает, хотя я ещё два часа буду разбираться как именно)
Большое спасибо, Вы мне очень помогли!
  • 0

#6 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 27 Июнь 2012 - 00:55

На здоровье. Только зачем 2 часа разбираться? :) Спрашивайте, которое место неясно?


  • 1

#7 magestro

magestro
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 27 Июнь 2012 - 01:05

Чёрт возьми, оно реально работает! Ещё раз большое спасибо!

На здоровье. Только зачем 2 часа разбираться? :) Спрашивайте, которое место неясно?

Не ясен синтаксис) Просто не знаю PHP. Но следующие вопросы будут уж точно слишком глупыми и очевидными. Что значит, допустим, $ или array и как именно они работают я найду в гугле.
Ну, точнее принцип работы скрипта я понял, Меню айтем - это и есть сама менюшка, точнее ссылки на неё. А функция foreach соответсвенно уже задаёт параметры для ссылок, причём задаёт таким образом, что параметр класс зависит от названия страницы. Иное дело, что для того чтобы это хорошо понять и, главное, суметь повторить мне потребуется некоторое время. Большая часть из которого уйдёт на заварку чая/кофе и поис инфы по функциям.
Но тут уже я справлюсь)
  • 0

#8 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 27 Июнь 2012 - 01:23

Что значит, допустим, $ или array и как именно они работают я найду в гугле.

$ — это обозначение переменной, т.е. в моем коде
$menu_item
$current_file_name
$link
$name — это все переменные, т.е. поименованные ячейки для хранения различных данных.
array — это обозначение одного из типов переменных, а именно массива, т.е. кусок кода:

$menu_item = array(
    'index.php' => 'Домашняя',
    'news.php' => 'Новости',
    'rolls.php' => 'Роллы'
);


описывает объявление массива $menu_item, в который сразу после его объявления мы кладем пары связанных значений 'index.php' => 'Домашняя', 'news.php' => 'Новости', 'rolls.php' => 'Роллы'
foreach — это не функция, а оператор цикла, в котором последовательно перебираются все элементы нашего массива ($menu_item), причем конструкция в скобочках после слова foreach — ($menu_item as $link=>$name) обозначает, что на каждом этапе цикла, мы кладем наши парные элементы массива во временные переменные $link и $name, чтобы потом использовать их в теле цикла.
  • 1

#9 magestro

magestro
    Topic Starter
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 27 Июнь 2012 - 01:42

Я как раз успел заварить чай)
Ещё раз спасибо, во всём разобрался)
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru