2017-03-11

PHPでHTMLにidやclassを自動で割り当てる

はじめに

ウェブサイトの制作では、基本的に固定ページのCSSをページ毎に管理するというよりは、固定ページは一括で基本的なスタイルを付与するというのが一般的に思います。ですが人によっては、ページ毎にIDなどで区別してCSSのデザインを個別に管理したい、という人もいるかもしれません。2、3ページならそれでも良いかもしれませんが、ページがどんどん増えて行く事を考慮するとどう考えても非効率的ですが、それを知ってか知らずか、わざわざページ毎にCSSを当てる人もいるものです。

そんな要望に応える場面があったので、それについての対処方法を書いていきたいと思います。

ページ毎に異なるidを割り振る方法を考える

ページ毎のbodyタグにどうすれば簡単に個別のidが割り当てられるかな、と考えてパッと思いついたのが、URLを利用するというものでした。URLであれば確実にページ毎に異なりますし。しかし、流石に手動でやるのはないなーと思って思い出したのが、PHPの「$_SERVER["REQUEST_URI"]」というものです。

これは、サーバー変数のうちの一つで、ドメイン名以降の現在のURLを返すというものです。ただ、これだけではURlが長くなればid名も長くなってしまいます。末尾以外のURLの部分はいらないので、さらに色々調べて、「basename」関数を使えば、URLの末尾のみを取得できる事がわかりました。必要なものが揃ったので、この2つを駆使してページ毎にbodyタグに異なるidを付与していきます。

URLを利用してページ毎のbodyタグにidを割り振る

といっても、やることは簡単。上記二つのPHP関数をbodyタグに「id=」の形で追加してやるだけです。具体的なコードは以下の通り。

<body id="<?php echo basename($_SERVER["REQUEST_URI"]);?>">

これを埋め込んでデベロッパーツールで確認すると、こんな感じでページ毎に異なるid になります。

URL末尾が35の場合

ページ毎にbodyタグに異なるidを付与するその1

URL末尾がpolicyの場合

ページ毎にbodyタグに異なるidを付与するその2

さいごに

bodyに対して使うということはあまりないと思いますが、もちろんそれ以外にも使用できるので、ページ毎に自動的に異なる何かを割り振りたい、と思った時にはこれを応用する形で利用できると思います。

最近になって、PHPって結構いろんな関数が標準で用意されていて、ウェブ周りの大体のことは何でもすぐできちゃうなーということに気付きました。これが難易度が低いと言われる所以なのでしょうか。ただ、裏の動きを読んで最適なものを使い分けるとなるとまた別だと思うので、今後はそこも突き詰めていければなと思います。



コメントする(※は必須項目です)













画像認証