« rpm , yum の使い方を覚えておく | メイン | 中国の大手検索エンジンBaidu.com(百度)からのアクセスの対処をする »

MovableTypeのJavaScriptによるテンプレートのモジュール化を実験してみる



Fenrir's BLog: テンプレート共通化とJavaScriptによる軽量化を参考にして、今後エントリーが増えてきた時のためJavaScriptによるテンプレート共通化を実験してみる。PHP化によるモジュール化を試みたのだけれどなんか難しそうだったのでjavascriptにしてみた。

方針としては、以下のようにしてあります。
(1)共通の部分は新たにテンプレートを作り、JavaScriptの外部ファイル(いわゆる拡張子がjsのファイル)として吐き出すようにする。このファイルの中にはJavaScriptの関数が記載されている。
(2)記事のテンプレート(Main IndexやIndividual Archiveなど)では、(1)で作成された外部JavaScriptファイルを読み込み、その中に書いてあるJavaScript関数を実行するだけにする。
Fenrir's BLogより

MovableTypeの編集画面で、「テンプレート」の「インデックス」タブにおいて「テンプレートを新規作成 」

「テンプレート名」→部品JS
「出力ファル名」→myModule.js
「このテンプレートにリンクするファイル」→空欄

として、
function getRecentEntry(){
var html = '<div class="module-archives module">';
html += '<h2 class="module-header">最近のエントリー</h2>';
html += '<div class="module-content">';
html += '<ul class="module-list">';
<MTEntries lastn="10">
html += '<li class="module-list-item">';
html += '<a href="<$MTEntryPermalink$>">';
html += '<$MTEntryTitle$>'.substr(0, 20);
html += '</a></li>';
</MTEntries>
html += '</ul>';
html += '<a href="<$MTBlogURL$>atom.xml">';
html += 'このブログのフィードを取得';
html += '</a><br />';
html += '[<a href="http://www.sixapart.jp/about/feeds">フィードとは</a>]';
html += '</div>';
html += '</div>';
return html;
}

と入力し、「保存と再構築」を押下。このルーチンはこのブログの「最近のエントリー」の部分です。
繰り返し部分の「<MTEntries lastn="10">」「</MTEntries>」は構築しても文字列を吐き出さないからjavascriptから外すんだ!なるほど。

「メインページ」テンプレートのヘッダ部分に、

<script language="javascript" type="text/javascript" src="<$MTBlogURL$>myModule.js"></script>
を記述し、今までの「最近のエントリー」の部分に
<!-- 最近のエントリー -->
<script language="javascript" type="text/javascript">
<!--
document.write(getRecentEntry());
//-->
</script>
と記述。
これで再構築すると、何事も無かったように正しく表示されます。
ついでに、タイトルバナー部分も
function getTitle(){
var html = '<div id="banner">';
html += '<div id="banner-inner" class="pkg">';
html += '<h1 id="banner-header">';
html += '<a href="<$MTBlogURL$>" accesskey="1">';
html += '<$MTBlogName encode_html="1"$>';
html += '</a></h1>';
html += '<h2 id="banner-description">';
html += '<$MTBlogDescription$>';
html += '</h2>';
html += '</div>';
html += '</div>';
return html;
}
として記述。メインページ、アーカイブページともに、
<!-- タイトルバナー -->
<script language="javascript" type="text/javascript">
<!--
document.write(getTitle());
//-->
</script>

として記述し再構築。これで全てのエントリーに於てタイトル部分をいちいち構築する必要が無くなった。
カテゴリー、月別アーカイブの関数も作ってみよう。

でもここまでモジュール化の理解が進むとPHPによるモジュール化でもよかったんでないか?とも思う。まぁいいやのりかかったふねだ。

参考URL:
CROSSBREED クロスブリード!
Project MultiBurst
小粋空間


トラックバック

このエントリーのトラックバックURL:
http://www.duelsisters.com/cgi-bin/mt/mt-tb.cgi/21

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年02月04日 03:30に投稿されたエントリーのページです。

ひとつ前の投稿は「rpm , yum の使い方を覚えておく」です。

次の投稿は「中国の大手検索エンジンBaidu.com(百度)からのアクセスの対処をする」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

スポンサードリンク

人気blogランキングへ