movabletype.jp
検索

カスタムフィールドの動作と制限事項

カスタムフィールド設定時の制限事項

入力項目によっては、入力した文字列が255文字を上回っているとエラーにならずに、データベースに欠落した情報が書き込まれてしまいます。値を入力する際は気をつけて下さい。

  1. 名前に255文字以上入力できますが、255文字でカットされます。
  2. 既定値に255文字以上入力できますが、カスタムフィールドの種類によっては255文字でカットされます。
  3. ベースネームに半角255文字以上入力できますが、サニタイズされた上で半角255文字でカットされます。

    サニタイズとは、セキュリティを脅かす可能性があるコード(HTMLその他)を削除し、無害化します。

  4. テンプレートタグに半角255文字以上入力できますが、半角255文字でカットされます。
  5. ドロップダウンの場合。
    • カスタムフィールドの設定画面で、ドロップダウンの各項目をコンマ区切りで列挙する事で設定します。
    • 1つの項目あたり255文字以上設定でき、ブログ記事画面などで指定も出来ます。
    • 当該のデータを指定し保存後、ドロップダウンメニューは指定した値をセレクトした状態にならず、1行目の値が表示されます。
    • データベースには1行目の値ではなく、指定した全角255文字以上の行の値を、255文字にカットされた状態で格納されます。
    • この状態でMTタグで指定した値を表示する事は可能ですが、推奨できる動作ではありませんので、1項目の長さは255文字以内として下さい。
  6. ラジオボタンの場合。
    • カスタムフィールドの設定画面で、ラジオボタンの各項目はコンマ区切りで列挙する事で設定します。
    • 1つの項目あたり255文字以上設定でき、ブログ記事画面などで指定も出来ます。
    • 当該のデータを指定し保存後、ラジオボタンは何も指定していない状態になります。
    • データベースには指定した値を255文字にカットされた状態で格納されます。
    • この状態でMTタグで指定した値を表示する事は可能ですが、推奨できる動作ではありませんので、1項目の長さは255文字以内としてください。

投稿時の動作

設定時と同様、「テキスト」と「URL」はデータ入力時に文字列が255文字を上回っていると、エラーにならずにデータベースに欠落した情報が書き込まれてしまいます。値を入力する際は気をつけて下さい。

  • テキストは255文字以上記入できますが、255文字でカットされます。
  • URLは255文字以上記入できますが255文字でカットされます。URLとして正しくない場合はエラーになります。
  • 日付と時刻は"2010-01-01 12:00:00"(秒は省略可)の形式で、日時として正しい値を入力しないとエラーになります。(エラー例:"2010-02-31 25:80:70")

カスタムフィールドとカテゴリの紐付けの制限事項

  • カテゴリがどのカスタムフィールドで表示される設定になっているかを、カスタムフィールドのIDのコンマ区切りで保存しています。カスタムフィールドが多くなり255文字を超えた場合、正しくデータが保持できなくなります。

    フィールドID 15, 27, 30, 33 でカテゴリが指定されている場合のデータ例です。フィールドIDによるソートなどは行われません。

    15,33,27,30   <=(ID2文字+カンマ1文字)× 3 + (ID2文字)= 半角11文字
    
  • カスタムフィールドのIDが全て2桁だった場合、85個まで正しく紐付け情報を保持できます。
    (ID2文字+カンマ1文字)× 84 + (ID2文字)= 半角254文字
    
  • カスタムフィールドのIDが全て3桁だった場合、64個まで正しく紐付け情報を保持できます。
    (ID3文字+カンマ1文字)× 63 + (ID3文字)= 半角255文字
    

テーマのエクスポートに関する制限事項

  • カスタムフィールドを設定済みのテーマをエクスポートした場合、そのテーマを使ってサイトやブログを作成すると、カスタムフィールドの表示順序が変わってしまいます。

MySQLのLatin1など、UTF8を考慮しないデータベースを利用している時

  • UTF8を考慮しないデータベースや文字コードを利用している場合、UTF8の全角1文字をデータベース内の半角3文字(3byte)として扱います。
    • UTF8を考慮する場合の半角1文字  = データベース内の1文字
    • UTF8を考慮する場合の全角1文字  = データベース内の1文字
    • UTF8を考慮しない場合の半角1文字 = データベース内の1文字
    • UTF8を考慮しない場合の全角1文字 = データベース内の3文字
  • この理由により、Movable Type内でデータ型を255文字と指定していた場合、以下の挙動となります。
    • UTF8を考慮するデータベースの場合は、全角半角混じりで255文字利用できます。
    • UTF8を考慮しないデータベースの場合は、半角だけなら255文字、全角だけなら85文字利用できるという事になります。
  • 全角255文字を利用したい場合は、下記ドキュメントを参考にデータベースをUTF8に設定して下さい。(MS SQL Server 2008 で ダイナミックパブリッシング を利用する場合、制限により文字コードをShift_JISにする必要があります。)
  • UTF8を考慮しないデータベースの場合、「255文字」と書かれている部分全てを「85文字~255文字(255byte)」と読み替えて下さい。
Updated on 2016-03-01, 02:07 .

関連ページ