著作権表示の西暦をリアルタイム化する
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クラスセレクタとして利用している場合は、表示に影響する可能性があるのでご注意ください。
- Movable Typeの日付タグフォーマットの西暦を元号で表示する
- WordPressやMovable Typeで作ったサイトを日本語ドメインで運用する
- 「最近のコメント」のページを作る(改)
- 「最近のコメント」のページを作る
- トップページの最新記事に Google Adsense を貼り付ける
- Sitemaps 0.90 用テンプレート(MT4対応)
- Movable Type でブログを複数作成する
- Sitemaps 0.90 用テンプレート(Google・Yahoo!・MSN サポート)
- メール送信ページを作る
- 404 エラーページを作る
- プロフィールのページを作る(3.2-ja~3.35-ja用)
- アーカイブページを作る
- Tag Cloud のページを作る
- Firefox・Netscapeで連続した半角文字を折り返す
- ShrinkFinfo Plugin 0.04公開
≫ MovableType3.2 フッタの西暦表示をリアルタイム化 from おじさんの備忘録
少し前にMovableType3.2にフッタを追加すると言う記事を書いていた際に併せてやっておこうと思っていたカスタマイズです。
このカスタマイズも小粋空... [続きを読む]
≫ フッターの生成と更新を自動化する from blog.quadrifoglio.to
多くのサイト同様、うちでもページの最下部(フッター)にコピーライト表示を行ってい... [続きを読む]
≫ カスタマイズさくさく・前編(テンプレート&プラグイン) from Sky High!
MovableTypeの特徴とくれば、カスタマイズが優れていること。データベースは4種類から選ぶことが出来るし、それにテンプレートデザインも自分で好きなよ... [続きを読む]
≫ 著作権表示の自動化 from Coffee Time
ページ最下部の著作権表示を今年の1月には手作業で書き換えたが、 小粋空間でBlo... [続きを読む]
≫ 著作権表示プラグイン from ミシンデスキップ(時々MOVABLETYPE
著作権表示ができるプラグイン、BlogCopyright Pluginを導入し... [続きを読む]
yujiroさま
そもそもBlogCopyright Pluginなどというものがあるということさえ知りませんでした。
yujiroさんの改造を利用させていただきました。う?ん、便利だなぁ。(^^;)
>GAKUさん
こんばんは。
ご利用ありがとうございます。
こういうの、何気に便利ですね。
こんにちは
このカスタマイズ無精者の私にはぴったりですσ(^_^;)アセアセ...
そっくり流用させていただきました。
ありがとうございます。
>kechaさん
こんばんは。
ご利用&ご連絡ありがとうございました。
ではでは!
yujiro様
お世話になっております。テンプレのところに質問するべきかとも思ったのですが、私みたいにここでダメになっちゃう人もいるかな。。。と思いこちらで質問させていただきます。
こちらのテンプレ(3カラム固定)を使用させていただいているのですが、このコピーライト表示を中央カラムの下線の外側に出すのには、どこへコピーライト表示(フッター)のdivを置いたらよいのでしょうか。
いつも基本的な質問でお手数をおかけしますがよろしくお願いいたします。
>ナタリーさん
こんばんは。
ご質問の件ですが「公開テンプレートにフッタを追加する」が参考になれば幸いです。
それではよろしくお願い致します。
yujiroさん
早速のお返事、ありがとうございました。こうしてリンクを貼っていただくとありがたいです。無事、キレイに設置できました。
それでは、よいお年をお迎えくださいませ。
初めまして。
この記事を拝見し、利用させていただこうと思いリンクをクリックしましたが、BlogCopyright Pluginのページ(サイト)は存在しない模様です。
残念ながら諦めざるを得ませんでした…
>文里さん
下記にコードを載せておきます。
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 ©';
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の動作は未確認です。
それではよろしくお願い致します。
設置してみました。
年を越せば動作状況がわかると思います。
プラグインは機能しているようです。
yujiroさん
このプラグインですがMovableType以外のブログ・・・
WordPressやSerene Bachで利用するのは難しいでしょうか。
MT/WP/SBを管理していてMTで使っていますが便利で('ε')
>寺山 銀さん
こんにちは。
ご連絡ありがとうございました。
無事に動作しているようで良かったです。
>kenさん
こんにちは。
ご返事が前後しましたが、WordPress版は提供できそうです。
それではよろしくお願い致します。
あけましておめでとうございます。
MT4で、無事に機能しています。
とりあえずご報告とご挨拶まで。
>寺山 銀さん
あけましておめでとうございます。
ご連絡ありがとうございました。
ではでは!