使ってるカスタムフィールドの内容を出力してみた

エントリアーカイブで使っているカスタムフィールドの中身を一覧表示させるためのテンプレートを書いてみました。

これまで使ってきたカスタムフィールドがどのような内容だったか忘れてしまったので、控として一覧表示できたらいいのでは、と思ったのでちょっとテンプレートを書いてみました。

参考にしたリンクを入れるフィールドの内容をXML形式にて出力して、Excelなどで読み出して管理してみる、というのを試みました。出力したXMLファイルをExcelで読みこんで操作してる様子は以下のようなものです。

カスタムフィールド一覧をExcelで開く

記事エントリー内で使っているカスタムフィールドの内容を出力させるのに、を利用しています。

タグリファレンスをみると大体わかるのですが、比較的簡単なテンプレートで実現できるようでした。

テンプレート

テンプレートは以下のようなものです。

<?xml version="1.0" encoding="UTF-8"?>
<fields>
<$MTEntries lastn="20" sort_order="ascend"$><$MTEntryCustomFields exclude="test field,test2">$><mt:if tag="CustomFieldValue">
<items>
        <Title><$mt:EntryTitle encode_xml="1" remove_html="1"$></Title>
        <link><$mt:EntryPermalink encode_xml="1"$></link>
        <CustomFieldValue><![CDATA[<$MTCustomFieldValue$>]]></CustomFieldValue>
</items></mt:if></MTEntryCustomFields>
</MTEntries>
</fields>

EntryCustomFieldsのタグリファレンスをみると、一部のフィールドだけを除きたい場合は、exclude モディファイアをとあります。上の例は、「test」,「test field」,「test2」という3つのカスタムフィールドがあり、「test」という名前のフィールドのみをブログ記事の古い順から20記事のうちから抽出しますというテンプレートです。簡単なXSLTテンプレートも作ってみました。スタイルはセンスがないのでアレですが。

一部、ミスリードの可能性があるので追記しておきます。特定のカスタムフィールドの内容を出力したいときは、EntryCustomFieldsタグでなく、提供されたカスタムフィールド用タグを使います。このことはタグリファレンスにも明記されています。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

<xsl:output
 method="html"
 media-type="text/html"
 omit-xml-declaration="yes"
 doctype-public="-//W3C//DTD HTML 4.01//EN"
 doctype-system="http://www.w3.org/TR/html4/strict.dtd"
 indent="yes"
/>
<xsl:template match="/">
<html lang="ja">
<head>
<title>Custom Fields</title>
<style type="text/css">
#MAIN{padding : 0 20px;}
table{ border-spacing:0; border: 2px solid #0e0;} 
th{background:#333;color:#FFF;}
td{border:1px dotted #0e0;background:#F1EFE2;}
</style>
</head>
<body>
<div id="MAIN">
<table border="1" cellspacing="0">
<tbody>
<tr><th>EntryTITLE</th><th>PermaLINK</th><th>Value</th></tr>
<xsl:apply-templates select="fields/items" />
</tbody>
</table>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="fields/items">
<tr>
<td>
<xsl:value-of select="Title" />
</td>
<td>
<a href="{link}"><xsl:value-of select="link" /></a>
</td>
<td>
<xsl:value-of select="CustomFieldValue" />
</td>
</tr>
</xsl:template>
</xsl:stylesheet>

これらのテンプレートをまとめたものを置いておきます。

download

My_Custom_fields.zip

カスタムフィールド系のテンプレートは以下を参照するとよさようです。

XSLTの xmlns="http://www.w3.org/1999/xhtml"を削除しました。

Comments:

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

blog comments powered by Disqus