
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ランキング
-
BASIC認証のフォームをデザイン...
-
どうして送信されないのでしょ...
-
PHP8を使うと、大量のWarningが...
-
掲示板のセキュリティについて...
-
PHPでCSVを出力するさいに、ル...
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
preg_matchで Warning: Undefin...
-
プログラムコードを入力する場...
-
PHPの変わった閉じタグの必要性...
-
htmlspecialcharsが機能してい...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Smarty tpl内のifの書き方について
-
Smartyのif構文について
-
PHPフレームワーク環境でのSmar...
-
xserver Smarty PHP+MySQL
-
phpで距離÷時間の方法
-
PHPってなんの略?
-
phpでサブルーチン
-
【php】動的なURLを静的に見せ...
-
PHPの関数って何種類ありますか?
-
Smartyのテンプレート
-
tplを読みに行けません。
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
onedrive にexcelファイルをア...
-
「クラウドにアップロード」」...
-
トランザクションが原因?DBに...
-
.phpと.incファイルの違いはな...
おすすめ情報