ご承知にように FlatPress.world はインタネット側からアクセスできない純粋仮想ドメインです。ところで、実際に活用しようと考え始めたとき、どっちの画面であるのかわからなくなることがあります。
その理由の一つは、ヘッダー部分を含めてまだ(ユニークなデザインにする)カスタマイズに手が届いていない状況であることと、コピーを取って試験をするような場合です。
サーバ名表示をする
そこで、サーバ名を自動的に表示させて容易に判別しようと考えました。
- サーバ名を取得する。(たぶん、php プログラムのどこか)
- その値または有無を変数に格納する。(たぶん、sumarty に引き渡す)
- テンプレートでそれを表示する。(たぶん、ここで判別する)
- テンプレートの場所は、この「テンプレート適用場所の調査」で判明している。
- 表示部分を確認しておき、スタイルシートを書き加える。
サーバ名の取得
/index.php で試しています。
<?php include 'defaults.php'; include INCLUDES_DIR . 'includes.php'; include SMARTY_DIR . 'SmartyValidate.class.php'; define('MOD_INDEX', 1); /* 2014-8-17 */ $servername = getenv('SERVER_NAME'); $smarty->assign('servername', $servername);
最後の3行を index.php の5行目ぐらいに挿入しました。ここでしていることは、ウェブサーバ(Apache)からサーバ名を受け取り、その後、Smarty の変数に引き渡しています。
テンプレートに書き加える
/fp-interface/themes/leggero/header.pl
<div id="outer-container"> <!-- 2014-8-17 --> <div id=servername> {if ($servername == "flatpress.world")} {$servername} {/if} </div>
この下から6行分を header.pl の最後に書き加えています。このテンプテート名は、「テンプレート適用場所の調査」で判明させました。
[outer-container]という表示領域があるようです。まだ、真の目的を把握してませんが、試しに表示させることにしました。ヘッダー部と本体部の間になります。
css を書き加える
/fp-interface/themes/leggero/leggero/res/common.css
/*===== FlatPress.World =====*/ #servername { color: #fff; background-color: orange; padding-left: 1em; }
この6行を common.css の最後に書き加えています。
技術的まとめ
- Smarty のテンプレートに任意の文字でも変数でも設置すればそれが表示される。変数であれば、{$servername}のように"{}"で変数名を囲めばよい。
- Smarty のテンプレートでは判定(if)をすることができる。{if 判定文} 実行したいこと {/if}のような書式である。
- Smarty の変数設置は php プログラムで前もっておこなっておく。
- PHP プログラム、テンプレート、css のそれらの役目とディレクトリのどのあたりに、それらが置かれているか把握できた。
実例の画面はこのようです。flatpress.world のURLであった場合には、画面にサーバ名が入ったオレンジの帯が表示されます。
ちなみに、DNS サーバは、www.flatpless.world と flatpress.world のどちらでも同じウェブサーバを示すのが普通なので、判定には二つを含めておくのがよいと思います。
オリジナルのファイルをバックアップしてから作業しましょう。たとえば、unix ならば、cp common.css{,.2014-8-17} とします。