Movable Typeのコンテンツタイプ でデータ登録後にフィールドを追加する

以前に「Movable Typeで記事登録後にカスタムフィールドを追加する時の注意点」という記事を公開しましたが、コンテンツタイプ で同じようなことをする機会があったので、実装を試してみました。

サンプルコード

フィールドを追加しないでコンテンツタイプを用意して、一覧を出力するテンプレートを用意します。

<ul>
<mt:Contents content_type="xxxxx">
  <li>
    <mt:ContentLabel>
  </li>
</mt:Contents>
</ul>

データ識別ラベルを「投稿A」「投稿B」で2件登録します。
この状態で再構築すると、以下のような出力になります。

<ul>
  <li>投稿B</li>
  <li>投稿A</li>
</ul>

コンテンツタイプ にフィールドを追加してみます。

  • 種類:テキスト
  • 名前:追加
  • 初期値:初期値

コンテンツタイプの新規登録を行うと、以下のように初期値が入った状態で追加フィールドが表示されます。

逆に先ほど登録した「投稿A」は、追加フィールドに値が入っていない状態になります。
これは追加フィールドの値がそれまでのコンテンツタイプ のデータに入っていないためです。

この状態で追加したフィールドが出力されるようにテンプレートを修正して、出力を試してみます。

<ul>
<mt:Contents content_type="xxxxx">
  <li>
    <mt:ContentLabel>
    <mt:ContentField content_field="追加">
      <mt:ContentFieldValue>
    </mt:ContentField>
  </li>
</mt:Contents>
</ul>

テンプレート変更後、追加フィールドの値は初期値のままで投稿Cを新しく登録します。

再構築を行うと、後から追加した投稿Cのみ追加フィールドの値が出力されました。

<ul>
  <li>
    投稿C
    初期値
  </li>
  <li>
    投稿B
  </li>
  <li>
    投稿A
  </li>
</ul>

値が入っていない過去のデータを初期値と同じにしたい、あるいは別の値を設定したい場合、MTElseでデータのない場合の設定を行えます。

<ul>
<mt:Contents content_type="xxxxx">
  <li>
    <mt:ContentLabel>
    <mt:ContentField content_field="追加">
      <mt:ContentFieldValue>
    <mt:Else>
      初期値(仮)
    </mt:ContentField>
  </li>
</mt:Contents>
</ul>

これで値のなかった投稿Aと投稿Bにも値が出力されました。

<ul>
  <li>
    投稿C
    初期値
  </li>
  <li>
    投稿B
    初期値(仮)
  </li>
  <li>
    投稿A
    初期値(仮)
  </li>
</ul>
このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930