0

この PHP 関数を使用id="current"して、現在のページに応じてナビゲーション メニューに追加しています。

function get_current() {
    foreach(func_get_args() as $arg) {
        if (strpos($_SERVER['REQUEST_URI'], $arg) !== false) {
            echo 'id="current"';
        }
    }
}

シンプルな HTML:

<ul>
    <li <?php get_current('') ?>><a>HOME</a></li>
    <li <?php get_current('page1.php') ?>><a>PAGE 1</a></li>
    <li <?php get_current('page2.php') ?>><a>PAGE 2</a></li>
    <li <?php get_current('page3.php') ?>><a>PAGE 3</a></li>
    <li <?php get_current('page4.php') ?>><a>PAGE 4</a></li>
</ul>

ホームページを除いて、正常に動作します。どの引数を使用する必要がありますか? ホームページはドメインのルートにあります。ユーザーに index.php へのアクセスを強制することを避け、代わりにそれを引数として設定したいと思います。

4

1 に答える 1

1

あなたの場合、私は次のように解決します:

<?
function get_current( $nav_page ) {
    $uri = $_SERVER['REQUEST_URI'];
    return ( $uri == $nav_page ) ? ' id="current" ' : '';
}
?>

HTML の小さな変更:

<ul>
    <li <?= get_current('/') ?> ><a>HOME</a></li>
    <li <?= get_current('/page1.php') ?> ><a>PAGE 1</a></li>
    <li <?= get_current('/page2.php') ?> ><a>PAGE 2</a></li>
    <li <?= get_current('/page3.php') ?> ><a>PAGE 3</a></li>
    <li <?= get_current('/page4.php') ?> ><a>PAGE 4</a></li>
</ul>

$_SERVER['REQUEST_URI']絶対パスが含まれているため、パラメーターを絶対 URL に変更したことに注意してください。

編集:

を使用func_get_args()しているため、任意の数の「ページ名.php」を のパラメーターとして受け入れる可能性がありますget_current()。その場合、get_current関数は次のようになります。

function get_current() {
    $uri = $_SERVER['REQUEST_URI'];
    if ( in_array( $uri, func_get_args() ) )
        return ' id="current" ';
    return '';
}

およびそれに付随する HTML:

<li <?= get_current('/', '/index.php')?> > ... </li>

EDIT2:

$_SERVER['REQUEST_URI']ファイルがフォルダー内にあることを示しています/new/。エンドパーツを比較するロジックを変更しました。

<?
function get_current( $nav_page ) {
    $uri = $_SERVER['REQUEST_URI'];
    return is_rear_match( $uri, $nav_page ) ? ' id="current" ' : '';
}

function is_rear_math( $haystack, $needle ) {
    $rear = substr($haystack, -strlen($needle));
    return $rear !== false && $rear === $needle;        
}
?>

HTML:

<ul>
    <li <?= get_current('/') ?> ><a>HOME</a></li>
    <li <?= get_current('/page1.php') ?> ><a>PAGE 1</a></li>
    <li <?= get_current('/page2.php') ?> ><a>PAGE 2</a></li>
    <li <?= get_current('/page3.php') ?> ><a>PAGE 3</a></li>
    <li <?= get_current('/page4.php') ?> ><a>PAGE 4</a></li>
</ul>
于 2013-10-04T02:41:24.113 に答える