Войти

Показать полную графическую версию : [решено] подставлять значения в зависимости от открытой страницы PhP


binders
13-09-2009, 06:09
раньше у HTML сайта было такое меню

<div id="iefix">
<div id="horiz-menu" class="splitmenu">
<ul class="menu">
<li id="current" class="active"><span class="top"><a href="index.php">Главная</a><span class="selector"><br />
</span></span></li>
<li><span class="top"><a href="rules.php">Правила</a><span class="selector"><br />
</span></span></li>
<li><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br />
</span></span></li>
<li><span class="top"><a href="login.php">Аккаунт</a><span class="selector"><br />
</span></span></li>
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br />
</span></span></li>
<li><span class="top"><a href="gb.php">Гостевая</a><span class="selector"><br />
</span></span></li>
</ul>
</div>


где если вставить в тег <li id="current" class="active"> то менюшка становилась активной

а теперь сайт переехал на PHP и всё это перенесено в header.php
вобщем исчезла красота

мож есть возможность подставлять id и class в зависимости от открытой страницы

Sham
13-09-2009, 08:49
можно в PHP с помощью str_replace или preg_replace (парсить код меню с PHP_SELF)...
и javascript`ом тоже просто...

binders
13-09-2009, 17:48
А если я чайник в php
можно обьяснить по подробней ?

Sham
14-09-2009, 08:53
так примерно
$PHP_SELF = basename($_SERVER['PHP_SELF']);
// $menu содержит код меню
$menu = str_replace
(
'<li><span class="top"><a href="'.$PHP_SELF.'">',
'<li id="current" class="active"><span class="top"><a href="'.$PHP_SELF.'">',
$menu
);

binders
14-09-2009, 19:18
я конешно извиняюсь но опять нечего не не понял :not-me:
я не просто чайник а кипятильник

если можно ещо подробней

Sham
15-09-2009, 02:18
и всё это перенесено в header.php »
там чистый хтмл-код? Выложите, посмотрим...

binders
15-09-2009, 02:32
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?
include("setup.php");
require ("inc/connect.inc.php");
$sql=mysql_query("select*from pages");
$row=mysql_fetch_array($sql);
$sql=mysql_query("select*from sysvals");
$row1=mysql_fetch_array($sql);
$selectedpravactive=$row1['prav_active'];

?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?=$row['head_meta'];?>
<title><?=$row['head_title'];?></title>
<link href="css/template_css.css" rel="stylesheet" type="text/css" />
<link href="css/style<?=$row['style'];?>.css" rel="stylesheet" type="text/css" />
<link href="css/rokmoomenu.css" rel="stylesheet" type="text/css" />

<link href="css/template_ie7.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">



<style type="text/css">
div.wrapper { margin: 0 auto; width: <? if($selectedpravactive==NO): echo"1000"; endif; ?>
<? if($selectedpravactive==YES): echo"1200"; endif; ?>
px;padding:0;}
td.secondcol { width: 235px;}
td.thirdcol { width: 235px;}
</style>
<script type="text/javascript" src="js/mootools-release-1.11.js"></script>
<script type="text/javascript">
window.addEvent('domready', function(){ var FlipTip = new Tips($$('.fliptip'), { className: 'fliptip' });});
</script>

<!--[if IE]>
<script type="text/javascript">
sfHover = function() {
var sfEls = document.getElementById("horiz-menu").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfHover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfHover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>

<![endif]-->

</head>

<script language=JavaScript>
var h=(new Date()).getHours();
if (h > 23 || h < 7) document.write("<body id='night' class='f-default'>");
if (h > 6 && h < 12) document.write("<body id='dawn' class='f-default'>");
if (h > 11 && h < 19) document.write("<body id='day' class='f-default'>");
if (h > 18 && h < 24) document. write("<body id='dusk' class='f-default'>");
</script>



<!-- begin top part -->
<div id="bg-top">
<div id="bg-top-overlay"></div>
</div>
<!-- end top part -->
<!-- start overall frame -->
<div id="overall-frame">
<!-- begin bottom part IE ONLY -->
<div id="bg-bottom-ie">
<div id="bg-bottom-overlay-ie"></div>
</div>
<!-- end bottom part ie -->
<!-- start bottom part OTHER BROWSERS -->
<div id="bg-bottom">
<div id="bg-bottom-overlay">
<!-- begin wrapper -->
<div class="wrapper">
<div id="top-shadow">
<!-- begin header -->
<div id="header">
<div id="logo-space"><a href="index.php" class="nounder"><img src="images/logo.png" style="border:0;" alt="" id="logo" /></a><br /><span><i><?=$row1['slogan'];?></i></span></div>
</div> </div>







<div id="iefix">
<div id="horiz-menu" class="splitmenu">
<ul class="menu">
<li class="item"><span class="top"><a href="index.php">Главная</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="rules.php">Правила</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="account.php">Аккаунт</a><span class="selector"><br /></span></span></li>
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br /></span></span></li>
<?
$sqlgbactive=mysql_query("select*from sysvals where gb_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if($rowgbactive>0):
?>
<li class="item"><span class="top"><a href="gb.php?page=0">Гостевая</a><span class="selector"><br /></span></span></li>

<?
endif;
?>


</ul></div></div>
<br>

<div align="center" id="inset">
<span><?
include("inc/banners1.inc.php");
?>
<div id='out'></div>
</span> </div>
<!-- end inset -->
<!-- begin mainbody -->




<div id="body-shadow-left">
<div id="body-shadow-right">
<div id="body">
<table class="mainbody" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">

<?
$sqlgbactive=mysql_query("select*from sysvals where prav_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if($rowgbactive>0):
?>


<td class="secondcol"><div id="secondcol">
<div class="accent">
<div class="accent-left"></div>
<div class="accent-right"></div>
</div>

<?include("inc/stat.inc.php");?>


</div></td>

<?
endif;
?>

<td class="maincol">
<div id="maincol">
<div class="accent">
<div class="accent-left"></div>
<div class="accent-right"></div>
</div>
<div id="component">
<div class="padding">


подключаю через include ко всем другим страницам

Sham
15-09-2009, 03:01
пробуйте
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?
include("setup.php");
require ("inc/connect.inc.php");
$sql=mysql_query("select*from pages");
$row=mysql_fetch_array($sql);
$sql=mysql_query("select*from sysvals");
$row1=mysql_fetch_array($sql);
$selectedpravactive=$row1['prav_active'];

?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?=$row['head_meta'];?>
<title><?=$row['head_title'];?></title>
<link href="css/template_css.css" rel="stylesheet" type="text/css" />
<link href="css/style<?=$row['style'];?>.css" rel="stylesheet" type="text/css" />
<link href="css/rokmoomenu.css" rel="stylesheet" type="text/css" />

<link href="css/template_ie7.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">



<style type="text/css">
div.wrapper { margin: 0 auto; width: <? if($selectedpravactive==NO): echo"1000"; endif; ?>
<? if($selectedpravactive==YES): echo"1200"; endif; ?>
px;padding:0;}
td.secondcol { width: 235px;}
td.thirdcol { width: 235px;}
</style>
<script type="text/javascript" src="js/mootools-release-1.11.js"></script>
<script type="text/javascript">
window.addEvent('domready', function(){ var FlipTip = new Tips($$('.fliptip'), { className: 'fliptip' });});
</script>

<!--[if IE]>
<script type="text/javascript">
sfHover = function() {
var sfEls = document.getElementById("horiz-menu").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfHover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfHover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>

<![endif]-->

</head>

<script language=JavaScript>
var h=(new Date()).getHours();
if (h > 23 || h < 7) document.write("<body id='night' class='f-default'>");
if (h > 6 && h < 12) document.write("<body id='dawn' class='f-default'>");
if (h > 11 && h < 19) document.write("<body id='day' class='f-default'>");
if (h > 18 && h < 24) document. write("<body id='dusk' class='f-default'>");
</script>



<!-- begin top part -->
<div id="bg-top">
<div id="bg-top-overlay"></div>
</div>
<!-- end top part -->
<!-- start overall frame -->
<div id="overall-frame">
<!-- begin bottom part IE ONLY -->
<div id="bg-bottom-ie">
<div id="bg-bottom-overlay-ie"></div>
</div>
<!-- end bottom part ie -->
<!-- start bottom part OTHER BROWSERS -->
<div id="bg-bottom">
<div id="bg-bottom-overlay">
<!-- begin wrapper -->
<div class="wrapper">
<div id="top-shadow">
<!-- begin header -->
<div id="header">
<div id="logo-space"><a href="index.php" class="nounder"><img src="images/logo.png" style="border:0;" alt="" id="logo" /></a><br /><span><i><?=$row1['slogan'];?></i></span></div>
</div> </div>





<?

$menu =
'
<div id="iefix">
<div id="horiz-menu" class="splitmenu">
<ul class="menu">
<li class="item"><span class="top"><a href="index.php">Главная</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="rules.php">Правила</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="account.php">Аккаунт</a><span class="selector"><br /></span></span></li>
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br /></span></span></li>
';
$sqlgbactive=mysql_query("select*from sysvals where gb_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if($rowgbactive>0):

$menu .= '<li class="item"><span class="top"><a href="gb.php?page=0">Гостевая</a><span class="selector"><br /></span></span></li>';


endif;

$menu .= '</ul></div></div>';

$PHP_SELF = basename($_SERVER['PHP_SELF']);

echo str_replace
(
'<li class="item"><span class="top"><a href="'.$PHP_SELF,
'<li id="current" class="active"><span class="top"><a href="'.$PHP_SELF,
$menu
);
?>



<br>

<div align="center" id="inset">
<span><?
include("inc/banners1.inc.php");
?>
<div id='out'></div>
</span> </div>
<!-- end inset -->
<!-- begin mainbody -->




<div id="body-shadow-left">
<div id="body-shadow-right">
<div id="body">
<table class="mainbody" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">

<?
$sqlgbactive=mysql_query("select*from sysvals where prav_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if($rowgbactive>0):
?>


<td class="secondcol"><div id="secondcol">
<div class="accent">
<div class="accent-left"></div>
<div class="accent-right"></div>
</div>

<?include("inc/stat.inc.php");?>


</div></td>

<?
endif;
?>

<td class="maincol">
<div id="maincol">
<div class="accent">
<div class="accent-left"></div>
<div class="accent-right"></div>
</div>
<div id="component">
<div class="padding">

binders
15-09-2009, 03:35
СПАСИБО заработало :yahoo: :oszone:

binders
04-10-2009, 05:35
Решено то оно решено но как сделать чтоб страницы
не прописаные в коде ниже выбрали
переключали меню как активное

пример
страница profile.php
относится к менюшке Аккаунт
совсем запутался :sorry:
<?

$menu =
'
<div id="iefix">
<div id="horiz-menu" class="splitmenu">
<ul class="menu">
<li class="item"><span class="top"><a href="index.php">Главная</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="rules.php">Правила</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="reg.php">Регистрация</a><span class="selector"><br /></span></span></li>
<li class="item"><span class="top"><a href="account.php">Аккаунт</a><span class="selector"><br /></span></span></li>
<li><span class="top"><a href="faq.php">FAQ</a><span class="selector"><br /></span></span></li>
';
$sqlgbactive=mysql_query("select*from sysvals where gb_active='YES'");
$rowgbactive=mysql_fetch_array($sqlgbactive);
if($rowgbactive>0):

$menu .= '<li class="item"><span class="top"><a href="gb.php?page=0">Гостевая</a><span class="selector"><br /></span></span></li>';


endif;

$menu .= '</ul></div></div>';

$PHP_SELF = basename($_SERVER['PHP_SELF']);

echo str_replace
(
'<li class="item"><span class="top"><a href="'.$PHP_SELF,
'<li id="current" class="active"><span class="top"><a href="'.$PHP_SELF,
$menu
);
?>

Sham
04-10-2009, 23:48
если я правильно понял, перед echo добавьте
if($PHP_SELF == 'profile.php') $PHP_SELF = 'account.php';
str_replace расчитан на то, что хтмл-код будет именно в таком виде без изменений, иначе регексп и preg_replace...

конечно, все это можно и симпатичнее реализовать....

binders
05-10-2009, 00:53
всё правильно всё работает
конечно, все это можно и симпатичнее реализовать... »
а как это буду очень признателен




© OSzone.net 2001-2012