カスタムフィールドを配信する(?)

記事に設定したカスタムフィールドもあわせてフィードに配信する方法を考えてみました

自分のところに検索された語から何かを読み取って勝手に回答してしまうエントリです。ということで今回はMovable Typeのカスタムフィールドネタをします。

ここで以前、カスタムフィールドに書いたものはフィード配信にならないという内容の記事を書きました。

今回はその逆ですね。フィードのテンプレートを少しカスタマイズすると恐らくいけるのかとおもいます。

フィードにカスタムフィールドの内容を反映させる(案)

まずカスタムフィールドを作成します。ありきたりですが、ここでは「関連記事」というカスタムフィールドを作り、複数行テキストにて、関連記事へのリンクを示すというものを作ったと仮定して説明してみます。

例として以下のようなカスタムフィールドを出力するコードをフィードのテンプレートに埋めてみます。

このフィールドはcf_relatedentryというテンプレートタグ名とし、出力させるコードは以下のようなものとします。

<mt:If tag="cf_relatedentry">
        <div id="related" class="relatedEntry">
          <dl>
          <dt><b>関連記事</b>:</dt>
               <dd><mt:cf_relatedentry></dd>
          </dl>
        </div>
</mt:If>

テンプレート編集で「最新記事のフィード」(Atomフィード)を編集します。

content要素の内容で、mt:EntryMoreタグの下に追加します。

Atomフィードにカスタムフィードを反映(1)

カスタムフィールドの内容をCDATAセクションにします。

ただ、この方法ですと、mt:EntryBodyタグにある、encode_xmlオプションのために、CDATA区間が2箇所できることになります(*環境変数でNoCDATAを使用してない場合です)。このことが原因で正しく表示できないフィードリーダーがもしかしたらあるかもしれないです。

これがキモいというときは、encode_xmlを使わずに直接CDATA区間を指定する方法を使ってみます。

Atomフィードにカスタムフィードを反映(2)

なお、確認は簡単なテスト記事にてIE7のフィードプレビューでしか(Firefoxだと、summary要素の内容がでてしまうので)おこなっていません。実際の運用のところまでは一寸自信がありませんのでその点はご承知おきいただけたらと思います。

Comments:

コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ

blog comments powered by Disqus