linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

copyrightの年表示はMTタグ? PHP? javascript?[追記:5/26 20:45]

090525.gif

みなさん、こんにちは、まーしーです

websiteを作られてる方だと、(c) 2008-2009 hogehoge.inc.,All rights reserved.とかそういう文言入れたりしますよね。
この一行自体がどういう意味をもつのか?とか、なにに基づいて書かれるのか?どのように書くのか?というところも考えるべき所なのですが、
今日はそのあたりの話はおいておいて、この年数表示のところを自動表示する方法を考えてみたいと思います。

考えてみたい、というよりMTでサイトを構築する際に考える機会があったのでそのメモです。
(なので話の前提にはMTがあると思ってください。)
以下のサンプルはとりあえず動いたというレベルで、もっとスマートな書き方があるはずですし皆さんの方がご存じかと思いますので そのあたりを頭の片隅にいれて読んでいただければと思います。使う際は自己責任でお願いします。

年に一回更新するところだけど、年に一回だと、確実に忘れちゃうよね?年末年始に仕事とかしたくないよね?だったら年越しと同時に自動でやってほしいよね?と思う人は考えてみる必要があるかもしれないですね。

MTタグを使用する方法

ソース例

<mt:setvar name="startyear" value="2008" />
<mt:date format="%Y" setvar="thisyear" />
<mt:if name="thisyear" gt="$startyear">
(c) <mt:getvar name="startyear"> - <mt:getvar name="thisyear"> hogehoge,Inc.
<mt:else>
(c) <mt:getvar name="thisyear"> hogehoge,Inc.  
</mt:if>

こんなモジュールがフッターのモジュールに読み込まれてるような感じでしょうか?
もうすこしまとめるとしたら年数表記のみをmt:getvarでだせるようにmt:setvarblockの中でやったほうがいいのかな、くらいでしょうか。

この後で紹介する方法全てそうですが、1年だけかどうか?という判定が必ず必要になりますね。

メリット

  • MTがわかってれば、PHP,JavaScriptでかくよりも簡単(なきがする)

デメリット

  • 作り方によっては年に一度サイト全体の再構築が必要(cronとかありますが)
  • 埋め込まれたページが再構築された日を返すんだよなぁ??

PHPを使用する方法

ソース例

<?php
function copyright($startyear){
$thisyear = date("Y");
if( $thisyear > $startyear){
print "$startyear - $thisyear";
}else{
print "$startyear";
};
}
?>
(C)<?php copyright(2009);?> hogehoge,Inc.

引数をうまくつかう、という方法を試したかっただけ、というのも半分くらいあるのですが・・・

メリット

  • 一度導入されれば手を加えなくてもよい

デメリット

  • サーバーでPHPが使えないといけない

JavaScriptを使用する

ソース例

<script type="text/javascript">
function copyright(startyear){
var thisyear = new Date();
if(thisyear.getFullYear() > startyear){
document.write( startyear + " - " + thisyear.getFullYear() );
}else{
document.write(startyear);
}
}
</script>
(C)<script type="text/javascript">copyright(2009);</script> hogehoge.Inc.

PHPにあわせて引数で、というのをやったらそもそも引数どう使うのかわかってない、という事実に直面してすごくしんどかった。
JavaScriptが全然わかってないです。。。
returnってのをうまく使いこなせるようになった方がいい気がしました。

メリット

  • PCに絞って考えると、おおむねどの環境でも見ることができそう

デメリット

  • JavaScriptがOffだと表示されない
  • 見た目に年数が出るけれども、ソース上に年数が表示されないのは問題にならないか?

まとめ

あげてみるとこんな感じですね。
ほんとメモ書きになってしまいました。

個人的にはPHPが使えればPHPを使った方法が一番いいのかな?とか思ったりもするのですが、
MTを使ってるとPerlでうごくページも少しありますよね?
そこでの代替手段を用意しておかないといけない、というのが少し気になります。
まぁ、代替手段はJavaScriptを使った方法でも用意しておかないといけないので、これが正解、というのははかる物差しによって変わってくるはずです。

ちなみに今回この3通りの方法を試してみたところ、紹介した順に書きやすかったです。
JavaScriptはしっかりやりたいなぁとおもいながら惰性で勉強している(つもりの)レベルなので、
もっとちゃんと理解した上で使いこなせるようにならないとですね。

おまけ

最初にも書いたように、このcopyrightを記載する云々の話が自分のなかですごくあいまいになってるなぁ、
と今回考えながら気づいたのです。
そもそもこの年数って何をあらわしてるの?
サイトができたときから今まで?その会社なりの継続期間? 継続期間という考えだと変だよな。
う〜ん。
ということで、これはちゃんと調べよう!と思いました。
(残念だけど、6月になったら)

追記しました:5月26日 20時45分

小林さんにコメントをいただいたのでサイトを参考にいくつか見てみました。

マークを表記する際は、"©マーク"と"最初の発表年""著作権者名"の3要素が必要です。
「©」マークとは何でしょう? | クリエイティブ・タブロイド withD(ウィズ・ディー)
http://withd.jp/dtp/trend/030303/4103.html?page=2

表記としては発表年のみっぽいですね。法的な力というよりも慣習的にという感じに捉えられているようです。
だとしたら表示させる方法はもっと簡単にできますね〜

「簡単に〜」とか書いたんですが、そもそも発表年のみであれば、自動で取得する必要がないのか。そもそも。
websiteでかんがえると、このページは今つくってるからこのページに表記されるものは2009かもしれない。
来年の記事のページは2010かもしれないんだよな〜。
来年の時点で考えるとサイト全体として考えれば2009かもしれないし、ページ単体でみれば 2010ってことか。

本とかであれば執筆してる時点というよりも、世に出たタイミングという明確なものがあるんだろうけど。
本でいうところの改訂とかがwebsiteにちかいのかな〜???