地味に便利:自動的にリンクにclass=”current”を付加するPHP書きました。

静的サイトを作るときに、ヘッダーとかグローバルナビゲーションとかを共通化して、読み込むとコードも見やすいし、修正とかのメンテナンスも楽ですよね。

そんなときに、便利な関数です。

[php]
<?php

function is_current( $uri = "" ) {
$uri = trim( $uri, "/" );
$request_uri = $_SERVER[‘REQUEST_URI’];

if( $uri && strpos($request_uri."/", "/".$uri."/", 0) !== FALSE ) {
return true;
}
$request_uri = trim(str_replace( "/index.php", "", $request_uri ), ‘/’);
if( !$uri && !$request_uri ) {
return true;
}
return false;
}

function echo_current( $uri = "" ) {
if(is_current( $uri )) {
echo ‘current’;
};
}
?>
[/php]

こんな感じで使います。引数が空の場合は、トップページのときにcurrentを吐きます。

[php]
<li class="nav1 <?php echo_current();?>"><a href="/">ホーム</a></li>
<li class="nav2 <?php echo_current("news");?>"><a href="/news">ニュース</a></li>
[/php]

静的サイトを作るときにrequire_once $_SERVER[‘DOCUMENT_ROOT’].”/inc/functions.inc”;
とかしてやると色々捗ります。