著作権表示の西暦をリアルタイム化する

著作権表示の西暦をリアルタイム化する

Posted at December 22,2005 11:58 PM
Tag:[Copyright, Customize, MovableType, Plugin]

Movable Type の著作権表示は、BlogCopyright Plugin を使ったカスタマイズが有名です。このプラグインは登録されている最初のエントリーと最後のエントリーから著作権の西暦を自動生成しますが、再構築した時点の年しか取得できません。つまり年をまたがった場合、再構築が行われるまでは更新されないことになります。

ということで、プラグインを少し修正して、リアルタイムカレンダーのように、リロードを契機に年表示を切り替える方法をご紹介します。日々更新されている方にとっては1年に数分?数時間しか有効にならないという甚だコストパフォーマンスの低い技ですが、年始末にブログを更新できない場合はお勧めです。ある意味、更新頻度が低い方ほど効果大です。

1.著作権表示の意味

カスタマイズの前に、一般的によくみかける

Copyright © 2004 hogehoge All rights reserved. 

を例に、著作権表記の意味を記しておきます。

「Copyright」は著作権があることを意味します。© は「マルシーマーク(英語読みは「サークルシー」)」と読み、同じく著作権があることを意味します。この2つは意味が重複していますが、著作権の扱いが国によって異なるため、より多くの国において保護を受けられるようにという習慣からきているようです。西暦は著作物を公開した最初の年です(ハイフンで現在の年を表示しているのもよくみかけます)。hogehoge は著作権者で、最後の「All rights reserved.」は著作権以外の権利についても保持していることを示すものです。

次に、プラグインの設定方法です。

2.アーカイブのダウンロード

BlogCopyright Pluginより Download BlogCopyright のリンクをクリックしてアーカイブをダウンロードします。

3.プラグインのアップロード

アーカイブを解凍して、中にある BlogCopyright.pl を plugins ディレクトリにアップロードします。アップロード後、メインメニューの「プラグイン」をクリックして、「BlogCopyright.pl」が表示されていればOKです。

4.著作権表示用タグの設定

著作権表示を行いたいテンプレートの編集画面を開き、任意の場所に

<$MTBlogCopyright$>

を記述します。このタグが

Copyright c2004-2005

のような表示に置き換わります。

著作権者を表示する場合、つまり

Copyright c2004-2005 hogehoge

の青色部分を表示するには

<$MTBlogCopyright$> hogehoge

と直接記述する方法もありますが、メインメニューの「プロフィール」→「表示名」に設定していれば、その文字が表示されます。

または

<$MTBlogCopyright owner="hogehoge"$>

と owner 属性を与えます。owner_name に設定した文字が著作権者として表示されます。

「All rights reserved.」はタグまたは著作権者の後ろに直接記述してください。

5.リアルタイム化

4項まででプラグインの通常の動作が行えます。以下はリアルタイムのカスタマイズです。

5.1 プラグインの修正

BlogCopyright.pl を任意のエディタで開き、下記の赤色部分を削除して青色のものに置き換えます。

         :
# Add the years the blog has been up
if($first_year eq $last_year) {
$copyright .=  $first_year . ' ';
$copyright .=  ' <span id="fixyear">' . $first_year . '</span> ';
} else {
$copyright .= $first_year . '-' . $last_year . ' ';
$copyright .= ' <span id="fixyear1">' . $first_year . '</span>-<span id="fixyear2">' .$last_year . '</span> ';
}
         :

5.2 スクリプトの追加

著作権表示用タグを設定しているテンプレートの最後の方(<$MTBlogCopyright$> の後方であればOK)に下記のスクリプトを追加します。

<script type="text/javascript">
<!--
var data = new Date();
var year = data.getYear();
year = (year < 2000) ? year + 1900 : year;
var oldYear;
if(document.getElementById('fixyear')){
    oldYear = document.getElementById('fixyear').innerHTML;
    if(parseInt(oldYear) < parseInt(year)){
        document.getElementById('fixyear').innerHTML = oldYear + "-" + year;
    }
} else if(document.getElementById('fixyear2')) {
    oldYear = document.getElementById('fixyear2').innerHTML;
    if(parseInt(oldYear) < parseInt(year)){
        document.getElementById('fixyear2').innerHTML = year;
    }
}
//-->
</script>

リアルタイム化の仕組みは、5.1項で修正したプラグインで西暦部分に span 要素(id 属性が "fixyear")を付与しています。そして5.2項のスクリプトでその西暦を取得し、サーバから取得した西暦と比較して、サーバの西暦の方が新しければ置き換えるようにしています。またブログに登録されているエントリーが同一年のものしかなく、サーバの西暦が新しい場合は初年と現在年を両方表示します。
JavaScript がOFFの場合は何も処理されません。

6.注意事項

span 要素を他の部分のCSSクラスセレクタとして利用している場合は、表示に影響する可能性があるのでご注意ください。

関連記事
トラックバックURL


トラックバック

MovableType3.2 フッタの西暦表示をリアルタイム化 from おじさんの備忘録
少し前にMovableType3.2にフッタを追加すると言う記事を書いていた際に併せてやっておこうと思っていたカスタマイズです。 このカスタマイズも小粋空... [続きを読む]

Tracked on February 19, 2006 10:11 AM

フッターの生成と更新を自動化する from blog.quadrifoglio.to
多くのサイト同様、うちでもページの最下部(フッター)にコピーライト表示を行ってい... [続きを読む]

Tracked on February 21, 2006 5:10 PM

カスタマイズさくさく・前編(テンプレート&プラグイン) from Sky High!
MovableTypeの特徴とくれば、カスタマイズが優れていること。データベースは4種類から選ぶことが出来るし、それにテンプレートデザインも自分で好きなよ... [続きを読む]

Tracked on March 3, 2006 9:58 PM

著作権表示の自動化 from Coffee Time
ページ最下部の著作権表示を今年の1月には手作業で書き換えたが、 小粋空間でBlo... [続きを読む]

Tracked on March 29, 2006 8:30 PM

著作権表示プラグイン from ミシンデスキップ(時々MOVABLETYPE
著作権表示ができるプラグイン、BlogCopyright Pluginを導入し... [続きを読む]

Tracked on January 26, 2007 7:36 AM

著作権表示 from MY Blog … 思いつかない…
つい先日から著作権表示をつけています。 [続きを読む]

Tracked on December 10, 2007 11:00 PM
コメント

yujiroさま
そもそもBlogCopyright Pluginなどというものがあるということさえ知りませんでした。
yujiroさんの改造を利用させていただきました。う?ん、便利だなぁ。(^^;)

[1] Posted by GAKU : January 12, 2006 4:40 PM

>GAKUさん
こんばんは。
ご利用ありがとうございます。
こういうの、何気に便利ですね。

[2] Posted by yujiro : January 13, 2006 12:59 AM

こんにちは
このカスタマイズ無精者の私にはぴったりですσ(^_^;)アセアセ...
そっくり流用させていただきました。

ありがとうございます。

[3] Posted by kecha : February 18, 2006 7:15 PM

>kechaさん
こんばんは。
ご利用&ご連絡ありがとうございました。
ではでは!

[4] Posted by yujiro : February 19, 2006 12:47 AM

yujiro様

お世話になっております。テンプレのところに質問するべきかとも思ったのですが、私みたいにここでダメになっちゃう人もいるかな。。。と思いこちらで質問させていただきます。

こちらのテンプレ(3カラム固定)を使用させていただいているのですが、このコピーライト表示を中央カラムの下線の外側に出すのには、どこへコピーライト表示(フッター)のdivを置いたらよいのでしょうか。

いつも基本的な質問でお手数をおかけしますがよろしくお願いいたします。

[5] Posted by ナタリー : December 22, 2006 6:45 PM

>ナタリーさん
こんばんは。
ご質問の件ですが「公開テンプレートにフッタを追加する」が参考になれば幸いです。
それではよろしくお願い致します。

[6] Posted by yujiro : December 23, 2006 1:31 AM

yujiroさん

早速のお返事、ありがとうございました。こうしてリンクを貼っていただくとありがたいです。無事、キレイに設置できました。

それでは、よいお年をお迎えくださいませ。

[7] Posted by ナタリー : December 23, 2006 6:07 AM

初めまして。

この記事を拝見し、利用させていただこうと思いリンクをクリックしましたが、BlogCopyright Pluginのページ(サイト)は存在しない模様です。

残念ながら諦めざるを得ませんでした…

[8] Posted by 文里 logo : December 2, 2007 7:04 PM

>文里さん
下記にコードを載せておきます。
BlogCopyright.pl というファイル名で保存してください。

package MT::Plugins::BlogCopyright;
use MT::Template::Context;
MT::Template::Context->add_tag(BlogCopyright => \&blogCopyright);
sub blogCopyright
{
    my $ctx = shift;
    my $args = shift;
    my $blog = $ctx->stash('blog');
    my $first_entry = MT::Entry->load( {blog_id => $blog->id},
                       {sort => 'created_on',
                    direction => 'ascend',
                    limit => 1} );
    my $last_entry = MT::Entry->load( {blog_id => $blog->id},
                      {sort => 'created_on',
                       direction => 'descend',
                       limit => 1} );
    my $copyright = 'Copyright &copy;';
    my $first_year = substr($first_entry->created_on, 0, 4);
    my $last_year  = substr($last_entry->created_on, 0, 4);
    # Add the years the blog has been up
    if($first_year eq $last_year) {
#    $copyright .=  $first_year . ' ';
    $copyright .= ' ' . $first_year . ' ';
    } else {
#    $copyright .= $first_year . '-' . $last_year . ' ';
    $copyright .= ' ' . $first_year . '-' .$last_year . ' ';
    }
    # Add who the copyright is attributed to
    my $copyright_owner = $args->{owner};
    my $entry = $ctx->stash('entry');
    if(defined($copyright_owner)) {
    # The name was specified, use that
    return $copyright . $copyright_owner;
    } elsif(defined($entry)) {
    # This is used within the context of an entry, use that entry's author
    return $copyright . $entry->author()->nickname;
    } else {
    # Just use the author of the most recent blog entry
    return $copyright . $last_entry->author()->nickname;
    }
}

MT4の動作は未確認です。
それではよろしくお願い致します。

[9] Posted by yujiro logo : December 4, 2007 1:55 AM

設置してみました。
年を越せば動作状況がわかると思います。
プラグインは機能しているようです。

[10] Posted by 寺山 銀 : December 9, 2007 2:53 PM

yujiroさん

このプラグインですがMovableType以外のブログ・・・
WordPressやSerene Bachで利用するのは難しいでしょうか。

MT/WP/SBを管理していてMTで使っていますが便利で('ε')

[11] Posted by ken : December 9, 2007 6:15 PM

>寺山 銀さん
こんにちは。
ご連絡ありがとうございました。
無事に動作しているようで良かったです。

>kenさん
こんにちは。
ご返事が前後しましたが、WordPress版は提供できそうです。
それではよろしくお願い致します。

[12] Posted by yujiro logo : December 12, 2007 2:09 PM

あけましておめでとうございます。
MT4で、無事に機能しています。
とりあえずご報告とご挨拶まで。

[13] Posted by 寺山 銀 logo : January 3, 2008 9:26 PM

>寺山 銀さん
あけましておめでとうございます。
ご連絡ありがとうございました。
ではでは!

[14] Posted by yujiro logo : January 5, 2008 2:17 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)