ホーム»サイト管理»ファイルが属するディレクトリ名をCSS用のclass名に取り込む

ファイルが属するディレクトリ名をCSS用のclass名に取り込む

公開日: 2008年12月23日 (火) 18:42  – 更新日: 2009年07月18日 (土) 23:21

一々、ページ毎にカテゴリ別のclass名を記入するのは面倒臭い

カテゴリによって、決められたフォルダにファイルを仕分けしているなら、そのファイルが入っているフォルダの名前を、div要素のclass名にすれば手っ取り早いですね。フォルダを移動させれば自動的にclass名も変更されるし!
但し、idやclassにつけて良い名前は「半角英数」で且つ「数字やハイフンやアンダーバーが先頭に来てはならない」ので、フォルダ名もその規則に従って命名しておく必要があります。

直近のディレクトリ名を取得する場合

サイトのホームページがドキュメントルートにある場合、最終的に取得できるデータはありません。
ので、データが無かった場合は「home」というclass名を出力します。その他、何らかの文字列が得られた場合はそれを出力します。

出力例: php-tips

<?php 
$file = $_SERVER['PHP_SELF'];//ファイル名をフルパスで取得
$path = dirname($file);//ファイル名を抜かしたパスだけ取得

$dirname = strrchr($path, "/");// 最後にディレクトリセパレータが出た箇所から最後までを取得
$classname = str_replace("/", "", $dirname); // "/"を削除する。

if($classname == "") {
echo 'home';
}else{
echo $classname;
}
?>

属するディレクトリ名を全て列挙する場合

最初は「親ディレクトリ(reference-data)」のみを得ようと思ったのですが、方法が判りませんでした(笑)。
親ディレクトリも含むディレクトリ名を、半角スペースで列挙してみます。CSSでのclass名指定ならこれで充分使える筈。

出力例: site-management php-tips

<?php 
$file = $_SERVER['PHP_SELF'];//ファイル名をフルパスで取得
$path = dirname($file);//ファイル名を抜かしたパスだけ取得

$dirname = substr($path, 1); // 先頭にある文字を1つ消す("/")。
$classname = str_replace("/", " ", $dirname); // "/"を" "にする。

if($classname == "") {
echo 'home';
}else{
echo $classname;
}
?>

お知らせ

2010/03/27

素材依頼受付期間は、2010/04/01~2010/06/30です。
本業が多忙の為、申し訳ありませんが、それ以降の受付は休止致します。再開時期は未定ですが、生活が安定したら復活するつもりはあります。気長に生温くお待ちください。
(依頼ではないもやっとしたご要望については、随時承っております。どのページからでも拍手で適当に送れますし、私も適当に対処します)

Terms of Use written in Japanese.