• Home
  • Movable Type
  • テンプレート一覧からテンプレート名、出力ファイル名(アーカイブパス)をカンマ区切りで抜き出す

テンプレート一覧からテンプレート名、出力ファイル名(アーカイブパス)をカンマ区切りで抜き出す

Movable Type のテンプレートの一覧が欲しいと思う事ってありませんか?

僕もごくたまにあるんですけど、そういうときはテンプレート一覧画面からテキストエディタにコピペすることが多いと思います。でもそれって余計なテキストや改行が入ったりして、それを削除するのって結構面倒ですよね・・・

ということで、一発で一覧を抜き出す JavaScript コンソール用のスクリプトを書きました。テンプレート名などをコピペしてた方は、是非このコードをコピペして楽しましょう。

コードは下記のようになります。

このコードの最初の Settings 部分を編集してブラウザのコンソールにコピペしましょう。編集方法は設定する変数の下のコメントを参照してください。

/* ==================================================
 テンプレート一覧からテンプレート名、出力ファイル名(アーカイブパス)をカンマ区切りで抜き出す
================================================== */
(function($){

// === Settings [start] ===
var type = 'index';
 // インデックステンプレートの場合 'index'
 // アーカイブテンプレートの場合 'archive'
 // テンプレートモジュールの場合 'module'

var data = ['template-name', 'output-file'];
 // テンプレート名と出力ファイル名(アーカイブパス)のときは ['template-name', 'output-file']
 // テンプレート名だけのときは ['template-name']
 // 出力ファイル名(アーカイブパス)だけのときは ['output-file']

var delimiter = ',';
 // data で設定した項目の区切り文字

var archivePathDelimiter = ' | ';
 // 1テンプレートに対しアーカイブパスが複数設定されている場合の区切り文字

var finalDelimiter = "\n";
 // 最終的な1テンプレートごとに区切り文字
// === Settings [ end ] ===

var result = [];
if (type === 'module') {
 data = ['template-name'];
}
$('#' + type + '-listing-table tbody tr').each(function(){
 var record = [];
 for (var i = 0, l = data.length; i < l; i++) {
 if (type === 'archive' && data[i] === 'output-file') {
 var li = [];
 $(this).find('td.' + data[i] + ' li').each(function(){
 li.push($(this).text().replace(/>\s+</g, '><').replace(/^\s+|\s+$/g, ''));
 });
 record.push(li.join(archivePathDelimiter));
 }
 else {
 record.push($(this).find('td.' + data[i]).text().replace(/<[^>]+>/g, '').replace(/^\s+|\s+$/g, ''));
 }
 }
 result.push(record.join(delimiter));
});
console.log("\n========== start ==========\n" + result.join(finalDelimiter) + "\n========== end ==========\n");

})(jQuery);
/* END */

例えば、このコードを使って Movable Type のプロフェッショナルウェブサイトのテーマのインデックステンプレートを書き出すと以下のようになります。

========== start ==========
JavaScript,mt.js
RSD,rsd.xml
アーカイブインデックス,archives.html
スタイルシート,styles.css
ブログ用インデックスページ,blogs/index.html
メインページ,index.html
最新記事のフィード,atom.xml
========== start ==========

以上です。