ウェブサイトを運営しているとこんな要望が出てくることもあると思います。
]]> チェックボックスのカスタムフィールドを記事に追加し、テンプレートを編集して一覧が書き出されるようにし、最後にチェックありにする記事にチェックを入れて保存すれば一覧が表示されます...が。記事の一覧を表示するテンプレート例
チェックありの記事 <ul> <mt:Entries field:entry_checkbox="1"> <li><$mt:EntryTitle$></li> </mt:Entries> </ul>チェックなしの記事
<ul>
<mt:Entries field:entry_checkbox="0">
<li><$mt:EntryTitle$></li>
</mt:Entries>
</ul>
これで完了...と思いきや、これではチェックなしの記事の一覧は表示されません。
カスタムフィールドの作成より先に作成してある記事については、チェックありの場合は記事の編集画面を開いてチェックを入れて更新をしますが、チェックなしの記事については何もしないので、チェックなし="0"ということが認識できません。
チェックなしの記事も編集画面を開いて「更新」をクリックすれば「チェックなし="0"」として認識させることはできますが、記事が100件あるなどの場合、1件ずつ開いて「更新」をするというのは現実ではありません。
そこで <mt:Entries field:entry_checkbox="0">
の「チェックがなかったら=変数の値が"0"だったら」という条件を、「変数の値が"1"じゃなかったら」という条件にしてテンプレートを作成します。
チェックなしの記事 <ul> <mt:Entries> <mt:CustomFieldValue identifier="entry_checkbox" setvar="entry_checkbox"> <mt:Unless name="entry_checkbox" eq="1"> <li> <$mt:EntryTitle$> </li> </mt:Unless> </mt:Entries> </ul>
これでチェックの「ない」記事の一覧を表示できます。
]]>ブログAの記事にブログBの記事に登録されているカスタムフィールドの内容を表示させたいので、ブログAの記事の編集画面でブログBのブログID、エントリーID、該当のカスタムフィールドの識別子を指定できるようにする。
]]> ブログAに「システムオブジェクト:記事」でブログBの情報を設定できるカスタムフィールドを3つ(ブログID、エントリーID、該当のカスタムフィールドの識別子)作成する。ブログAの記事アーカイブテンプレートには、ブログBの記事データを表示させたいところに下記のように記述する。
//カスタムフィールドの値を変数にする <mt:Customfieldvalue identifier="blogid" setvar="blogid"> <mt:Customfieldvalue identifier="entryid" setvar="entryid"> <mt:Customfieldvalue identifier="cfidentifier" setvar="cfidentifier">//カスタムフィールドの内容を書き出すテンプレート
<mt:Entries include_blogs="$blogid" id="$entryid">
<mt:Customfieldvalue identifier="$cfidentifier">
</mt:Entries>
最初の3行でブログAの記事に設定したカスタムフィールドの値を変数にする。
残りの3行はブログBの内容が書き出されるようにブログID、エントリーID、カスタムフィールドの識別子を設定した MT:Entries タグとなるように、モディファイアにそれぞれ変数に設定された値が代入されるようにする。
記事の編集画面に作成したカスタムフィールドの入力欄が表示されます。
必要に応じてブログIDなどを入力し、記事を作成します。
これでブログAの記事に設定したブログBのカスタムフィールドの内容が表示されます。
※サンプルコードはHTMLのマークアップ等は省略してあります。必要に応じて入力の有無による条件分岐で出力のコントロールが必要な場合があります。
]]>