Copyrightの年を自動で更新する
サイトの一番下に書かれている著作権表示。
当サイトでも
Copyright (C) 2014-2015 MODXでWebサイトを作る All Rights Reserved.
と表記しています。
この年の表示の「2014」は最初の発行の年で、「-2015」は最終更新日を表示しています。
最終更新日を年が変わる度に変更するのは面倒なので、スニペットを使って自動で変更させたいと思います。
[エレメント]>[エレメント管理]>[スニペット]>[スニペットの作成]の順にクリックします。
[スニペット名]に コピーライト期間 と入力
[スニペットコード]に以下をコピペ
$where = "`published`='1' AND `hidemenu`='0'";
$result = '';
$res = $modx->db->select('min(publishedon) as minDate,max(editedon) as max', 'site_content', $where, 'publishedon ASC');
$cnt = $modx->db->getRecordCount($res);
if($cnt == 1){
$row = $modx->db->getRow($res);
$minDate = date("Y",$row['minDate']);
$maxDate = date("Y",$row['maxDate']);
if($minDate == $maxDate){
$result = $minDate;
}else{
$result = $minDate."-".$maxDate;
}
}
return $result;
コピペしたら、[更新]をクリックします。
テンプレートのCopyrightの部分に
Copyright (C) [[コピーライト期間]] [(site_name)] All Rights Reserved.
と入力します。
スニペットコードの解説
記事はMODXのデータベースの[xxx_site_content]というテーブルに保存されています。
(xxxはMODXインストール時のTableプレフィックス)
[xxx_site_content]のテーブルから公開日時の最小値(最初の発行の年)と最大値(最終公開日)を取得します。
$where = "`published`='1' AND `hidemenu`='0'";
の行は、[公開ステータス]がオン(`published`='1')で[メニューに表示]がオフ(`hidemenu`='0')の抽出条件を設定します。
$result = '';
の行は、レコード数が1件もない時のために、結果用変数resultに''を入れておきます。
$res = $modx->db->select('min(publishedon) as minDate,max(editedon) as max', 'site_content', $where, 'publishedon ASC');
の行はSQL文です。
$cnt = $modx->db->getRecordCount($res);
の行は、取得されたレコード数を変数cntに代入します。
if($cnt == 1){
$row = $modx->db->getRow($res);
$minDate = date("Y",$row['minDate']);
$maxDate = date("Y",$row['maxDate']);
if($minDate == $maxDate){
$result = $minDate;
}else{
$result = $minDate."-".$maxDate;
}
}
の行は、
レコード数が1件の場合
・最小値の年と最大値の年が同じであれば結果用変数resultに「最小値の年」を代入
・そうでない場合は結果用変数resultに「最小値の年-最大値の年」を代入
レコード数が1件でない場合はなにもしません という意味です。
return $result;
の行で結果を返します。
補足
wikipediaを見てみるとコピーライトの表示は
- ©(丸の中にC、丸C、マルシー)の記号 (symbol ©)
- 著作権者の氏名
- 最初の発行の年
だけで良いようです。
年の部分も「2014-2015」とする必要はなく、「2014」だけでいいんですね。
本来は
© 2014 ringo
でいいみたいですよ。 (注:「ringo」とは当サイトの管理人です♪)
ちなみに「©」をhtmlで書く時は、「©」と書きます。