- 2009年2月23日 18:28
- Last update: May 24, 2016 07:46
- MTカスタマイズ | MTカスタムフィールド


エントリアーカイブで使っているカスタムフィールドの中身を一覧表示させるためのテンプレートを書いてみました。
これまで使ってきたカスタムフィールドがどのような内容だったか忘れてしまったので、控として一覧表示できたらいいのでは、と思ったのでちょっとテンプレートを書いてみました。
参考にしたリンクを入れるフィールドの内容をXML形式にて出力して、Excelなどで読み出して管理してみる、というのを試みました。出力したXMLファイルをExcelで読みこんで操作してる様子は以下のようなものです。

記事エントリー内で使っているカスタムフィールドの内容を出力させるのに、MTEntryCustomFieldsを利用しています。
タグリファレンスをみると大体わかるのですが、比較的簡単なテンプレートで実現できるようでした。
テンプレート
テンプレートは以下のようなものです。
<?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
カスタムフィールド系のテンプレートは以下を参照するとよさようです。
XSLTの xmlns="http://www.w3.org/1999/xhtml"を削除しました。
- Newer: メモ:MTEntryIDでpad=1として桁オーバーしたときの表示は?
- Older: 今月のいらんことしい(2009年2月)
Comments:
コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ
blog comments powered by Disqus