2013-04-12 8 views
8

こんにちは私は各ページの自分のサイトにメニューを持っていますが、それを自分のmenu.phpファイルに入れたいのですが、設定方法が分かりませんclass = "アクティブ"私は何ページ目にいますか。ここ は私のコードです:私を助けてください現在のページを「アクティブ」に設定するには

menu.php:

<li class=" has-sub"> 
    <a class="" href="javascript:;"><i class=" icon-time"></i> Zeiten<span class="arrow"></span></a> 
    <ul class="sub"> 
     <li><a class="" href="offnungszeiten.php">Öffnungszeiten</a></li> 
     <li><a class="" href="sauna.php">Sauna</a></li> 
     <li><a class="" href="frauensauna.php">Frauensauna</a></li> 
     <li class=""><a class="" href="custom.php">Beauty Lounge</a></li> 
     <li><a class="" href="feiertage.php">Feiertage</a></li> 
    </ul> 
</li> 
+0

アクティブリンクを意味しますか?リンクを他のリンクと異ならせることはできますか?現在のページに応じて? –

+0

現在のページリンクを取得するには$ _SERVER ['REQUEST_URI'] ..を使用してください – alwaysLearn

+0

あなたはオフネットスーツやサウナなどの任意のページにあるあなたのURLをswhenしてください –

答えて

10

あなたのスクリプト内のページの配列を構築し、現在アクティブなページと一緒にビューファイルにそれを渡されたかどうそれは容易になるだろう:Smartyあなたのメニューのようなテンプレートエンジンで

//index.php or controller 

$pages = array(); 
$pages["offnungszeiten.php"] = "Öffnungszeiten"; 
$pages["sauna.php"] = "Sauna"; 
$pages["frauensauna.php"] = "Frauensauna"; 
$pages["custom.php"] = "Beauty Lounge"; 
$pages["feiertage.php"] = "Feiertage"; 

$activePage = "offnungszeiten.php"; 


//menu.php 
<?php foreach($pages as $url=>$title):?> 
    <li> 
     <a <?php if($url === $activePage):?>class="active"<?php endif;?> href="<?php echo $url;?>"> 
     <?php echo $title;?> 
     </a> 
    </li> 

<?php endforeach;?> 

。PHPでも見た目が良くなります

//menu.php 
{foreach $pages as $url=>$title} 
    <li> 
     <a {if $url === $activePage}class="active"{/if} href="{$url}"> 
     {$title} 
     </a> 
    </li> 
{/foreach} 
12

のようなあなたのphpファイルのそれぞれに変数を作成します。

$activePage = "sauna"; (different for each page) 

を、あなたの中でその変数をチェックこのようなHTMLページは

<?php if ($activePage =="sauna") {?> 
class="active" <?php } ?> 
1

ですあなたがすることができる2つのこと。

まずあなたは、この

のようなものをあなたは $_SERVER['PHP_SELF']$_SERVER['REQUEST_URI']を使用して要求するPHPファイルや、あなたの現在のページを読んで、リンクのURLとそれを比較するために使用することができ、他の $_SERVER global変数の現在のファイル名を読み取ることができます
<a href="offnungszeiten.php" <?php if($_SERVER['PHP_SELF']=='offnungszeiten.php'){ ?>class="activatepage" <?php } ?> > 
     Öffnungszeiten 
    </a> 

もう一つはで、すべて以下のコードを入れて、この

<?php 
$cur_page ="offnungszeiten" 
?> 

<a href="offnungszeiten.php" <?php if($cur_page=='offnungszeiten'){ ?>class="activatepage" <?php } ?> > 
Öffnungszeiten 
</a> 
+0

これは最高の答えです(最初の1つ)。 – Lesik2008

3

のように、現在のページの現在の名前を格納しますあなたは世界的に読むことができる変数を作成することですとすべてが世話をします。

// function to get the current page name 
function PageName() { 
    return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); 
} 

$current_page = PageName(); 

現在のページ名が、あなたのメニューでこれを入れてもらうために、上記を使用しactiveがあなたのメニュー項目

0

送るページ名をハイライト表示するクラスの名前です

<li><a class="<?php echo $current_page == 'offnungszeiten.php' ? 'active':NULL ?>" href="offnungszeiten.php">Öffnungszeiten</a></li> 
<li><a class="<?php echo $current_page == 'sauna.php' ? 'active':NULL ?>" href="sauna.php">Sauna</a></li> 
<li><a class="<?php echo $current_page == 'frauensauna.php' ? 'active':NULL ?>" href="frauensauna.php">Frauensauna</a></li> 
<li><a class="<?php echo $current_page == 'custom.php' ? 'active':NULL ?>" href="custom.php">Beauty Lounge</a></li> 
<li><a class="<?php echo $current_page == 'feiertage.php' ? 'active':NULL ?>" href="feiertage.php">Feiertage</a></li> 

クエリ文字列で、変数を取得することですべてのページでチェックします。

+0

本当ですか?これは答えとして構成されていますか? – asprin

1

私は

echo createTopNav("about"); 

この関数を呼び出すと、出力は次のようになり、その後

、このようにPHPで

function createTopNav($active) 
{ 
    $pages = array(
     array(
      'name'=>'Home', 
      'link'=>'index' 
     ), 
     array(
      'name'=>'Smartphone', 
      'link'=>'smartphone' 
     ), 
     array(
      'name'=>'Tablet', 
      'link'=>'tablet' 
     ), 
     array(
      'name'=>'About Us', 
      'link'=>'about' 
     ), 
     array(
      'name'=>'Contact Us', 
      'link'=>'contact' 
     ) 
    ); 
    $res = "<ul>"; 
    $activePage = ""; 
    foreach($pages as $key=>$val) 
    { 
     if($val['link']==$active) 
     { 
      $res.= "<li><a href='".$val['link']."' class='active' >".$val['name']."</a></li>"; 
     } 
     else 
     { 
      $res.= "<li><a href='".$val['link']."'>".$val['name']."</a></li>";   
     } 
    } 
    $res.="</ul>"; 
    return $res; 
} 
それを行われています

<ul> 
    <li><a href="index">Home</a></li> 
    <li><a href="smartphone">Smartphone</a></li> 
    <li><a href="tablet">Tablet</a></li> 
    <li><a href="about" class="active">About Us</a></li> 
    <li><a href="contact">Contact Us</a></li> 
</ul> 
+0

この点は何ですか?全体のポイントは、別のPHPファイルにメニューを持つことです。とにかく各ページにメニュー全体を含めるならば、 'php'関数は必要ありません – CodyBugstein

0

シンプレソリューション:

上記コードasprinからコードを借りる。

新しいファイルmenu.phpを作成し、メニューのコピーを1つだけ保存します。このファイルでは、ページ名としてパラメータを取る関数addMenu($pageName)を作成し、現在のタグを追加した後にメニューからなる文字列を返します。

HTMLコードでは、include(menu.php)とし、現在のページ名でaddMenuという関数を呼び出します。私はそれぞれ以下のコードを実行することにより、この使用してjQueryの/ JavaScriptを解決

<div id="menu"> 
      <?php 
       include('menu.php'); 
       echo addMenu("index"); 
       echo $hello;  
      ?> 
     </div> 
0

menu.php

 <?php 

     function addMenu($pageName){ 
      $menu = 

       '<ul> 
        <li><a href="Öffnungszeiten.php"' . ($pageName == "Öffnungszeiten" ? "class=\"current\"" : "") . '><span>Öffnungszeiten</span></a></li> 
        <li><a href="sauna.php"' . ($pageName == "Öffnungszeiten" ? "class=\"current\"" : "") . '><span>Sauna</span></a></li> 
        <li><a href="frauensauna.php"' . ($pageName == "Frauensauna" ? "class=\"current\"" : "") . '><span>Frauensauna</span></a></li> 
        <li><a href="custom.php" ' . ($pageName == "lounge" ? "class=\"current\"" : "") . '><span>Beauty Lounge</span></a></li> 
        <li><a href="Feiertage.php"' . ($pageName == "feiertage" ? "class=\"current\"" : "") . '><span>Feiertage</span></a></li>                     
       </ul>'; 
      return $menu; 
    } 
     ?> 

そして、あなたのHTMLで、言うこの:だからあなたのコードは次のようになります。任意のページがロードされる時刻:

$(document).ready(function() {  
    //Get CurrentUrl variable by combining origin with pathname, this ensures that any url appendings (e.g. ?RecordId=100) are removed from the URL 
    var CurrentUrl = window.location.origin+window.location.pathname; 
    //Check which menu item is 'active' and adjust apply 'active' class so the item gets highlighted in the menu 
    //Loop over each <a> element of the NavMenu container 
    $('#NavMenu a').each(function(Key,Value) 
     { 
      //Check if the current url 
      if(Value['href'] === CurrentUrl) 
      { 
       //We have a match, add the 'active' class to the parent item (li element). 
       $(Value).parent().addClass('active'); 
      } 
     }); 
}); 

この実装では、メニューに「NavMenu」IDが設定されていることが前提です。

<ul id="NavMenu"> 
    <li><a href="http://localhost/index.php">Home</a></li> 
    <li><a href="http://localhost/smartphone.php">Smartphone</a></li> 
    <li><a href="http://localhost/tablet.php">Tablet</a></li> 
    <li><a href="http://localhost/about.php" class="active">About Us</a></li> 
    <li><a href="http://localhost/contact.php">Contact Us</a></li> 
</ul> 

何が起こっているかを見るためにはJavaScriptのコメントを読む:そうのようなhttp://hostname/scriptname.phpのhref属性を使用しています。別のhrefレイアウト(元の例のような)を使いたい場合は、href属性と同じレイアウトを使用するために、CurrentUrl変数を少し再生する必要があります。

これは私が大きなメニューと多くのページを持つ既存のサイトを持っていて、すべてのページを修正する必要がないようにしたいので、最も簡単な解決策でした。これにより、既存のすべてのページの問題を解決するヘッダーファイル(すでに中央ファイルでした)にJavaScriptコードを挿入することができます。

0

ちょっと遅くなったけど、ちょっと修正してthis Javascript methodを使ってしまいました。これは、現在のコードに多くの変更を必要とせず、スクリプトを実行するだけで、利点があります。

window.onload = activateCurrentLink; 

function activateCurrentLink(){ 
    var a = document.getElementsByTagName("A"); 
    for(var i=0;i<a.length;i++) 
     if(a[i].href == window.location.href.split("#")[0]) 
      a[i].className = 'activelink'; 
} 
0

あなたは、この方法が有効このケースで単語を通過しますPHPを使用して、現在のページを取得し、アクティブなページを設定するには、クラス・パラメータの内側にそれを置く

<?php 
function active($current_page){ 
    $page = $_GET['p']; 
    if(isset($page) && $page == $current_page){ 
     echo 'active'; //this is class name in css 
    } 
} 
?> 
<ul> 
    <li><a class="<?php active('page1');?>" href="?p=page1">page1</a></li> 
    <li><a class="<?php active('page2');?>" href="?p=page2">page2</a></li> 
    <li><a class="<?php active('page3');?>" href="?p=page3">page3</a></li> 
    <li><a class="<?php active('page4');?>" href="?p=page4">page4</a></li> 
</ul> 
8

を使用することができます。

<?php 
function active($currect_page){ 
    $url_array = explode('/', $_SERVER['REQUEST_URI']) ; 
    $url = end($url_array); 
    if($currect_page == $url){ 
     echo 'active'; //class name in css 
    } 
} 
?> 
<ul> 
    <li><a class="<?php active('page1.php');?>" href="http://localhost/page1.php">page1</a></li> 
    <li><a class="<?php active('page2.php');?>" href="http://localhost/page2.php">page2</a></li> 
    <li><a class="<?php active('page3.php');?>" href="http://localhost/page3.php">page3</a></li> 
    <li><a class="<?php active('page4.php');?>" href="http://localhost/page4.php">page4</a></li> 
</ul> 
+0

良い仕事iraqi_love4ever – Jayesh

関連する問題