|
|
|
| Есть файл, например adm1.php, с меню подобного вида:
<html><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\">
<link rel="stylesheet" href="c/f1.css" type="text/css">
<body>
.........
<div id="m2"> Страница1</div>
<div id="m1"><a href="n.php"> Страница2</a></div>
<div id="m1"><a href="p.php"> Страница3</a></div>
<div id="m1"><a href="k.php"> Страница4</a></div>
<div id="m1"><a href="e_m.php"> Страница5</a></div>
.........
<?include('f/info_1.txt');?>
.........
<body></html>
|
id=m2 -- выбранная, активная страничка
Странички, почти, ничем не отличаються, друг от друга, кроме подключаемого файла 'f/info_XXX.txt'. На каждой страничке -- свой файл.
Теперь, о наболевшем...
Чего хочу добиться?
Используя, один файл adm1.php, добиться, при нажатии на любую ссылку меню, подключения соответствующего, ей файла 'f/info_XXX.txt'.
По умолчанию, должна быть активна, страничка "Страница1" и файл 'f/info_1.txt'.
Как этого достичь?
В, голове витает идея использовать оператор ветвления switch.
Но, как, узнать, на какой, именно сейчас, в данный момент, странице, я нахожусь? | |
|
|
|
|
|
|
|
для: Hemp
(23.12.2004 в 10:43)
| | >> Но, как, узнать, на какой, именно сейчас, в данный момент, странице, я нахожусь?
Используй параметр в адрессной строке (www.mysite.com/?page=home)
В начале файла index делаешь выбор оператором switch
<?
$page = $_GET['page'];
switch ($page)
{
case 'home' : include('f/info_1.txt'); break;
case 'page1': include('f/info_2.txt'); break;
......
default : include('f/info_1.txt');
}
?>
|
| |
|
|
|
|
автор: cheops (из ННГУ) (23.12.2004 в 15:50) |
|
|
для: Hemp
(23.12.2004 в 10:43)
| | Имя текущей страницы можно узнать, обратившись к элементу суперглобального массива $_SERVER['PHP_SELF']. | |
|
|
|
|
|
|
|
для: cheops (из ННГУ)
(23.12.2004 в 15:50)
| | cheops (из ННГУ)
Использать суперглобальный массив $_SERVER['PHP_SELF'], вот, так?
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=inf"> О фирме</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=nov"> Новости</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=pr1"> Продукция</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=pr2"> Продукция1</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=kon"> Контакты</a></div>
|
Artem S.
Спасибо! Получилось. Поставленная частная задача решена.
Теперь, ещё один вопрос.
Как, добиться того, чтобы, текущая "кнопочка", которая была, только, что нажата, отображалась, вот. так:
<div id="m2"> Страница1</div>
|
Т.е, отличалась, от остальных в списке и была "неактивна" (не перерисовывала страницу, при повторном нажатии на неё)
А, все остальные, кнопочки, вот, так (меняю отображение блоков в таблице стилей):
<div id="m1"><a href="n.php"> Страница2</a></div>
|
| |
|
|
|
|
|
|
|
для: Hemp
(24.12.2004 в 09:01)
| | Попробуйте вот так:
<?
function menu($href, $title){
if ($_SERVER['PHP_SELF'] == "/".$href){
return "<div id=m2><b>$title</b></div>";
} else {
return "<div id=m1><a href=$href>$title</a></div>";
}
}
echo menu("n.php", "О фирме");
echo menu("menu.php", "Новости");
echo menu("k.php", "Продукция");
echo menu("e_m.php", "Контакты");
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(24.12.2004 в 10:13)
| | Неправильно поставлен вопрос -- неправильно получен ответ.
Нажатая ссылка должна выглядеть, вот, так:
<div id="m2"> Новости</div>
|
а, остальные, вот, так (пляшем от глобального массива $_GET['page']):
<div id=m1><a href=adm1.php?page=kon>Контакты</a></div>
|
Добился, этого следующей переделкой функции menu:
<?
function menu($href,$title){
if ($_GET['page']==$href){
return "<div id=m2>$title</div>";
} else {
return "<div id=m1><a href=adm1.php?page=$href>$title</a></div>";
}
}
echo menu('inf', "О фирме");
echo menu('nov', "Новости");
echo menu('pr1', "Продукция");
echo menu('pr2', "Продукция1");
echo menu('kon', "Контакты");
?>
|
Как, в этой функции, где возвращается значение ссылки
"<div id=m1><a href=adm1.php?page=$href>$title</a></div>"
|
вместо adm1.php использовать глобальный массив $_SERVER['PHP_SELF']?
У, меня не получилось, его, просто, так подставить. Синтаксическая ошибка.
Дизайнер
Спасибо большое за функцию.
В, вашем варианте функции, в условии
$_SERVER['PHP_SELF'] == "/".$href
|
не могу, понять символы : "/".
Объясните, если не трудно. | |
|
|
|
|
|
|
|
для: Hemp
(24.12.2004 в 11:45)
| | >вместо adm1.php использовать глобальный массив $_SERVER['PHP_SELF']?
У, меня не получилось, его, просто, так подставить. Синтаксическая ошибка.
Вот так попробуйте.
<?
return "<div id=m1><a href=".$_SERVER['PHP_SELF']."?page=$href>$title</a></div>";
?>
|
>не могу, понять символы : "/".
>Объясните, если не трудно.
Это под особенности функции menu() в моем варианте адаптация была.
$_SERVER['PHP_SELF'] - возвращает "/n.php" (слеш перед именем файла)
А в функцию меню я передавал просто имя страницы - n.php (без слеша)
Поэтому при сравнении имен добавлял слеш. | |
|
|
|
|