PowerCMS X ブログ
2025-12-18
PowerCMS X には管理画面のカスタマイズ機能があり、任意の JavaScript やテンプレートタグを挿入することで動的な機能を追加することが可能です。
今回は例として、オブジェクト編集画面の日付入力欄に現在の日付・時刻をセットする方法をご紹介します。
オブジェクトの新規作成時に日付入力欄に対して現在の日付・時刻をセットします。
実装イメージ
対象のモデル編集画面で以下のカラムを作成します。
| 名前 | event_date | 任意の値 |
|---|---|---|
| ラベル | イベント開催日時 | 任意の値 |
| タイプ | 日付と時刻 | |
| 編集表示 | 日付と時刻 |
管理画面をカスタマイズする手段は前述のようにいくつかありますが、今回はカスタマイズテンプレート(alt-tmpl)を使用したカスタマイズを行います。
CMS サーバ上の alt-tmpl 用のディレクトリに以下のファイルを設置します。
alt-tmpl/include/edit/モデル名/form_footer.tmpl
例えば記事の編集画面に適用したい場合は「モデル名」は「entry」となります。
ファイルの内容は以下のように記述します。
<mt:unless name="request.id">
<script>
document.addEventListener('DOMContentLoaded', function () {
const now = new Date();
const dateInput = document.getElementById('event_date_date');
const timeInput = document.getElementById('event_date_time');
// 日付(未入力の場合のみ)
if (!dateInput.value) {
const yyyy = now.getFullYear();
const mm = String(now.getMonth() + 1).padStart(2, '0');
const dd = String(now.getDate()).padStart(2, '0');
dateInput.value = `${yyyy}-${mm}-${dd}`;
}
// 時刻(未入力の場合のみ)
if (!timeInput.value) {
const hh = String(now.getHours()).padStart(2, '0');
const mi = String(now.getMinutes()).padStart(2, '0');
const ss = String(now.getSeconds()).padStart(2, '0');
timeInput.value = `${hh}:${mi}:${ss}`;
}
});
</script>
</mt:unless>
オブジェクトの新規作成時は id が存在しないため、<mt:unless name="request.id"> を記述することで新規作成時だけこの JavaScript が適用されます。
document.getElementById('event_date_date')、document.getElementById('event_date_time') は手順1.で指定したカラムの「名前」を元に「_date」「_time」を付与したものとなります。
カテゴリー:サイト制作全般
投稿者:fujimoto