よくある質問

入力欄が表示されない、行を追加したい、ハンドルを変更したい、といったよくあるご質問への回答をまとめました。

コンテンツデータ編集画面に入力欄が表示されません

もっとも多い原因は、MTAppjQuery がインストールされていない、または無効になっていることです。スケジュールの入力 UI は MTAppjQuery が提供する mtapp.scheduleField() で描画されるため、MTAppjQuery が動作していない環境では入力欄が表示されません(エラーメッセージも表示されません)。

システムツールプラグイン で、MTAppjQuery(v3.1.0 以上)が有効になっていることをご確認ください。

MTAppjQuery が有効な場合は、次の点をご確認ください。

  • コンテンツタイプ側の「入力項目」が 1 件も設定されていない(列が無いため表が表示されません)
  • 入力項目の「オプション」欄が空欄、または選択肢が重複している(次の質問をご覧ください)
  • mt-static/plugins/ScheduleField/dist/schedule.js が配置されていない
  • ブラウザに古い JavaScript がキャッシュされている(スーパーリロードをお試しください)

カレンダーが表示されず、ブラウザのコンソールにエラーが表示されます

コンテンツデータ編集画面でカレンダー全体、または日付ごとの表が表示されず、ブラウザの開発者ツールのコンソールに次のいずれかのエラーが表示される場合は、入力項目の「オプション」欄(選択肢)の設定が原因です。

Uncaught TypeError: Cannot read properties of null (reading 'split')
Uncaught Error: https://svelte.dev/e/each_key_duplicate

タイプが「ドロップダウン」「チェックボックス」「ラジオボタン」の入力項目で、次のどちらかに当てはまると発生します。

  • 「オプション」欄が空欄になっている(1 つ目のエラー)
  • 同じ選択肢が重複して入力されている(例:1,2,2。2 つ目のエラー)

コンテンツタイプ編集画面では、該当の項目は「オプション」欄が空欄に見えるだけで、エラーは表示されません。次の手順で設定を修正してください。

  1. コンテンツタイプの編集画面で、スケジュールフィールドの「入力項目」を表示する
  2. タイプが「ドロップダウン」「チェックボックス」「ラジオボタン」の行で、「オプション」欄が空欄になっていないか、選択肢が重複していないかを確認する
  3. 選択肢をカンマ区切りで、重複のないように入力する
  4. コンテンツタイプを保存し、コンテンツデータ編集画面を開き直す

コンテンツタイプの設定を変更しても、入力済みのスケジュールのデータは変わりません。

カレンダーが表示されない状態のまま、既存のコンテンツデータを保存しないでください。 画面上に保存用の入力欄が作られていないため、スケジュールフィールドの値が空の状態で上書きされるおそれがあります。

コンテンツタイプを保存すると「入力項目」が消えます

ScheduleField v1.3.0 / v1.3.1 を Movable Type 9 の標準状態で使用した場合に発生する不具合です。v1.3.2 で修正済みです。「v1.3.2 へのアップデート」をご覧ください。

好きな行数の表を入力したいのですが

スケジュールフィールドは、選択した月の日数分の行を自動生成する仕様です。行を任意に追加・削除することはできません。

日付に紐づかない任意の行数の表を入力したい場合は、MTAppjQuery の mtapp.multiField() をご検討ください。

ハンドルに日本語は使えますか

使用できません。半角の英数字とアンダースコア(_)のみです。それ以外の文字は入力時に自動的に削除されます。

ハンドルを変更したら、入力済みのデータが表示されなくなりました

データは JSON のキーとしてハンドル名で保存されているため、ハンドルを変更すると以前のデータは表示されなくなります。元のハンドル名に戻すと、再び表示されます。

元のハンドル名がわからない場合は、コンテンツデータ編集画面の「データを表示」で保存されている JSON のキー名をご確認ください。

月を切り替えたら入力内容が消えました

日数が少ない月に切り替えると、超過した日付の行(31 日目など)のデータは破棄されます。切り替え前の状態には戻せません。保存前に内容をご確認ください。

1 つのフィールドで複数の月を管理できますか

できません。スケジュールフィールドが保存するのは 1 つの年月分のデータです。月ごとにコンテンツデータを分けるか、扱う月の数だけスケジュールフィールドを追加してください。

データラベルにスケジュールフィールドを指定できますか

指定できません。データラベルには単一行テキストなどのフィールドをご利用ください。

コンテンツデータ一覧に列として表示できますか

表示できません。入力内容を確認するには、コンテンツデータの編集画面を開いてください。

「必須」に設定しても未入力エラーになりません

スケジュールフィールドは、入力画面を開いた時点で年月と日付行を含む JSON を保存します。そのため値が空にならず、未入力としては検出されません。入力漏れを判定したい場合は、テンプレート側で各項目の値を確認してください。

テンプレートで JSON をそのまま出力したい

<mt:ContentFieldValue /> をそのまま書くと、保存されている JSON 文字列が出力されます。JavaScript に渡す場合は encode_js="1" を付けてください。

MTAppjQuery のライセンスがないと使えませんか

ScheduleField は MTAppjQuery のオプションプラグインです。ご利用には MTAppjQuery の有効なライセンスが必要で、ライセンスをお持ちの方は追加費用なしでご利用いただけます。

Movable Type 8 でも使えますか

ScheduleField v1.3.x は、Movable Type 8 系の Riot 方式のコンテンツタイプ編集画面にも対応しています。ただし v1.3.2 の動作確認は Movable Type 9.0.8 で実施しています。