Movable Type コミュニティソリューション(MTCS)概要
先日の「Movable Type 4.2 リリース候補第3版公開」でお伝えしていました、Movable Type コミュニティソリューション(MTCS)の概要です。
誤解をおそれずに言えば、MTCS は、提供されているコミュニティソリューション用のテンプレートセットを使用することで、グループブログや掲示板機能の基本的な利用が可能になるものです。

それに伴い、4.2の出荷が延期されたようです。
シックス・アパートが、Movable Typeにコミュニティ・ソリューションを無償でバンドル
「Movable Type 4」プラットフォームにソーシャル・メディア機能を追加するオプション・ソフトウェア「Movable Type コミュニティ・ソリューション(MTCS)」を、「Movable Type」本体に無償でバンドルし、最新版の「Movable Type 4.2」から統合した形で提供することを発表いたします。 これにともない、現在実施中のベータテスト期間を当初の予定より延長し、MTCSをバンドルした「Movable Type 4.2」を2008年7月中に出荷開始する予定です。
1.コミュニティブログ
グループで投稿ができるブログです。ブログ記事に対する投票機能(スターアイコンをクリックして投票)がデフォルトで用意されています。ブログの[設定]-[コミュニティの設定]から、匿名による投票の許可も可能です。

外部ユーザーもブログ記事投稿者としてのサインアップが可能なようです。なお、サインアップを有効にするために、システム管理者による権限の設定が別途必要です。

こんな感じでサインアップします。

登録メールアドレスに確認用のメールが送信されます。

2.コミュニティ掲示板
フォーラムとトピックによる掲示板です。フォーラムはカテゴリ機能を利用し、トピックはブログ記事を利用しています。先程と同様、サインアップが可能です。

トピックの投稿時にフォーラムを選択することで、トピックをフォーラムごとにまとめることができます。

作成した最新トピックは、フォーラム単位でサイドバーに表示されます。

3.その他
はてなブックマークの被ブックマーク数 10000 突破
当ブログでの、はてなブックマークの被ブックマーク数が 10000 突破してました。

最近はあまりチェックできていないのですが、人気エントリーなどがなくても、日に10件~20件の被ブックマークを頂いてました。ブックマークくださった皆様、ありがとうございます。
ということで、これまでの人気エントリー・ベスト50を並べておきます。
- Movable Type プラグイン一覧 565 users
- Movable Type を始める前に設定しておきたい 10 の項目 507 users
- Internet Explorer 6 と Internet Explorer 7 を共存させる 328 users
- CSSで画像に影をつける(ドロップシャドウ) 318 users
- Movable Type が WordPress に負けた本当の理由 247 users
- Windows XP で外付けデバイスを簡単に取り外す 247 users
- Windows XP のバックアップ機能 225 users
- RSS Feed(フィード)を表示する 200 users
- Movable Type プラグイン一覧(MT4対応) 195 users
- Amazon アソシエイト作成支援ツール一覧 182 users
- Firefox 1.5 と Firefox 2.0 を共存させる 167 users
- Lightbox JS で画像を表示する 122 users
- サイドメニューの折りたたみ(v5.0:ゆっくり折りたたむ)102 users
- Highslide JS でサムネイル画像を拡大表示する 100 users
- IE7 の CSS ハック 98 users
- Google マップの貼り付け用 HTML を valid にする 86 users
- JavaScript で文字をトリミングする76 users
- ボタン・バナー・アイコン作成・配布サイト一覧 76 users
- XHTML タグ一覧表示ツール 75 users
- Tag Cloud のページを作る 70 users
- MySQL phpMyAdmin によるバックアップ 69 users
- Movable Type 3.3 エントリー・タグ詳説 63 users
- CSS JavaScript によるカラムレイアウト切り替え 62 users
- Movable Type テンプレート 61 users
- Firefox・Netscapeで連続した半角文字を折り返す 57 users
- MTOSリリースと日本語化手順 52 users
- ブログツール比較(Movable Type / Serene Bach / WordPress) 47 users
- Lightbox JS でブログパーツ等の Flash を PNG 背景画像の下に隠す 47 users
- Movable Type 3 から Movable Type 4 へのアップグレード方法 46 users
- feed meter「ランキング Top 300」で一番多く使われているブログは何か? 45 users
- CSS の after 擬似要素で回り込みを解除する 45 users
- YouTube の Embed タグを XHTML valid にする 45 users
- CSSでブログに影をつける(ドロップシャドウ) 45 users
- Movable Type 4 のテンプレート構造 44 users
- HTTP/1.1 の「条件付きGET」を利用して PHP ファイルのサーバ負荷を削減する 44 users
- Web2.0 Logo Creator (URL変更) 44 users
- Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その1:概要) 44 users
- リアルタイムに XHTML の文法やアクセシビリティを検証できる Firefox 機能拡張「Html Validator」 42 users
- Movable Type のエントリー削除でHTMLファイルも自動的に削除する 42 users
- Firefox2 と Firefox3(ベータ版)の共存 39 users
- 勝間和代さんが選んだ良書・50冊 39 users
- Movable Type 4.1 カスタムフィールドの使用方法 38 users
- Movable Type 3.3 追加タグ一覧 36 users
- .htaccess によるリダイレクト 36 users
- RSS フィードをブログに表示する(サービス利用編) 35 users
- Litebox 1.0 をブログに適用する 35 users
- 小粋空間:カスタマイズについて 35 users
- 標準準拠モードと後方互換モード・DOCTYPE宣言について - IEでドロップシャドウ画像に枠を表示する 34 users
- アフィリエイト収入の確定申告をする 33 users
- Movable Type 4 にアップグレードするメリット 31 users
Movable Type 4.2 リリース候補第3版公開
Movable Type 4.2 リリース候補第3版が公開されました。
リリース候補第3版では、コミュニティソリューション(MTCS)が追加されました。これについては追ってエントリーしたいと思います。

細かいところでは、コメント返信用テンプレートタグ名が、MTCommentReplyLink から MTCommentReplyToLink に変更されています。
書籍を紹介します
本ブログで、献本による書籍の紹介を致します。
通常であれば「書評」と書くのですが、深く掘り下げて評価するほどのスキルはないと思っているので、「こういう本が発売されました」という、書籍の概要と、内容の簡単な紹介を致します。場合によっては読了してからの投稿になりますので、公開時期が遅れる可能性があります。
書籍のジャンルは何でもかまいません。今のところ、コンピュータ関連書籍やインターネット関連のものを想定しています。新刊・既刊は問いませんが、Amazonや他のオンラインショッピングなどで購入可能なものに限ります。
基本的に献本頂いたすべての本を紹介するつもりですが、書籍の内容によっては個人的な判断で紹介を見合わせて頂く場合があります。
送付先については「Contact」のページからお問い合わせください。
グーグルに勝つ広告モデル
既存メディアのビジネスモデルや、インターネットの活用方法を具体的に提示した書籍です。
![]() | グーグルに勝つ広告モデル (光文社新書 349) 岡本一郎 光文社 2008-05-16 売り上げランキング : 620 Amazonで詳しく見る by G-Tools |
これまでの類似書籍は、テレビ・新聞・雑誌・ラジオといったマスメディアのビジネスモデルの危機を主張するものが多い中、この本ではどちらかと言えばマスメディア側の立場で、今後のあるべき姿を冷静かつ具体的に述べています。
分析の切り口が他書と異なっており、非常に興味深く読むことができました。
2008年5月20日初版で、私が購入したのはすでに2刷になっていたので、結構売れているようです。
Movable Type でメールマガジンを作る(メールアドレスの解除)
昨日の「Movable Type でメールマガジンを作る」の続きで、ユーザーが登録したメールアドレスを、ユーザーが解除する方法を紹介します。
メールアドレスの解除方法は過去のマニュアルにも掲載されていませんが、機能は提供されています。
1.メールアドレス解除フォームの作成
次のようなメールアドレス解除フォーム用のテンプレートモジュール(またはウィジェット)を作成します。このサブテンプレートはブログのサイドバーに掲載するのではなく、ウェブページで解除専用のページを作成し、メールマガジンの本文から解除フォームがあるページへ誘導を促した方が良いでしょう。
<form method="post" action="<$MTCGIPath$>mt-add-notify.cgi">
<input type="hidden" name="__mode" value="unsubscribe" />
<input name="email" size="20" />
<input type="submit" value="delete" />
</form>
input 要素についてはそのまま使用してください。
2.メールアドレスの解除
ブログ閲覧ユーザは、表示されたフォームに登録したメールアドレスを入力します。「delete」をクリックすると、「登録したメールアドレスの登録を解除しました。」というメッセージが表示されます。
3.注意点
解除フォームではブログのID番号をパラメータとして引き継ぎません。
Movable Type でメールマガジンを作る
昨日の「Movable Type 4.2 でアドレス帳機能を利用する」の続きで、ブログ管理者が手動でアドレス帳にメールアドレスを登録するのではなく、ブログにアドレス登録用のフォームを掲載し、外部のユーザーが登録したメールアドレスをアドレス帳に登録する方法を紹介します。

この機能と「Movable Type 4.2 でアドレス帳機能を利用する」を組み合わせれば、Movable Typeを利用してメールマガジンのようなものを構築できそうです(タイトルはちょっと言い過ぎです)。
本エントリーではメールアドレス登録までの流れを紹介します。この機能を利用するには、事前に次の作業を行ってください。
- システムメニュー「全般」のメールアドレスを設定する
- アドレス帳機能を有効にする
1.メールアドレス登録フォームの作成
次のようなメールアドレス登録フォーム用のテンプレートモジュール(またはウィジェット)を作成します。
<form method="post" action="<$MTCGIPath$>mt-add-notify.cgi">
<input type="hidden" name="blog_id" value="<$MTBlogID$>" />
<input type="hidden" name="_redirect" value="<$MTBlogURL$>" />
<input name="email" size="20" />
<input type="submit" value="add" />
</form>
mt-add-notify.cgi がアドレス帳追加用のCGIです。他の input 要素についてはそのまま使用してください。
2.メールアドレスの登録
ブログ閲覧ユーザは、表示されたフォームからメールアドレスを登録します。「add」をクリックすると、「登録したメールアドレスにメールを送信しました。メールアドレスを認証するため、メールの内容に従って登録を完了してください。」というメッセージが表示されます。
登録ユーザーが、送信されたメールに掲載されたURLをクリックすれば、アドレス帳への追加が完了します。逆に、クリックをしないと登録は完了しないので、スパム攻撃を防ぐことができます。
3.メールマガジンを送る
送信方法は「Movable Type 4.2 でアドレス帳機能を利用する」を参照してください。
メールマガジンの送信時に使われるテンプレートは、システムテンプレートの「ブログ記事の共有」です。このテンプレートをカスタマイズすれば、好きなフォーマットで送信できます。
メールマガジン本文は、ブログ記事本文の内容をそのまま利用すると良いでしょう。
なお、ブログ記事の「テキストフォーマット」の指定は適用されません。メールで送信する際は、プレーンテキストで送られます。
4.その他
以前のバージョン(~3.3)では環境変数EmailVerificationSecretの設定が必要でしたが、Movable Type 4では環境変数自体が削除されています。
Movable Type 4.2 でアドレス帳機能を利用する
Movable Type 4.1 まで表示されていた「アドレス帳」が、Movable Type 4.2 では表示されなくなっています。
下は 4.1 のブログ管理画面です。[設定]メニューに[アドレス帳]があります。

下は 4.2 のブログ管理画面です。[設定]メニューに[アドレス帳]はありません。他のメニューにも表示されません。

アドレス帳機能が落とされたかと思ったのですが、mt-config.cgi に、次の環境変数 EnableAddressBook を設定(値を1)すれば、アドレス帳機能を有効にすることができます。
EnableAddressBook 1
mt-config.cgi に設定後、管理画面にアクセスすれば、「一覧」メニューにアドレス帳が表示されます。

ちなみに「アドレス帳機能」とは、指定したメールアドレスにブログ記事を投稿をお知らせする機能で、ブログ記事のタイトルやリンク、あるいはブログ記事の概要や本文にメッセージを加えて送信することができます。
アドレス帳にメールアドレスやURLを追加すると、アドレス帳一覧画面でこのように表示されます。

ブログ記事投稿後に「共有」のリンクをクリックします。

送信画面が表示されます。アドレス帳に登録済のメールアドレスがあれば、ひとつずつメールアドレスを設定せずに、一括送信することができます。

カウンタ復旧に向けてのお願い
ブログの右下に表示しているカウンタが、いつの間にか壊れました。具体的には、ある時点でカウンタの値がクリアされてしまって、570万ぐらいだった値が、現在、32600 ほどに下がってしまっています。

それで、このブログのご利用の方にお願いですが、最近ご覧になったカウンタの値で「何日前にたしかこのくらいの数字だった」という記憶がありましたら、このエントリーにコメントを頂けないでしょうか。
実は、ここ数週間、自分のブログもほとんど見ることができないため、最近のカウンタの値について全く記憶にない状態です。
ご連絡いただければ、教えてもらった値と、現在のカウンタ値+αくらいでカウンタを復旧させようと思っています。
皆様のご協力をお待ち申し上げます。
Movable Type 4 セキュリティアップデートの提供開始
Movable Type 4.x ユーザーへのセキュリティアップデートが開始されました。
重要 : Movable Type 4 セキュリティアップデートの提供を開始
Movable Type 4.x ユーザーにとって必須のセキュリティアップデートである、Movable Type 4.12 、および Movable Type Enterprise 4.12、Movable Type Community Solution 4.03 をリリースします。
このアップデートは、Movable Typeのブログ検索機能におけるクロスサイト・スクリプティング (悪意あるユーザーが許可なしに javascript を実行する) を修正するもので、対象となるバージョン向けのアップデートを無償で提供します。
なお、差分のファイル一覧が、CHEEBOWさんのサイトで公開されています。
Movable Type 4.2 の Ajax 検索機能
Movable Type 4.2 の検索機能ではページ分割が導入されました。

検索結果が複数のページに跨る場合(=ページ分割された場合)は、Google マップのスクロールのように、次の検索結果ページを Ajax で事前に取得します。
その結果、分割ページに移動するときは、ストレスのないページ送りができるようになっています。瞬時に前後ページに移動できるので、かなり快適です。
ただし、初回の検索は Ajax ではありません。
本エントリーでは、検索結果ページで使われている JavaScript をかなり簡単に紹介します。
1.getResults
MTIfMoreResultsタグで、検索結果がページ分割されている場合にこのコードがページに展開され、現在の検索結果の表示中にバックグラウンドで Ajax を起動し、次のページの検索結果を取得・保持します。
<MTIgnore>Below Javascript adds ajax search capability</MTIgnore>
<script type="text/javascript">
/* <![CDATA[ */
<MTIfMoreResults>
function getResults(page) {
page = parseInt(page);
if (timer) window.clearTimeout(timer);
var xh = mtGetXmlHttp();
if (!xh) return false;
var res = results[page];
if (!res) return;
var url = res['next_url'];
if (!url) return;
xh.open('GET', url + '&format=js', true);
xh.onreadystatechange = function() {
if ( xh.readyState == 4 ) {
if ( xh.status && ( xh.status != 200 ) ) {
// error - ignore
} else {
try {
var page_results = eval("(" + xh.responseText + ")");
if ( page_results['error'] == null )
results[page + 1] = page_results['result'];
} catch (e) {
}
}
}
};
xh.send(null);
}
...中略...
</MTIfMoreResults>
/* ]]> */
</script>
この関数は、検索結果ページに埋め込まれた次のスクリプトで実行されます。
<MTIgnore><!-- Used with the ajax search capability of the new search class --></MTIgnore>
<MTIfMoreResults>
<script type="text/javascript">
<!--
var div = document.getElementById('search-results');
var results = {
'<MTCurrentPage>': {
'content': div.innerHTML,
'next_url': '<MTNextLink>'
}
};
var timer = window.setTimeout("getResults(" + <MTCurrentPage> + ")", 1*1000);
//-->
</script>
</MTIfMoreResults>
次のページのURLは、getResults の内部処理で JSON 型の変数 results の next_url にアクセスし、MTNextLinkタグで展開された URL を取得します。
getResults は、周期処理を行うための window.setTimeout で起動され、getResults の内部処理の window.clearTimeout で周期処理を停止します。つまり1回しか起動されません。また、1秒周期で実行するため、検索結果が表示されてからすぐにリンクをクリックすると、Ajax による次のページ取得が完了していない場合があります。
2.swapContent
検索結果本文を、保持している前後の検索結果と置き換えます。
<script type="text/javascript">
/* <![CDATA[ */
<MTIfMoreResults>
...中略...
function swapContent(direction) {
if ( direction == undefined ) direction = 1;
var page_span = document.getElementById('current-page');
if (!page_span) return true;
var next_page = direction + parseInt(page_span.innerHTML);
var res = results[next_page];
if (!res) return true;
var content = res['content'];
if (!content) return true;
var div = document.getElementById('search-results');
if (!div) return true;
div.innerHTML = content;
timer = window.setTimeout("getResults(" + next_page + ")", 1*1000);
window.scroll(0, 0);
return false;
}
<MTElse><MTIfPreviousResults>
function swapContent(direction) {
return true;
}</MTIfPreviousResults>
</MTIfMoreResults>
/* ]]> */
</script>
この関数は、検索結果ページに埋め込まれたページ移動用のナビゲーションの「前」「次」のリンクから実行されます。
<MTIgnore><!-- Used with the ajax search capability of the new search class --></MTIgnore>
<div class="content-nav">
<MTIfPreviousResults>
<a href="<MTPreviousLink>" rel="prev" onclick="return swapContent(-1);">< 前</a>
</MTIfPreviousResults>
<MTPagerBlock>
<MTIfCurrentPage>
<MTVar name="__value__">
<MTElse>
<a href="<MTPagerLink>"><MTVar name="__value__"></a>
</MTIfCurrentPage>
<mt:unless name="__last__"> </mt:unless>
</MTPagerBlock>
<MTIfMoreResults> <a href="<MTNextLink>" rel="next" onclick="return swapContent();">次 ></a>
</MTIfMoreResults>
なお、Ajax によるページ移動は「前」「次」のリンクを使った場合のみ有効で、ページ番号のリンクをクリックしたときは通常のCGI起動になります。
3.注意事項
ページ分割時の Ajax を有効に活用するには、次の青色の1行が必要です。
...前略...
<MTSearchResults>
<MTSearchResultsHeader>
<div id="search-results">
<span id="current-page" class="hidden"><MTCurrentPage></span>
<h1 id="page-title" class="search-results-header">
...後略...
関数 swapContent の内部処理で、現在のページ番号をここから取得しています。
ブログチャート
世の中は FireFox 3 のリリースで盛り上がってますが、それはさておき、AMNとマイネット・ジャパンの連携による、「ブログチャート」が公開されました。
AMNとマイネット・ジャパンが連携し「ブログチャート」を公開
AMNとさくらインターネットが共同で運営しているブログラボ上の第二弾のサービスとして、ブログの特徴や影響力を分かりやすく解析できるサービスである「ブログチャート(blogchart.jp)」を本日公開いたしました。
ブログチャートのトップページにある入力フィールドに、ブログURLを入力することで、ブログの影響力レベルやレーダーチャートを調べることができます。
また、影響力レベルを元にしたブログの総合的な影響力トップ300リストを確認したり、最近影響力レベルが急上昇したブログのリストをチェックすることが可能です。
私のブログは110位あたりをうろうろしています。
FolderLink プラグイン
Movable Type 4 で、ウェブページのフォルダリンクを出力するプラグインを作りました。

フォルダ名に対応するパス(URL)を再帰的に出力します。空のフォルダでも無条件に出力するので、各フォルダには index.html があることが前提です。
上の画面は、「IBM ThinkPad」という製品情報のウェブページが属する、「製品情報」「コンピュータ」「ノートPC」という、階層化されたフォルダを表示した例です。
このプラグインは次の記事を参考にさせて頂きました。ありがとうございました。
1.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
2.インストール
プラグインアーカイブを解凍し、中にある FolderLink.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.使用方法
冒頭のパンくずリストは、ウェブページアーカイブに次のようなサブテンプレートを貼り付けています。
<a href="<$MTBlogURL$>">ホーム</a> >
<MTParentFolders>
<a href="<$MTFolderLink$>"><$MTFolderLabel$></a> >
</MTParentFolders>
<$MTPageTitle$>
手を加えれば、もう少しエレガントなサブテンプレートにできます。
Movable Type 4.2 RC2 モジュールキャッシュ実測
藤本さんの記事に触発されて、Movable Type 4.2 RC2 のモジュールキャッシュを試してみました。
私の場合は、「小粋空間」の昨日までのデータを Movable Type 4.2 RC2 にインポートしました。
0.ブログのテストデータと動作環境
- ブログ記事数:2131件
- コメント:13364件
- トラックバック:4481
- カテゴリ:179
- 月数:56ヶ月
- サーバ:さくらインターネット(スタンダード)
- データベース:MySQL
- テンプレート:既定のブログ(キャッシュの設定以外はカスタマイズなし)
- スタティックパブリッシング
以下、ブログ記事アーカイブのみの再構築時間の実測値(再構築画面に表示された時間)です。結構時間がかかったので、それぞれ1回ずつしか試していません。
追記:「1回ずつ」というのは、モジュールキャッシュした後の話です。したがって実際には再構築は2回ずつ行っています。
1.モジュールキャッシュなし
再構築時間:1時間51分
2.モジュールキャッシュあり(ケース1)
以下の項目をモジュールキャッシュ(keyモディファイアあり)
- ブログ記事本文(タイトル・本文・追記をモジュール化してキャッシュ)
- コメント(「コメント」テンプレートモジュールをキャッシュ)
- トラックバック(「トラックバック」テンプレートモジュールをキャッシュ)
再構築時間:1時間43分
3.モジュールキャッシュあり(ケース2)
以下の項目をモジュールキャッシュ(keyモディファイアなし)
- 月別アーカイブ一覧
- 最近のブログ記事
- 最近のコメント
再構築時間:1時間33分
4.モジュールキャッシュあり(ケース3)
以下の項目をモジュールキャッシュ(keyモディファイアなし)
- カテゴリ一覧
- 月別アーカイブ一覧
- 最近のブログ記事
- 最近のコメント
再構築時間:9分50秒
5.モジュールキャッシュあり(ケース4)
以下の項目をモジュールキャッシュ(ケース1 + ケース3)
- ブログ記事本文
- コメント
- トラックバック
- カテゴリ一覧
- 月別アーカイブ一覧
- 最近のブログ記事
- 最近のコメント
再構築時間:8分51秒
6.所感
テストデータが一種類なのと組み合わせが適当なので、結論とはいえませんが、とりあえず感じたところを。
- ブログ記事単位のモジュールキャッシュ(本文・コメント・トラックバック)は意外にも大差なし。
- カテゴリアーカイブのモジュールキャッシュの効果絶大(カテゴリ数や階層構造にもよると思いますが...)
2008.08.23
本文に、再構築回数について補足しました。
WordPress テーマ(テンプレート)・3カラム版修正
「WordPress テーマ(テンプレート)・3カラム版」を、久しぶりに修正しました。
変更点は下記の2ヶ所です。
- CSS の float プロパティのクリア方法を変更(一般的なclearfixに変更)
- フッタの WordPress ME へのリンクを WordPress 日本語へのリンクに変更
ダウンロードは「WordPress テーマ(テンプレート)・3カラム版」から行ってください。
フィード向け AdSenseテスト提供開始
FeedBurner が、フィード向け AdSense の試験を開始しました。
長らくお待たせしておりましたフィード向け AdSenseを、このたび少数のサイト運営者様へ試験的にご提供することになりましたことをお知らせいたします。今回のテストは今後数週間に渡って実施する予定で、もしフィード上で"Ads by Google"というサインを見かけたら、それはフィード向け AdSenseのしくみを通じて配信されている広告となります。
ということで、表示されるかもしれません。
簡単ですが、お知らせまで。
Movable Type 4.2 リリース候補第2版公開
出遅れましたが、Movable Type 4.2 リリース候補第2版が公開されました。
More Reasons to Upgrade to Movable Type 4.2 and RC2
SQLite3 がダイナミックパブリッシング対応になったようです。また、特殊変数もダイナミックパブリッシング対応になったようです。
また、ダイナミックパブリッシング利用でのアーカイブのページ分割ができるようになっています(実験段階のためサポート対象外)
それを受けて、野田さんが配布されている静的ページ分割プラグインを改修されています。
mteval モディファイアと numify モディファイア
Movable Type 4.2rc1 に新しいモディファイアが追加されています。
1.mteval モディファイア
テンプレートの出力内容に含まれるテンプレートタグを実行し、出力します。つまり、ブログ記事の中に記述したテンプレートタグを評価してくれます。
これは以前「エントリーの中でMTタグを使う」で紹介した、EvalTemplate や Process Tags plugin と同じ目的です。
個人的には、このモディファイアがようやく標準で装備されて、感慨深いです。
mteval モディファイアは、次のように設定してください。
<MTEntries>
<$MTEntryBody mteval="1"$>
</MTEntries>
これでブログ記事の本文に <$MTBlogURL$> などを書いて公開すれば、URLが表示されます。
2.numify モディファイア
数字の桁を区切るモディファイアです。
このモディファイアは、次のように設定してください。
<MTSetVar name="number" value="10000000000" />
<MTGetVar name="number" numify="," />
上のサブテンプレートを実行すると、
10,000,000,000
となります。
桁区切りは、デフォルトがカンマで、ピリオドなど何でもOKだと思います。numify="1" でも大丈夫です。
グーグルが日本を破壊する
久しぶりのグーグル関係の新書を読みました。
![]() | グーグルが日本を破壊する (PHP新書 518) (PHP新書 518) 竹内 一正 PHP研究所 2008-04-16 売り上げランキング : 8295 Amazonで詳しく見る by G-Tools |
ちょっとした一言に垣間見える、各業界の実情や真相が興味深いです。
- 1章 グーグルはあなたをどう「操る」のか - グーグルvsプライバシー
- グーグルとアマゾンが怪物「グーグルゾン」を生むと?
- 検索依存症で壊される人たち
- 「恐竜」は滅びる
- パレート対ロングテール
- ネット広告はテレビ広告の二五倍も効く
- 携帯電話に「魔の手」が入り込む
- 新聞大国日本のダメージ
- ポスト・グーグルはいつどこから?
- マイクロソフトを追い落とせ
- 2章 グーグルはいつ没落し始めるのか - グーグル像vsグーグルの現実
- グーグルにスティーブ・ジョブスは育たない
- 頭脳は高コスト
- 「すごい、だけど」は組織の致命傷
- お金を生まない優秀な部下たち
- グーグルは「邪悪ではない」会社を貫けるか
- 反トラスト法との死闘
- 中国で見せる別の顔
- 巨大なデータセンターはどこへ?
- 3章 つまらないテレビをグーグルは変えるか - グーグルvsテレビ
- 540億円のCM飛ばし
- 大企業広告時代が終わる
- グーグルは「搾取と捏造の業界」を救うか
- 視聴率のウソがほころび始める
- 「BBCはもうテレビ局ではない」
- ウェブ2.0とテレビ
- 利権争いの配役
- 視聴者と権力者そしてグーグル
- 日本人の弱気の遺伝子
- お金を出して反感を買う人たち
- 4章 高収入で独占的な業界ほど破滅が近い - グーグルvsCM業界
- 日米で広告はこんなに別もの
- 日本の広告マンが世界で通用しないわけ
- たとえば電通は松下二人分の高給
- トヨタが求めた視聴率以外のもの
- 「ほえない番犬」公正取引委員会
- あなたもテレビ広告が打てる
- ネット広告が「王」になる日
- 広告代理店不要論
- 消費者はグーグルの味方にも敵にもなる
- 5章 携帯電話になにかが入りなにかが出ていく - グーグルvs携帯電話
- 日本でグーグルが勝てない理由
- 成功してクビになる外資系社長たち
- 財務からヤフーを見ると?
- ヤフー対グーグル
- グーグルと日本の携帯覇権
- 「700メガヘルツ」でのバトル
- グーグルは負けても成功を手離さない
- 「超安携帯」のからくり
- 勝手サイトの台頭
- グーグルが開ける風穴
- アンドロイドは「失敗しても成功」
- 6章 新聞社がつぎつぎ倒産する日 - グーグルvs新聞
- グーグルニュースの衝撃
- iPodとウェブニュースの共通土壌
- 新聞記者はもういらない
- 「ホワイトハウスの隠すことがニュースだ」
- 情報のタダ取り問題
- 無料化に進むネット新聞
- ネットと新聞は「読む」点で競合する
- 「紙頼み」の日本
- 新聞社のビジネス構造
- 情報コストの大切さ
- 最適化したところが弱点化する
- 7章 「日本型企業」マイクロソフトの落日 - グーグルvsマイクロソフト
- ビル・ゲイツがひび割れる
- 正反対のビジネスモデル
- それは出張先で使えるか
- グーグルドキュメントの弱点
- 勝者はパクリがうまい
- 理想を語りながら現実的に働く
- 挑戦者の息切れ
- 出番がくればきちんと出る
- 波が押し寄せる前に
- マイクロソフトはグーグルに追いつくか
- 自分の影と戦う
- そしてウィンドウズは消える
- 8章 グーグル後に勝つ日本の技術 - グーグルvs次世代
- グーグルのつくられ方
- グーグル検索の限界
- 問われるのは自分の判断
- 到達点は道なかば
- 日本発「なずき」はグーグルを超えるか
- 技術は歴史を変える
- 情報支配について
- 自分はなにをするべきなのか?
Movable Type 4.2 における mt.js の変更点(その1:Ajax 対応と window.onload の代替スクリプト)
先日、Movable Type 4.2 におけるコメント投稿フォームの機能追加と改善点をエントリーしましたが、動作を制御する mt.js(インデックステンプレートの「JavaScript」)が、新しく実装し直されていますので、気がついたところを紹介したいと思います。
1.Ajax 用関数の追加
mt.js は今までコメントフォーム専用でしたが、検索結果(ページ分割された場合)を Ajax で表示するための関数 mtGetXmlHttp が追加されています。
<mt:Ignore>
/***
* Returns a XMLHttpRequest object (for Ajax operations).
*/
</mt:Ignore>
function mtGetXmlHttp() {
if ( !window.XMLHttpRequest ) {
window.XMLHttpRequest = function() {
var types = [
"Microsoft.XMLHTTP",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP"
];
for ( var i = 0; i < types.length; i++ ) {
try {
return new ActiveXObject( types[ i ] );
} catch( e ) {}
}
return undefined;
};
}
if ( window.XMLHttpRequest )
return new XMLHttpRequest();
}
2.window.onload の代替スクリプト
もうひとつは、JavaScript マスター Dean Edwards 氏による、window.onload の代替スクリプトが追加されています。
// BEGIN: fast browser onload init
// Modifications by David Davis, DWD
// Dean Edwards/Matthias Miller/John Resig
// http://dean.edwards.name/weblog/2006/06/again/?full#comment5338
function mtInit() {
// quit if this function has already been called
if (arguments.callee.done) return;
// flag this function so we don't do the same thing twice
arguments.callee.done = true;
// kill the timer
// DWD - check against window
if ( window._timer ) clearInterval(window._timer);
// DWD - fire the window onload now, and replace it
if ( window.onload && ( window.onload !== window.mtInit ) ) {
window.onload();
window.onload = function() {};
}
}
/* for Mozilla/Opera9 */
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", mtInit, false);
}
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
mtInit(); // call the onload handler
}
};
/*@end @*/
/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
_timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
mtInit(); // call the onload handler
}
}, 10);
}
/* for other browsers */
window.onload = mtInit;
// END: fast browser onload init
これは、window.onload 前でも DOM 処理が可能になった時点で JavaScript を実行可能にしてくれるものです。
通常、JavaScript は、表示するページにサイズの大きな画像などがあると、それが全部読み込まれた後にしか動作しません。このスクリプトは画像の読み込みに関係なく、ページのDOM処理が可能になれば、JavaScriptが開始します。つまり、Ajax がページの描画に影響なく動作します。
参考サイト:




