フッター等のcopyrightの年号を、
PHP・JavaScript・SSIを使って自動更新する方法
毎年毎年、年があけて1月に入るとフッターのcopyrightの年を更新しなければ…と手作業で更新していたりしませんか?
1サイトや2サイトなどの少数であれば問題ありませんが、Webサイトの制作や管理の委託を受けていて管理サイトの数が多くなればなるほど、年号を更新するのもひと手間であり面倒になります。
何より年始で頭もまだ働いてない時期に作業する事もあったりでミスにも繋がりやすいため、せっかくなのでこういったものは自動更新をさせておくに越した事はありません。
ただ自動更新するといっても、実際に主なやり方としては3パターンあり、そのサイトがどういうサイトの作りかどうかで使える方法が変わってきますので、それぞれ見ておきましょう。
PHPを使って自動更新
今のサイトの多くはWordPressで作られる事も多いかと思います。
WordPressであればPHPが使えますので、下記の構文を記載することで、年号が自動更新されていきます。
<?php echo date("Y"); ?>
表示したい箇所にこう書くだけで、年が変われば自動的に年も変わります。
厳密にはサーバーの時間設定に左右される
phpは、サーバーサイドで機能するものになりますので、このコードを書いた場合、年号はサーバーの時間設定に左右されることになります。
とはいえ、通常のサーバーであれば何か特殊なケースでない限りは今の時間と変わらないのでほとんどのケースで問題無く動作していますし、実際に自分もWordPressで作るサイトなどのフッターに記載する年号はこの記載でまかなっています。
開始年も入れたい場合は組み合わせて
例えば古くから運営しているサイトなどの場合、copyrightに開始年を入れたいというケースもあるかと思いますが、その場合は、合わせて組み込めば問題なく動作します。
2010-<?php echo date("Y"); ?>
実際にWordPressなどで使う場合は、
© <?php echo date("Y"); ?> <?php bloginfo('name') ?> All Rights Reserved.
といったように、コピーライトマーク+年号+サイト名+All Rights Reserved. という使い方が多いのではないでしょうか。
JavaScriptを使って自動更新する方法
PHPサイトでない場合、JavaScriptを使って自動更新する方法もあります。
<script>
document.write(new Date().getFullYear());
</script>
こう書く事で、PHPの時と同じように自動更新されます。
厳密にはクライアントサイドで機能するためユーザーの時間設定に左右される
JavaScriptはPHPと違って、クライアントサイドで機能するものになるため、ユーザーの時間設定に左右されるものになります。
とはいえ、これも同じように時間設定を特殊な時間に設定している人はほとんどいないかと思いますので、特に問題なく動作することがほとんどです。
クライアントサイド機能のため、ソースには表示されない
JavaScriptはクライアントサイドで機能するものになるため、ブラウザ上で見た場合はその年の年号が表示されますが、厳密なソースコード表示などをした場合は、JavaScriptの構文がそのまま表示されることになります。
SEOに携わった経験のある人の場合、ソース上に正常に表示されないのを嫌う傾向があるかもしれませんが、copyrightの表記で影響がでるはずはないのですが、その点だけ知っておきましょう。
静的なHTMLファイルで作られたページなどや、ランディングページなど、PHPで作られていないケースではこのJavaScriptを使った構文で対処するというケースも多いかと思います。
SSIを使って自動更新する方法
意外とこのSSIを知らないという方は多いのですが、SSI=Server Side Includeと呼ばれるもので、意外と便利な機能だったりして、HTMLファイルを外部ファイル化して共通で呼び出したりなどもできますし、ファイルの最終更新日を表示するといったことなどもできるものになります。
このSSIの機能を使うことで、copyrightの年号の自動更新も行う事ができます。
SSIを使うための準備
SSIは少し特殊になり、まず前提条件が色々とあります。
サーバーが許可してるかどうか
としてサーバーがSSIを使える設定にしてくれている必要性があります。ここでSSIが使えない仕様だと、そもそも不可になりますので確認しておきましょう。
とはいえ、今の一般的なサーバー会社では、SSIはPHPなどと同じく使えますよと書いてるところがほとんどのため、よほどの事がない限りは使えるのではないかと思います。
.htaccessにHTMLファイルで使えるように記載する
SSIというのは、厳密に言えば、「.shtml」という拡張子で使われます。
そのため、SSIを使う場合、.shtmlとする必要があるのですが、今の世の中、shtmlで構成されているサイトというのは皆無に等しい状況です。
そのため、SSIをHTMLで使えるようにするために、.htaccessに下記の記述が必要になります。
Options +Includes
AddHandler server-parsed html
簡単に説明すると、
1行目に記載しているOptions +Includes
は、SSIを有効にして使えるようにする記述になり、2行目に記載しているAddHandler server-parsed html
が、SSIをHTMLファイルでも使えるようにするための記述になります。
実際のSSIを使った自動更新の書き方
<!--#config timefmt="%Y" -->
<!--#echo var="DATE_LOCAL" -->
こう記載することで、自動更新されます。
SSIはソース上も実行後のものが表示される
JavaScriptでは、ブラウザの見た目上は年号が変わりますが、ソースコードで見た場合は、scriptの構文がそのまま表示されてしまいましたが、SSIの場合は、ソース上でも実行後の年号が表示されるようになります。
外部から見た場合、「2018」と表示されていたとしても、JavaScriptであればソースを見れば自動更新だなとわかりますが、SSIの場合はソースを見ても同じ「2018」の表示のため、一見では手動か自動かがわかりません。
SSIは他にも同じように最終更新日や、外部ファイルの呼び出しなども対応できるので使い勝手が非常に優れています。
HTMLなど静的ファイルで構築されたものも対応できる
また、SSIを使えばJavaScriptと同じように静的なHTMLファイルでも対応することができます。
HTMLだけではこういった自動的なものはできませんが、SSIをうまく活用していくことで、手作業で行わなければならない処理などを効率化していくことができます。
また、ソースコード上でも実行後の結果が表示されますので、SEO的な方で細かいところを気にされる人たちからも何も言われずに済むというメリットもあります。
それぞれ、PHP、JavaScript、SSIを使った実際のデモサイトを作ってみたので下記より確認いただけます。ソースコードを見て実行されてるかなども合わせて見てみるとより違いがわかりやすいかもしれません。
まとめ
copyrightの自動更新についてまとめてみました。
PHP、JavaScript、SSI、それぞれに使い勝手の良さ・悪さなどもありますので、それぞれ自分のサイトでどれを使うのが良いかをやっていってみましょう。
あくまでも個人的な感覚にはなりますが、WordPressなどPHPを使っていれば、PHPをそのまま使い、静的ファイルで作成されているサイトはSSIを、SSIが使えない場合はJavaScriptを使う。という形で自分は対応しています。
記事のシェアにご協力お願いします