お知らせ

WordPressで学ぶPHPとMySQL2009年9月23日

WordPressで学ぶPHPとMySQL」を発売しました。
「WordPressをカスタマイズしたいけど、PHPやMySQLが分からなくて躓いている」という方のための、PHPとMySQLの入門書です。
WordPressでWeb製作をされている方などにお勧めです。
PDFによる販売で、当サイトでのみ購入できます(書店では購入できません)

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

Ajaxでファイルを組み込むプラグイン(その1)

| コメント(4) | トラックバック(0)

Movable Typeの弱点は、再構築の処理に時間がかかることです。
再構築の処理を軽減するために、ブログの各ページをPHPとして出力し、各ページの共通部分を1つのファイルにまとめて、PHPのincludeを利用する、という手法がよく使われています。
ただ、この方法は、PHPが使えない環境や、PHPが使えないページ(検索結果のページなど)では動作しないという弱点があります。

PHPを使う代わりに、Ajaxで共通部分を読み込む方法もあります。
その際に便利な「AjaxInclude」というプラグインを公開します。

1.プラグインのインストール

AjaxIncludeプラグインは、以下からダウンロードすることができます。

AjaxInclude_1_00.zip

ダウンロードしたファイルを解凍すると、「plugins」と「mt-static」のフォルダができます。
これらのフォルダを、Movable Typeのインストール先ディレクトリにアップロードします。

2.MTAjaxIncludeJSタグの追加

まず、「ヘッダー」のテンプレートモジュールで、「</head>」のタグの直前に、以下のテンプレートタグを追加します。

<$MTAjaxIncludeJS$>

このタグにより、prototype.jsの組み込みと、AjaxIncludeプラグインのJavaScriptライブラリが組み込まれます。

3.MTAjaxIncludeタグの追加

次に、テンプレート内で、Ajaxでファイルを読み込みたい位置に、以下のようなテンプレートタグを追加します。

<MTAjaxInclude id="読込先のID">読み込むファイルのURL</MTAjaxInclude>

このタグの出力は、以下のようになります。
Ajaxで読み込んだ内容が、div要素の内部に挿入されます。

<div id="読込先のID"></div>
<script type="text/javascript">
Ajaxの処理を行うためのJavaScript
</script>

例えば、「somefile」というIDのdiv要素を出力し、ブログのディレクトリにある「somefile.html」というファイルを、そのdiv要素に挿入したいとします。
この場合は、以下のようにタグを書きます。

<MTAjaxInclude id="somefile"><$MTBlogURL$>somefile.html</MTAjaxInclude>

4.制限

Ajaxでは、読み込み先のページと、読み込むファイルとが、同じホスト(※)のアドレスになっている必要があります。

※ホスト
http://www.○○○.com/~等のアドレスで、「www.○○○.com」等の部分。

例えば、読み込み先のページのアドレスが「http://www.foo.com/index.html」で、読み込むファイルのアドレスが「http://www.foo.com/file.html」だとします。
この場合、どちらもホストは「www.foo.com」なので、Ajaxが問題なく動作します。

一方、読み込み先のページのアドレスが「http://blog.foo.com/index.html」で、読み込むファイルのアドレスが「http://www.foo.com/file.html」だとします。
この場合、ホストは「blog.foo.com」と「www.foo.com」で異なりますので、Ajaxは動作しません。

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1246.

コメント(スレッド2件,コメント4件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 s.fujino : prototype.js ですが

いつもお世話になってます。
私のところでは、小粋空間さんの「Ajax月送りカレンダー」のために、prototype.js(version 1.5.1.1)を<$MTBlogURL$>に置いてあるのですが、上の解説のままインストールして大丈夫でしょうか。(テストしないでお聞きしてすみません。)

No.4  : Re:prototype.js ですが

>s.fujinoさん
こんにちは。

prototype.jsをすでに組み込んでいるのであれば、<MTAjaxIncludeJS>タグは不要です。

No.2 aiko_m : 有難うございます

素晴らしいプラグイン有難うございました。

さままで古い個別記事になると、サイドバーに新しいコメントが表示されず困っていましたが、これで全ての記事がトップページと同じになります。
ただ一点、読み込ませたHTMLに記述されているJavaScriptが全く機能しないのですが、コツがあるのでしょうか?。


s.fujinoさん、初めまして。
私も小粋空間さんのカレンダーを使わせていただいていますが、気がつかずにそのままインストールしてしまいました。
現状は上記のようにNewを表示するJavaScript(読み込み先にも記述しましたが)が動作しないだけで、サイドメニューは期待した通りになっています。

ご参考までにJavaScriptが動作しないサイドバー。
http://surak.private.coocan.jp/aiko/blogarchives/2008/03/post-234.html

動作しているサイドバー(Ajaxでファイルを組み込むプラグイン 導入前)
http://surak.private.coocan.jp/aiko/blogarchives/2008/03/movabletype4-6.html

念のためブログはアダルト色が強いですので、その点はご理解下さい。

No.5  : Re:有難うございます

>aiko_mさん
こんにちは。

組み込むファイルにJavaScriptが含まれている場合、そのままではそのJavaScriptは動作しません。
JavaScriptを動作させる方法は、後日解説します。

コメントする