• 締切済み

phpでテンプレート作成時の条件分岐

htmlでwebサイトを作成しています。 ファイル自体はphpにして、ヘッダーやナビゲーション、フッターなど、 共通部分はテンプレート化してincludeさせていますが、 サイトのTOPページだけ、微妙に表示を変えたいところがあります。 TOPページだけ、テンプレートを使わなければ良い話なのですが、 出来ればテンプレートを読み込ませたいと思っています。 そこで、特定のページにだけあるタグを表示させたりする条件分岐の書き方を 教えてください。 ソース中に下記のように書くのだとおもうのですが、、 <?php if (条件) { <p>○○○</p> } else {  <h2>xxxxx</h2> <p>○○○</p> } ?> (条件)部分の書き方がわかりません。 よろしくお願いします。

みんなの回答

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.3

テンプレート側で判断させるのではなく、呼び出すページ側(TOPページ)から指定するという方法もあります。テンプレートには適当な変数を入れておくだけ。変数がセットされていれば表示され、無ければ何も表示されません。 ▼TOPページ側 $H2 = "<h2>○○○○</h2>"; include テンプレートfile; ▼テンプレート側 $H2 <p>○○○</p> 別の方法として、できればclass、あるいはfunctionにしておくと function print_page($title="",$discription="",$h2=""){~} のようにパーツ毎に指定できて応用範囲が広がります。 原則として「使う方(TOPペジージ側)が指示し、使われる側(テンプレート)は指定通りの仕事をするだけ」にしておくと、後々使い回ししやすいので手持ちの資源がどんどん増えますよ。

回答No.2

とりあえず質問者はincludeしてのテンプレート化より テンプレートエンジン使った方がいいぞ。 >本業はWebアプリの開発なんかをするSEです。 といっている割に >if ($_SERVER['REQUEST_URI'] == '/index.php') { ・・・ } 素人の書き方。文字列比較に「==」は使うなよ。 PHPにおいての比較演算子をまったく理解していない五流SEwwww この場合だけならまぁ何とかなるけど通常は文字列比較の比較演算子に==を使うのは素人だけ それに==を使うより正式な比較演算子の方が速度もでるみたいだし(==の場合は内部で型をあわせる処理をするため遅くなるみたい)

sanaeeeee
質問者

お礼

ご回答ありがとうございました。 すみません。私はSEではないのでご回答いただいた方のソースが 素人の書き方なのかどうかは存じ上げません・・・。 corokorocoroさんの書き方も教えていただければ幸いです。 よろしくお願いします。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

if ($_SERVER['REQUEST_URI'] == '/index.php') { ・・・ } といった感じでしょうか。

sanaeeeee
質問者

お礼

早速のご回答ありがとうございました。 参考にさせていただきます。