
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xserver Smarty PHP+MySQL
-
PHPのレガシーな設計について
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
CFileDialogの最初のディレクト...
-
*.php、*.php3、*.phtmlの違い
-
.phpと.incファイルの違いはな...
-
require_once()でファイルが読...
-
ImageCreate関数が undefined f...
-
php4とphp5での数値の取り扱い...
-
Prompt入力値をphp変数として取...
-
header(Location:~)で$_SESS...
-
シェルスクリプトをPHPで動かそ...
-
HPを開くとダウンロードページ...
-
phpのextension_dirを複数指定...
-
【file_exists】ファイルが存在...
-
PHPからlhaコマンドを使いたい
-
require_onceが動いていない
-
再度、xamppにおけるjpgraphの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Smartのカスタマイズでエラー
-
tplを読みに行けません。
-
Smarty tpl内のifの書き方について
-
これからのPHP開発ではPDOを選...
-
PHPのレガシーな設計について
-
xserver Smarty PHP+MySQL
-
PHPの関数って何種類ありますか?
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
.phpと.incファイルの違いはな...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
onedrive にexcelファイルをア...
-
[php初心者]サイトを見てデータ...
-
makefile でファイルをコピーす...
-
【file_exists】ファイルが存在...
-
「クラウドにアップロード」」...
おすすめ情報