2016-05-27 4 views
0

すべてのディレクトリをリンクとしてリストするスクリプトがあります。foreachループの現在のリンクを強調する方法

<?php 
$dirs = array_filter(glob('../*'), 'is_dir'); 
?> 

<ul style="float:left;"> 
<?php 
foreach ($dirs as $nav) { 
    echo "<li><a href='$nav'>".basename($nav)."</a></li>"; 
} 
?> 
</ul> 

現在のディレクトリを強調表示するか、現在のリンクにクラスまたはIDを指定します。私はif(currentLink=thisLink) { // add span class somehow} else {// continue looping}のようにこれを達成するためにif文が必要だと理解していますが、これを行う方法は完全にはわかりません。

これを実装する正しい方法は何でしょうか?あなたが必要とする現在のディレクトリ名を見つけるために

+0

まず、 'crrentLink'が何であるか、そして' thisLink'が何であるかを特定する必要があります。比較する値 – ArtisticPhoenix

答えて

0

:foreachループを使用して

basename(getcwd()) 

をこの:

if(basename($nav) == basename(getcwd())) 
{ 
// add span class 
} 
1

条件場合は、[はい、あなたは正しいです、あなたのループにする必要があります。 ループの前に変数に現在のリンクを保存します。 COMPAIRに変数を知らず

<?php 
$dirs = array_filter(glob('../*'), 'is_dir'); 
?> 

<ul style="float:left;"> 
<?php 
$currentlink='abc'; 
foreach ($dirs as $nav) { 
    if($nav==$currentlink) 
     $class='current'; 
    else 
     $class=''; 
    echo "<li><a class='$class' href='$nav'>".basename($nav)."</a></li>"; 
} 
1

、構文賢明なあなたはあなたがブラウザで現在のURLを取得するには$_SERVERに見て、そのとの一部を使用することができ、この

<?php 
    foreach ($dirs as $nav){ 
     $class = ''; 
     if($currentLink == $thisLink) { 
       $class = 'class="highlight"'; 
     } 
     echo '<li><a href="'.$nav.'" '.$class.' >'.basename($nav).'</a></li>'; 
    } 
?> 

のような何かをしたいですでこれらの変数を埋めるためのベース名。

http://php.net/manual/en/reserved.variables.server.php

0

まずあなたが現在のリンクを取得する必要があります。 $ current_linkとして保存

<?php 
$dirs = array_filter(glob('../*'), 'is_dir'); 
$current_dir = 'store current directory here'; 
?> 

<ul style="float:left;"> 

<?php 
foreach ($dirs as $nav) { 
    if($nav == $current_dir) { 
     $class_name = 'active'; 
    } 
    else { 
     $class = ''; 
    } 
    echo "<li class='$class'><a href='$nav'>".basename($nav)."</a></li>"; 
} 
?> 
</ul> 

希望します。

関連する問題