![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Smartyを使ったホームページがあり、更新を頼まれています。
サイト内でjavascriptを使用し、ページごとに振り分けをしたいと思い if を使いたいのですが
イマイチわかりませんのでアドバイスをお願いします。
ヘッダーテンプレート内の<head></head>内の<script>タグをページとディレクトリに分けたいのですが、
<script type="text/javascript" src="http://www.***.com/data/js/jquery.js" charset="UTF-8"></script>
{if ($smarty.server.REQUEST_URI == '/')}
<script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script>
{elseif ($smarty.server.REQUEST_URI == '/guide/')}
<script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script>
{elseif ($smarty.server.REQUEST_URI == '/contact/')}
<script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script>
<script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script>
{elseif ($smarty.server.REQUEST_URI == '/item/')}
<script type="text/javascript" src="http://www.***.com/data/js/*****.js" charset="UTF-8"></script>
{else}
{/if}
と、記述しました。
{if ($smarty.server.REQUEST_URI == '/')}
は、トップページにのみ適用。
{elseif ($smarty.server.REQUEST_URI == '/guide/')}
は、ガイドフォルダ内に適用。
{elseif ($smarty.server.REQUEST_URI == '/contact/')}
は、コンタクトフォルダ内に適用。
{elseif ($smarty.server.REQUEST_URI == '/item/')}
は、ガイドフォルダ内に適用。
としたいのですが、どれも ***.com/index.php ***.com/guide/index.php ~には
適用されるものの ***.com/guide/info.php には /guide/としているのに適用されません。
/guide/ は、 ***.com/guide/フォルダ内のページ表示に対しての指示ではないのでしょうか?
これらフォルダ内に適用するにはどう言った書き方をすれば宜しいのでしょうか?
アドバイスをお願いします。
No.1ベストアンサー
- 回答日時:
$smarty.server.REQUEST_URI の値は、
URLのホスト名より後の部分になります。
フォルダだけでなくその後の部分も含みます。
http://www.***.com/ だと / です。
http://www.***.com/index.php だと /index.php です。
http://www.***.com/guide/info.php だと /guide/info.php です。
http://www.***.com/foo/bar.php?a=1 だと /foo/bar.php?a=1 です。
http://www.***.com/ のときは、/ なので、
($smarty.server.REQUEST_URI == '/') が成立します。
http://www.***.com/guide/ のときは、/guide/ なので、
($smarty.server.REQUEST_URI == '/guide/') が成立します。
http://www.***.com/guide/info.php のときは、/guide/info.php なので、
($smarty.server.REQUEST_URI == '/guide/') は成立しません。
ただそうすると、***.com/index.php や ***.com/guide/index.php のときも
適用されないはずなんですが。。。
もしかすると index.php にアクセスすると ./ に転送するような処理が
サーバーの設定か、PHP側で行われているのかもしれません。
で、対応案です。
PHPの stropos 関数を修飾子に使って、$smarty.server.REQUEST_URI が
フォルダの名前で始まっているか(開始位置が 0 か)を調べると、
以下のような書き方ができるかと思います。
{if ($smarty.server.REQUEST_URI == '/')}
{* トップページにのみ適用 *}
{elseif ($smarty.server.REQUEST_URI|strpos:'/guide/' === 0)}
{* ガイドフォルダ内に適用 *}
{elseif ($smarty.server.REQUEST_URI|strpos:'/contact/' === 0)}
{* コンタクトフォルダ内に適用 *}
{elseif ($smarty.server.REQUEST_URI|strpos:'/item/' === 0)}
{* アイテムフォルダ内に適用 *}
{else}
{/if}
アドバイスありがとうございます。
strposについて調べつつ試行錯誤行やったところようやく出来ました(汗
お礼にお時間が掛かり申し訳ありませんでした。
まだまだ色々弄っている最中ですがまたわからなくなり質問をするかもしれませんが
その際には宜しくお願いします。
この度はとっても参考になり大変参考になりました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tplを読みに行けません。
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
PHPからMSSQLへの接続結果の文...
-
フォームで戻った際に入力済み...
-
$filePath = './user_img/' . $...
-
.htaccessにphp_valueが使用できな
-
PHPのif文でその処理を途中で抜...
-
さくらサーバーでsessionが使え...
-
Apacheでhttp://localhost/が表...
-
phpでうまく画像がダウンロード...
-
Smarty includeでテンプレート...
-
現在位置より2つ上のディレク...
-
透過PNGが透過されない!!
-
「@$変数」の「@の意味は?」
-
インスタンス化に伴うメモリ消...
-
データ送信をボタンを押さずに...
-
PHP でmb_send_mailが上手くい...
-
error_reporting(0);にも関わら...
-
別ファイルの変数を呼び出した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Smartのカスタマイズでエラー
-
Smarty tpl内のifの書き方について
-
phpでサブルーチン
-
smarty3で変数表示について
-
PHPの関数って何種類ありますか?
-
smartyテンプレート読み込みに...
-
PHPでのページ送り機能
-
PHPフレームワーク環境でのSmar...
-
xserver Smarty PHP+MySQL
-
PHPってなんの略?
-
これからのPHP開発ではPDOを選...
-
HTML、CSS、PHPに便利なテキス...
-
phpで距離÷時間の方法
-
Pleskサーバ利用時にSmartyのas...
-
perlとphpの共用?
-
PHP+Smarty+MySQLで、データベ...
-
【php】動的なURLを静的に見せ...
-
Smartyのテンプレート
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
おすすめ情報