読者です 読者をやめる 読者になる 読者になる

~おかもん放浪中~

縄の魔術師、おかもん!なわとび(単なわとび・ダブルダッチ・2in1など)の紹介の他、五ヶ国語制覇への道も!

(備忘録)PHPでホームページ作成・更新時のコピペ作業激減1

階層が違うファイルを作ろうとしたら、ソースに書かれているリンクとかincludeなどの参照系のコードを全て書き加えるなり削除するなりしないといけなかったのです。
例えば、index.htmlでは

<img src="image/top.jpg"></img>

で良かったものが、一つ下の階層、例えばcompetition/event.htmlとかだと、

<img src="../image/top.jpg"></img>

みたいにしないといけないです。これが面倒だったのですが、PHPを使えばある程度楽にできるようなのでメモしておきます。

結局は全部に絶対参照させておけばいいのですが、それだとサーバーに毎回アップしないといけないので、できることなら「いつでも使える絶対参照」が欲しいなと思っていたところでした。

結論を言うと、そのファイルの位置から上位の部分を抜き出して、そこから絶対的な参照に持っていけば良いと分かりました。
何度もサーバーにアクセスしない方が良いとのことで、まず1度のアクセスで得られた値を変数に入れておき、それを用いて表現しました。
下の2つまだあんまりちゃんと理解してないんですが。。。

$server_root ドキュメントルートを参照
$site_root HTTPのホストを参照

config.php

$server_root=$_SERVER['DOCUMENT_ROOT'].'/';
$site_root=(!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';

HTMLというかPHP index.phpとか(htmlにするとphp動きません)

<?php include('config.php'); ?>
<html>
...
<script type="text/javascript" src="<?php echo $site_root.'js/jquery.min.js' ?>"></script>
...
<?php require_once $server_root.'responsive_menu.php'; ?>
...
<a href="<?php echo $site_root.'event.php' ?>">read more</a>
...
</html>

これでわずらわしいコピペ作業が激減!
require_once で共通メニューを別ファイルにまとめているので更に楽にー

まあ常識なんだと思いますし、大規模開発の時はjsonとか使ってやるらしいのであんまり必要ないかもしれないですが。。。