Movable Type 個人ライセンス(無償)のダウンロード方法が変更

March 31,2008 2:22 AM
Category:[インストール]
Tag:[]
Permalink

数日前から、Movable Type 個人ライセンス(無償)のダウンロード方法が、大幅に簡単になりました。

1.新しいダウンロード方法

ECバイヤーズのページに進み、利用許諾に同意すれば、いきなりダウンロード画面が表示され、MT4.1-ja または MT3.36-ja がダウンロードできます。

以前の、「メールアドレス登録→ライセンスキー取得」という作業やダウンロード回数の制限がなくなったので、かなりダウンロードしやすくなっています。ちょっと使ってみたいという方から、バージョンアップで新たにダウンロードされる方まで、朗報といえるでしょう。

参考までに、過去のダウンロード方法も次に掲載しておきます。

2.過去のダウンロード方法

利用許諾に同意したあと、さらにメールアドレスを登録します。

メールアドレスを確認して、「申込」をクリック。

申し込み完了で、登録したメールアドレスにメールが送信。

送信されたメールに記載されたダウンロード認証画面にアクセス。

メールに記載された「ダウンロード認証キー」を入力して、「次へ」をクリック。

これでようやくダウンロードできます。ダウンロード回数は3回で、新たにダウンロードする必要がある場合は、メールアドレスを再登録します。

3.その他

この変更によって、メールアドレスをお持ちでない方(という人はいないと思いますが)も、個人ライセンス版のダウンロードが可能になります。

オープン化などに伴って、個人ライセンスのダウンロードに対する規制も緩和されたのでしょうか。

Comments [0] | Trackbacks [0]

アワーズイン阪急ホテルで

March 30,2008 2:31 AM
Category:[ダジャレ]
Tag:[]
Permalink
Comments [0] | Trackbacks [0]

LogCommentAuthors プラグイン

March 29,2008 12:55 PM
Category:[コメント, プラグイン]
Tag:[, , , ]
Permalink

「月別などのコメント投稿ランキングを表示したい」というご要望をいただきましたので、プラグインを作成してみました。

1.主な機能

  • システムログに記録されたコメントより投稿者の一覧を表示します
  • 年月指定が可能です
  • 投稿件数順による並び替えが可能です
  • 一覧から特定の投稿者を非表示にできます

コメント投稿者のURLやメールアドレスのリンク設定はできません。
またブログの文字コードをUTF-8以外で運用している場合の動作については確認できておりません。

2.プラグインのダウンロード

下記のリンクをクリックしてプラグインをダウンロードしてください。

LogCommentAuthors.zip

なお、プラグイン開発やサポート等にご支援・ご賛同くださる方からの寄付をお待ち申し上げます。

利用方法

上記の「Make a Donation」のリンクをクリックすると Paypal によるお支払いページにジャンプします。

3.プラグインのアップロード

ダウンロードしたプラグインを解凍し、中にあるLogCommentAuthors.pl を plugins ディレクトリに丸ごとアップロードしてください。

ブログ管理メニューの「設定」→「プラグイン」で LogCommentAuthors が表示されればインストール完了です。

4.提供するテンプレートタグ・モディファイア

テンプレートタグ

MTLogCommentAuthors
ログに記録されたコメント一覧のためのブロックタグ
MTLogCommentAuthor
コメント投稿者を出力するファンクションタグ
MTLogCommentAuthorCount
コメント投稿者別の投稿数を出力するファンクションタグ

モディファイア

lastn
最新のコメントから収集する投稿者数
sort_order
descend 指定で投稿の多い順に表示/ascend 指定で投稿の少ない順に表示
year
コメント投稿年(コメント投稿月と併用)
month
コメント投稿月。1月など一桁の月は、1でも01でも可能です。
exclude_author
非表示にしたいコメント投稿者

※モディファイアを複雑に組み合わせた場合の動作は保障できません。

5.使用例

ログに記録されたすべてのコメント投稿者と投稿数を表示

<ul>
<MTLogCommentAuthors>
<li><$MTLogCommentAuthor$> [<$MTLogCommentAuthorCount$>]</li>
</MTLogCommentAuthors>
</ul>

ログに記録された2008年3月分のコメント投稿者と投稿数を、投稿数の多い順に表示

<ul>
<MTLogCommentAuthors year="2008" month="3" sort_order="descend">
<li><$MTLogCommentAuthor$> [<$MTLogCommentAuthorCount$>]</li>
</MTLogCommentAuthors>
</ul>

さらにブログ管理者(yujiro)の分を非表示にする

<ul>
<MTLogCommentAuthors year="2008" month="3" sort_order="descend" exclude_author="yujiro">
<li><$MTLogCommentAuthor$> [<$MTLogCommentAuthorCount$>]</li>
</MTLogCommentAuthors>
</ul>

6.ライセンス

デュアルライセンスです。

6.1 MT4.1個人ライセンス/MT4.1商用ライセンスと組み合わせる場合

  • 無料で利用できます。
  • 改変・再配布は自由ですが、改変して再配布する場合、原作者のクレジットを必ず残してください。

6.2 MTOSと組み合わせる場合

  • 無料で利用できます。
  • GPLv2に従います。
Comments [2] | Trackbacks [0]

livedoor Reader のおすすめフィードに「AMNパートナーブログ」登場

March 28,2008 2:55 AM
Category:[AMN]
Tag:[, , ]
Permalink

3月26日より、livedoor Readerオススメフィードのコーナーに、AMNパートナーブログのOPMLが掲載されています。


livedoor ReaderのおすすめフィードにAMNパートナーブログが登場

OPML(Outline Processor Markup Language:アウトライン・プロセッサ・マークアップ言語)は、ブログのRSSフィードを一括でRSSリーダーにインポートする、XML形式のファイルです。

ここでは、「AMNパートナーブログ」をRSSリーダーに登録する方法として次の2通りを紹介します。

  • livedoor リーダーに登録
  • OPML を他の RSS リーダー(ここでは Google リーダー)に登録

1.livedoor Readerに登録

livedoor Reader のサイトに進み、「無料登録/ログイン」をクリック。

ログイン。登録していない方はここで「新規登録」をクリック。

「OPMLでおすすめフィードを一気に登録!」をクリック。

AMNパートナーブログの下にある「内容を確認」をクリック。

読みたいブログをチェックして(基本的に全部チェックしておくことをおすすめします)、一番下の「インポート」をクリック。
すでに登録されているサイトは「登録済み」となりチェックボックスは表示されません。

2.OPMLを他の RSS リーダー(Google リーダー)に登録

livedoor Reader のサイトに進み、右側にある「おすすめフィード」をクリック。

AMNパートナーブログの下にある「OPML」を右クリックして、「(Firefoxの場合)名前を付けて保存」を選択。OPMLをローカルPCに保存します。

Google リーダーの場合、右上のメニューにある「設定」をクリック。

「インポート/エクスポート」をクリック。

「OPML ファイルを選択:」欄に先ほどダウンロードしたOPMLを指定して、「アップロード」をクリック。

これでインポートされました。


Comments [0] | Trackbacks [0]

WordPress Japan が閉鎖されます

March 27,2008 11:55 AM
Category:[WordPress]
Tag:[]
Permalink

WordPress ME ユーザのよりどころであった「WordPress Japan」が、2008年3月末で閉鎖されます。

WordPress Japan

突然の閉鎖なので、何か事情があったものと察しています。
私も WordPress ME は、別のサイトで使わせて頂いています。閉鎖されるのは非常に残念ですが、永らくの運営、本当にお疲れ様でした。

WordPress ME はなくなりますが、WordPress 日本語版は、WordPress 日本語ローカルサイトから引き続きダウンロードできます。

WordPress 日本語版についての情報もいくつか掲載されています。

「日本語版と ME 版の比較一覧」から、表記の違いについて抜粋しておきます。
WordPress 日本語版では、次の部分が英語表記になります。

  • ダッシュボードのニュースとフィード

WordPress 日本語版では、次の部分が日本語表記になります。

  • 本体ファイルの翻訳が必要なエラーメッセージ
  • 本体付属プラグインの説明書き

公式サイトではサポートサイトも開設されています。

Comments [0] | Trackbacks [3]

MT4LP5

March 27,2008 12:02 AM
Category:[お知らせ]
Tag:[, ]
Permalink

企業サイト構築におけるCMSとしてのMT4.1を掘り下げることをテーマとして開催されるイベント「MT4LP5」のお知らせです(すでに満席ですが...)

日時:2008年4月5日(土)12:10~18:30(開場:11:40) * 自由席。途中入場/途中退場可
会場:ベルサール原宿
定員:400名
主催:CSS Nite実行委員会
タイムテーブル

時間A面B面
11:40開場
12:10Keynote:なぜMTは「商用CMS一覧」に載せられなかったのか(過去形)/安田 英久(Web担当者Forum 編集長)
12:30A1:Movable Typeテンプレートの基本/鷹野雅弘(スイッチ)B1:プラグイン開発と応用/関根 元和(エムロジック)
13:30休憩(20分)
13:50A2:実践!CMSとして使うMT4/蒲生 トシヒロ(有限会社ITプロフェッショナル)B2:プラグインを利用したカスタマイズ/藤本 壱
14:50休憩(20分)
15:10A3:小中規模コーポレートサイト構築における実用的Tips/黒野 明子B3:管理画面のカスタマイズ/野田 純生(アルファサード有限会社)
16:10休憩(30分)
16:40A4:MTタグ、JavaScript を用いたサイトのカスタマイズ/荒木勇次郎(小粋空間)B4:MTの設置・運用に関するTIPS/丹羽 章
17:40移動(B会場の方はA会場に移動)
17:50パネルディスカッション:各セッションの出演者に加え、『Movable Typeプロフェッショナル・スタイル』の著者が登壇します。質疑応答を中心に、パネルディスカッションを行います。
18:30終了

私はA面の最後で講演します。
公式サイトに掲載されている内容は書籍からの抜粋なので、実際にはもう少し違ったお話をさせて頂く予定です(正確に言うと、まだきちんと決まってません...)。

連動書籍「Movable Typeプロフェッショナル・スタイル」も予約中です。

Movable Type プロフェッショナル・スタイル MT4.1対応Movable Type プロフェッショナル・スタイル MT4.1対応
CSS Nite 上ノ郷谷 太一 蒲生 トシヒロ

毎日コミュニケーションズ 2008-04-08
売り上げランキング : 13085

Amazonで詳しく見る
by G-Tools
Comments [0] | Trackbacks [0]

カテゴリーリストにカスタムフィールドの画像を表示する

Movable Type のカテゴリーリストに、カスタムフィールドの画像を表示するカスタマイズです。
次のように、カテゴリー別の画像を簡単に与えることができます。

カテゴリーリストにカスタムフィールドの画像を表示

1.カスタムフィールドの作成

カテゴリーにカスタムフィールドを作成します。ここでは CategoryImage という名前のテンプレートタグにします。

カテゴリーリストにカスタムフィールドの画像を表示

2.カテゴリーに画像の追加

各カテゴリーに表示されている「Imageを選択」をクリックして、画像を追加します。

カテゴリーリストにカスタムフィールドの画像を表示

画像を選択した後、必ず保存をクリックしてください。何回か試して正常に表示されないことがあったのですが、どうも保存をクリックするのを忘れていたようです。

カテゴリーリストにカスタムフィールドの画像を表示

3.サブテンプレートの追加

冒頭のサンプルは、デフォルトテンプレートのサイドバーに下記のサブテンプレートを追加しました。階層表示でない、MTCategories タグを久しぶりに使ってみました。

青色部分がカスタムフィールド用タグです。

<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
  <h3 class="widget-header">カテゴリ</h3>
  <div class="widget-content">
    <ul class="widget-list">
    <mt:Categories>
      <mt:ifNonZero tag="mt:CategoryCount">
      <li class="widget-list-item"><MTCategoryImageAsset><img src="<$MTAssetURL$>" style="vertical-align:middle" /> </MTCategoryImageAsset><a href="<$mt:CategoryArchiveLink$>"<mt:IfNonEmpty tag="mt:CategoryDescription"> title="<$mt:CategoryDescription$>"</mt:IfNonEmpty>><$mt:CategoryLabel$> (<$mt:CategoryCount$>)</a>
      <mt:else>
      <li class="widget-list-item"><MTCategoryImageAsset><img src="<$MTAssetURL$>" style="vertical-align:middle" /> </MTCategoryImageAsset><$mt:CategoryLabel$>
      </mt:ifNonZero>
      </li>
    </mt:Categories>
    </ul>
  </div>
</div>
</mt:IfArchiveTypeEnabled>

赤色部分は、画像の垂直方向の位置揃えのための style 属性です。サンプルでは img 要素に直接与えてしまっているので、適宜スタイルシートで設定するようにしてください。

Comments [2] | Trackbacks [0]

「CMSとして使うMovable Typeガイドブック」 販売状況

March 25,2008 1:23 AM
Category:[書籍]
Tag:[]
Permalink

「Movable Type WEBデザインの新しいルール」 販売状況と紹介リンク等」に引き続き、14日に発売された「CMSとして使うMovable Typeガイドブック」 の販売状況です。

おかげさまで、2冊目も好調な売れ行きです。年末からドタバタでしたが、年末年始休暇もすべて返上し、部屋に引きこもって書き上げた甲斐がありました。お買い上げ下さった皆様、ありがとうございます!

CMSとして使うMovable TypeガイドブックCMSとして使うMovable Typeガイドブック
黒野 明子 荒木 勇次郎

翔泳社 2008-03-14
売り上げランキング : 859

Amazonで詳しく見る
by G-Tools

Amazon売り上げランキング

画面は380位ですが、私が確認した限りでは(たしか)283位が最高でした。
Amazon売り上げランキング

翔泳社の本ランキング:3位(3/19現在)

今回も大健闘です。
翔泳社の本ランキング

cbookランキング:7位(3/10~3/16)

コンピュータ書籍専門ネット書店でも大健闘です。
cbookランキング

ちなみに当ブログの Amazon 経由の販売数が、「Movable Type WEBデザインの新しいルール」 の(同一日数ベースでの)販売数をかなり上回っています。ありがとうございます。

Comments [2] | Trackbacks [0]

mt-csv2customfields

「CSV形式のデータを Movable Type のカスタムフィールドに一括読み込みさせたい」という要望がかなり多いようなので、スクリプト mt-csv2customfields.cgi を作成しました。

CSVファイルを読み込み、新規ブログ記事のカスタムフィールドに登録します。

1.機能

今のところできるのは次の通りです。

  • 新規ブログ記事のみ対応
  • タイトルの書き込み
  • 本文の書き込み
  • カテゴリーまたはサブカテゴリーの書き込み。カテゴリーが存在しない場合は新規作成(トップレベルのみ)
  • タグの書き込み(複数設定可能)
  • カスタムフィールド(テキスト形式)の書き込み
  • 複数のカスタムフィールドに対応
  • 既存のブログ記事タイトルを指定した場合、カスタムフィールドのみ上書き(他のフィールドの内容は無視)

CSVのフォーマット

CSVデータは次のフォーマットにしてください。

1行目:
タイトル:'title'を設定
本文:'text'を設定
カテゴリー:'category'を設定
タグ:'tags'を設定
カスタムフィールド:カスタムフィールドのベースネームを設定

2行目以降:フィールドに対応したデータ。
カテゴリーは新規のトップカテゴリー(他と重複しない名称)または既存のカテゴリー名(サブカテゴリーであればサブカテゴリー名のみ設定)。
タグは新規のタグも大丈夫で、":"で区切れば複数設定できます。

なお、CSVデータはUTF-8のものしか確認ができておりません。

3.CSVデータのサンプル

title,text,category,tags,test1,test2,test3
たいとる1,てきすとの内容1,カテゴリー1,タグ1:タグ2,カスタムフィールド1の内容1,カスタムフィールド2の内容1,カスタムフィールド3の内容1
たいとる2,てきすとの内容2,カテゴリー2,タグ3:タグ4,カスタムフィールド1の内容2,カスタムフィールド2の内容2,カスタムフィールド3の内容2
たいとる3,てきすとの内容3,カテゴリー3,タグ5:タグ6,カスタムフィールド1の内容3,カスタムフィールド2の内容3,カスタムフィールド3の内容3

4.ライセンス

4.1 商用ライセンスの Movable Type で利用する場合

商用ライセンスの Movable Type で利用する場合は、有償(1000円/1サーバ)とさせて頂きます。お振込み方法につきましては、お問い合わせよりメールにてご連絡ください。

4.2 個人ライセンス(無償)と組み合わせる場合

個人ライセンス(無償)と組み合わせる場合は、無償でご利用ください。

5.インストール

下記のファイルをダウンロードして、展開した中にあるmt-csv2customfields.cgi をアプリケーションディレクトリにアップロードし、CGIが実行可能なパーミッションを変更してください。

mt-csv2customfields.zip

たいしたスクリプトではありません。α版ということでお試しください。

修正履歴
v0.01 2008.03.24 初版
v0.02 2008.04.21 カテゴリーとタグに対応。head / body 要素の重複削除

6.利用方法

ブラウザから mt-csv2customfields.cgi にアクセスすると、次のような画面が表示されるので、ブログのID、ユーザーIDを数字で設定し、CSVファイルを選択して送信をクリックしてください。

mt-csv2customfields.cgi にアクセスした画面

正常に実行できれば次のような画面が表示されます。

mt-csv2customfields.cgi にアクセスした画面

登録後のブログ記事編集画面です。

mt-csv2customfields.cgi にアクセスした画面

Comments [4] | Trackbacks [0]

IE6による印刷で「このページのスクリプトでエラーが発生しました。」のエラーが表示される問題について

March 23,2008 1:55 AM
Category:[PC]
Tag:[, ]
Permalink

IE6 でブラウザに表示しているページを印刷する時、次のような「このページのスクリプトでエラーが発生しました。」「オブジェクトでサポートされていないプロパティまたはメソッドです。」というエラーが発生することがあります。

IEエラー

調べたところ、マークアップの

id="tags"

という id 属性の存在が影響していることが判明しました。

実は当ブログで配布しているテンプレートで、この ID 属性を使用しています。
現在、テンプレートをご利用の方は、(閲覧ユーザが)IE6 で印刷する場合を考慮し、「サイドバー」に設定しているタグクラウドの id 属性値(赤色部分)を、他の値(tags2とか)に変更されることをおすすめします。

<dd class="side">
<ul id="tags">
<MTTags>
<li class="module-list-item taglevel<$MTTagRank$>">
<a href="<$MTTagSearchLink$>"><$MTTagName$></a>
</li>
</MTTags>
</ul>
</dd>
</MTIf>

また、スタイルシートに対応する記述(下記)も、tags を tags2 等に修正願います。

/* サイドメニュー(タグクラウド用) */
ul#tags {
    margin-top: 5px;
    padding-left: 0;
    list-style: none;
}
ul#tags .module-list-item {
    display: inline;
}
ul#tags li.taglevel1 {
    font-size: 125%;
    font-weight: bold;
}
ul#tags li.taglevel2 {
    font-size: 125%;
}
ul#tags li.taglevel3 {
    font-size: 116.6%;
}
ul#tags li.taglevel4 {
    font-size: 108.3%;
}
ul#tags li.taglevel5 {
    font-size: 100%;
}
ul#tags li.taglevel6 {
    font-size: 91.6%;
}

余談ですが、当ブログに IE で訪問されているユーザがどれくらいいらっしゃるのかと思って、Google Analytics を調べてみました。

まず、全ブラウザ別の構成比率です。青が IE、緑が Firefox、赤が Safari です。

ブラウザ別アクセス

続いて、IE のみの構成比率です。青が IE6.0、緑が IE7.0 です。

IE別アクセス

Comments [0] | Trackbacks [0]

コラムニストが

March 22,2008 1:33 AM
Category:[ダジャレ]
Tag:[]
Permalink

言いました。

Comments [3] | Trackbacks [0]

ブログ記事に同一カテゴリーのブログ記事の前後リンクを表示する

Movable Type で、ブログ記事の前後のブログ記事へのリンクを、直近のブログ記事ではなく、同一カテゴリーのブログ記事を表示するカスタマイズです。

下の画面の、ブログ記事タイトル上にある前後リンクは、分かりにくいですが、同一カテゴリーのブログ記事です。

ブログ記事の前後のブログ記事へのリンクを同一カテゴリーに絞る

また、ブログ記事に複数カテゴリーを設定している場合は、すべてのカテゴリーの前後リンクも表示します(こんなに表示するのもどうかと思いますが...)。

ブログ記事の前後のブログ記事へのリンクを同一カテゴリーに絞る

以下、カスタマイズ方法です。

1.プラグインのダウンロード

Previous and next in category のサイトに進み、「PreviousNextInCategory」のリンクをクリック。

ブログ記事の前後のブログ記事へのリンクを同一カテゴリーに絞る

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

ダウンロードした PreviousNextInCategory.zip を解凍して、PreviousNextInCategory.pl をpluginsディレクトリにアップロードします。
ブログ管理画面より、「システムメニュー」→「プラグイン」で「PreviousNextInCategory.pl」が表示されればインストール完了です。

ブログ記事の前後のブログ記事へのリンクを同一カテゴリーに絞る

3.プライマリカテゴリーに属するブログ記事のみを表示する場合

ブログ記事アーカイブの任意の位置に下記のサブテンプレートを設定してください。

<MTEntryPreviousInCategory>
<a href="<$MTEntryPermalink$>">« <$MTEntryTitle$></a> | 
</MTEntryPreviousInCategory>
<a href="<$MTEntryPermalink archive_type="Category"$>"><$MTEntryCategory$></a>
<MTEntryNextInCategory>
 | <a href="<$MTEntryPermalink$>"><$MTEntryTitle$> »</a>
</MTEntryNextInCategory>

ブログ記事アーカイブを再構築すれば、冒頭のように、同一カテゴリーの前後記事リンクが表示されます。

4.ブログ記事に登録されているすべてのカテゴリーに属するブログ記事を表示する場合

PreviousNextInCategory.plを任意のエディタで開き、

     :
sub _hdlr_entry_previous_in_category {
    my($ctx, $args, $cond) = @_;
    my $e = $ctx->stash('entry')
        or return $ctx->_no_entry_error('MTEntryPrevious');
    my $cat = $e->category
		    or return '';
    my $prev = $e->previous(1);
     :
sub _hdlr_entry_next_in_category {
    my($ctx, $args, $cond) = @_;
    my $e = $ctx->stash('entry')
        or return $ctx->_no_entry_error('MTEntryNext');
    my $cat = $e->category
		    or return '';
    my $next = $e->next(1);
     :

の部分に下記の青色の行を追加します。

     :
sub _hdlr_entry_previous_in_category {
    my($ctx, $args, $cond) = @_;
    my $e = $ctx->stash('entry')
        or return $ctx->_no_entry_error('MTEntryPrevious');
    my $cat = $e->category
		    or return '';
    if($ctx->stash('category') ne '') {
        $cat = $ctx->stash('category');
    }
    my $prev = $e->previous(1);
     :
sub _hdlr_entry_next_in_category {
    my($ctx, $args, $cond) = @_;
    my $e = $ctx->stash('entry')
        or return $ctx->_no_entry_error('MTEntryNext');
    my $cat = $e->category
		    or return '';
    if($ctx->stash('category') ne '') {
        $cat = $ctx->stash('category');
    }
    my $next = $e->next(1);
     :

ブログ記事アーカイブの任意の位置に下記のサブテンプレートを設定してください。

<MTEntryCategories>
<p>
<MTEntryPreviousInCategory>
<a href="<$MTEntryPermalink$>">« <$MTEntryTitle$></a> | 
</MTEntryPreviousInCategory>
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
<MTEntryNextInCategory>
 | <a href="<$MTEntryPermalink$>"><$MTEntryTitle$> »</a>
</MTEntryNextInCategory>
</p>
</MTEntryCategories>

ブログ記事アーカイブを再構築すれば、ブログ記事が属する全カテゴリーの前後記事リンクが表示されます。

5.前後記事の再構築をする

上記の設定だけでは、ブログ記事投稿時に同一カテゴリーの前後記事が再構築されないという問題があります。

ということで、一応、MT4対応のプラグインを作ってみました。

PreviousNextInCategory.zip

元プラグインをかなり改変してしまったので、上記のファイルをダウンロードしたら、元プラグインにある、

_hdlr_entry_previous_in_category
_hdlr_entry_next_in_category

を埋め込んでください(複数カテゴリーに対応させる場合は4項のカスタマイズも行ってください)。
具体的な作業は、ダウンロードしたファイルの最後の方に簡単な説明を入れてますので、それを読んでください。

複数のカテゴリーを設定したブログ記事でも、前後リンクのブログ記事はすべて再構築されます。

なお、再構築は同じカテゴリーのブログ記事を検索するという、元記事のロジックをそのまま使わせてもらってますが、パフォーマンスの問題を解消する改善策がありましたらご教示ください。

6.参考記事

このエントリーは下記の記事を参考にさせていただきました。ありがとうございました。

Comments [5] | Trackbacks [1]

カテゴリーアーカイブのサブカテゴリーリストに、親カテゴリーとその子カテゴリーを表示する

Movable Type のカテゴリーアーカイブに表示しているサブカテゴリーリストにおいて、自カテゴリーと、その親カテゴリーに属するカテゴリーを表示するカスタマイズです。

具体例を説明します。例えば、ブログのカテゴリーが、

 cat1
  ├ cat1-1
  ├ cat1-2
  └ cat1-3
 cat2
  ├ cat2-1
  ├ cat2-2
  └ cat2-3
 cat3
  ├ cat3-1
  ├ cat3-2
  └ cat3-3

となっていると仮定します。

cat1-1 のカテゴリーアーカイブを表示した時、サブカテゴリーリストには、

 cat1
  ├ cat1-1
  ├ cat1-2
  └ cat1-3

のみを表示します。また、cat2-2 のカテゴリーアーカイブを表示した時、サブカテゴリーリストには、

 cat2
  ├ cat2-1
  ├ cat2-2
  └ cat2-3

のみを表示します。

1.サブカテゴリーのアーカイブで親カテゴリーとそのサブカテゴリーを表示する

次のサブテンプレートを任意の位置に設定して、再構築してください。

<MTParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTParentCategory>

このサブテンプレートは、親カテゴリーでは何も表示されません。親カテゴリーは、一番外側の MTParentCategory タグの実行条件にマッチしない(親カテゴリーに親カテゴリーが存在しない)ためです。

2.親カテゴリーでも同じように表示する

親カテゴリーである cat1 のカテゴリーアーカイブを表示した時、サブカテゴリーリストに

 cat1
  ├ cat1-1
  ├ cat1-2
  └ cat1-3

とする場合は、先のサブテンプレートに下記の青色部分を追加します。

<MTParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTParentCategory>
<MTHasNoParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTHasNoParentCategory>

ちなみに上記のリストでは、MTSubCategories が2ヶ所出現し、その内容は全く同じです(赤色部分)。

<MTParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTParentCategory>
<MTHasNoParentCategory>
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</MTHasNoParentCategory>

次のように MTSetVarTemplate タグを使って丸めておけば、サブテンプレートの重複したマークアップを解消できます。

<mt:setvartemplate name="subcategorylist">
<MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</mt:setvartemplate>
 
<MTParentCategory>
<mt:getvar name="subcategorylist">
</MTParentCategory>
<MTHasNoParentCategory>
<mt:getvar name="subcategorylist">
</MTHasNoParentCategory>

3.カテゴリーアーカイブ以外でこのサブテンプレートを表示させない対処

いずれの方法も、リストの一番外側は、

<MTIf name="category_archive">
  :
</MTIf>

で括っておけば、他のアーカイブで表示されずに済みます。

Comments [5] | Trackbacks [0]

Movable Type 4.1 書籍のまとめ

March 19,2008 2:50 AM
Category:[書籍]
Tag:[, , ]
Permalink

ここ最近、Movable Type 4.1 向けの書籍が出回り始めました。

ということで、拙著から本屋でざっと確認したものまで含め、以下にまとめてみました。参考になれば幸いです(まだ発売されていないものもあります)。

記述が曖昧な部分が気になるので、内容については改めて見直したいと思いますが、現時点で重大な誤りがありましたらご指摘ください。

1.まとめ

表は「初心者向け」や「ためになる」など、主観的かつ曖昧な感想はできるだけ避け、書かれている内容に着目しています(といってもやはり主観的ですが...)。

Movable Type プロフェッショナル・スタイル MT4.1対応
Movable Type プロフェッショナル・スタイル MT4.1対応
CMSとして使うMovable Typeガイドブック
CMSとして使うMovable Typeガイドブック
Movable Typeで作る絶妙なブログサイト―4.1対応
Movable Typeで作る絶妙なブログサイト―4.1対応
Movable Typeテンプレートタグ虎の巻
Webプロフェッショナルのための黄金則 Movable Typeテンプレートタグ虎の巻
インストール詳しく解説なし簡単に解説なし
各機能の説明MT4.1の特徴の説明あり簡単に解説広く解説なし
テンプレートの解説詳しく解説詳しく解説概要のみなし
テンプレートタグの解説特定の章で詳しく解説詳しく解説概要のみ詳しく解説(全てのテンプレートタグを網羅)
テンプレートタグを使ったカスタマイズややあり多い基本的なものが少し非常に多い
プラグインカスタマイズ・作成方法について詳しく解説概要とテンプレートセットの説明のみカスタマイズについていくつか解説なし
テンプレートタグリファレンスなしあり(オプションについても概要を記述)ありあり(書籍全体がリファレンス)
グローバルモディファイアリファレンスなしありなしあり
サンプルデザインなしありなしなし
CD-ROMなしあり(MTOS4.1とオリジナルテンプレートセット同梱)なしなし
価格2940円2940円2100円2940円
ページ数336ページ304ページ255ページ336ページ

以下、個人的な感想です。

Movable Typeで作る絶妙なブログサイト―4.1対応」は、これ1冊でインストールから基本操作、色々なカスタマイズができるような内容で、MT初心者~中級者向けといった印象です。なお、この本だけサイズが小さいです(A5判)。

Movable Type プロフェッショナル・スタイル MT4.1対応」はその道のプロフェッショナルな方々が執筆されており、どの章も濃い内容です。特にプラグインやインストール関係の内容が充実しています。

Webプロフェッショナルのための黄金則 Movable Typeテンプレートタグ虎の巻」は、テンプレートタグリファレンスですが、かなり充実した内容で、制御系のテンプレートタグもしっかり吟味してサンプルで使われているようです。内容もぎっしり詰まっていて、文字数はこの中で一番多いかもしれません。

CMSとして使うMovable Typeガイドブック」は、簡単な基本操作に加え、テンプレート、テンプレートタグ、オリジナルテンプレートセットの解説に注力しています。タグリファレンスではなく、実際のサイト構築にテンプレート・テンプレートタグを活用することを目指したものです。

ということで、どれも違った内容なので、目的・用途によって選ぶと良いでしょう。

2.発売予定の書籍

先に紹介した「Movable Type プロフェッショナル・スタイル MT4.1対応」に加え、下記の書籍が発売予定のようです(画像なし)。

Movable Type 4 新しいWebサイトの黄金則-MTで実現するCMSサイト構築のすべて-Movable Type 4 新しいWebサイトの黄金則-MTで実現するCMSサイト構築のすべて-
仲座 恵美 宮永 邦彦 芝 陽一郎

ソフトバンククリエイティブ 2008-04-05
売り上げランキング :

Amazonで詳しく見る
by G-Tools

3.その他

Six Apart のサイトでもまとめられたようです。

2008.03.20
書籍を購入して記述を一部見直しました。

Comments [6] | Trackbacks [1]

カスタムフィールドのテキストエリアに入力した改行をページに反映させる

March 18,2008 12:50 AM
Category:[カスタムフィールド]
Tag:[, ]
Permalink

Movable Type のカスタムフィールドで「テキスト(複数行)」という種類のフィールドを利用する際、テキストエリアへの入力内容に改行や空行を含めても、出力される文字列の改行や空行はすべて除去された状態で出力されてしまいます。

本エントリーでは、この事象を解消する方法を紹介します。

1.問題点

例えば、次のようなカスタムフィールドを作成します。テンプレートタグはとりあえず「EntryData」としておきます。

作成したフィールドで、次のようなテキストを入力します。

このカスタムフィールドを出力する「ブログ記事の概要」のサブテンプレートは次のようにします。

   :
<div class="asset-body">
    <$MTEntryBody$>
    <MTIfNonEmpty tag="EntryData">
        <$MTEntryData$>
    </MTIfNonEmpty>
</div>
   :

このテンプレートで出力されるカスタムフィールドの内容には、ご覧の通り、改行が含まれません。

2.対処方法

改行を含めるには、グローバルモディファイアである、filter モディファイアをカスタムフィールドに適用します。

   :
<div class="asset-body">
    <$MTEntryBody$>
    <MTIfNonEmpty tag="EntryData">
        <$MTEntryData filters="__default__"$>
    </MTIfNonEmpty>
</div>
   :

値に設定されている __default__ は、テキストフィルタとして定義されている予約変数(厳密にはMT::Util::html_text_transformをハンドリングするためのキー名)です。

このように設定することで、カスタムフォールドの出力結果に改行(br 要素や p 要素)が反映されます。

もう少し厳密に言えば、ブログ記事やウェブページの本文・追記のフォーマットで「改行を変換」を選択したものと同じ結果で出力されます。

3.参考記事

Ogawa::memorandaどこでもConvert Line Breaksするための2つのTips

Comments [0] | Trackbacks [0]

コメントのフラグメントを動的に切り替える

March 17,2008 1:00 AM
Category:[コメント]
Tag:[, , ]
Permalink

Movable Type のブログ記事アーカイブにある、コメントのフラグメントを動的に切り替えるカスタマイズです。

「フラグメント」とは「文書の特定の場所へのリンク」のことです。フラグメントに対応する、コメントへのリンクのフラグメント識別子(URLの#以降の部分)は、今回の場合、次のようになっています。

http://user-domain/2008/03/post.html#comments

今回実現したい、フラグメントによるリンクは次の通りです。

  • ブログ記事にコメントが投稿されている場合、メインページに表示されているコメントへのリンクをクリックすると、その先頭にジャンプする
  • ブログ記事にコメントが投稿されていない場合、メインページに表示されているコメントへのリンクをクリックすると、コメント投稿フォームにジャンプする

デフォルトテンプレートのコメント関連のマークアップは次のようになっています。投稿コメントおよびコメントフォーム全体を div 要素で括り、フラグメントとなる id 属性(赤色)を付与しているので、投稿コメントの有無に依存せず、常にフラグメントが存在します。

<MTIfCommentsActive>
<div id="comments" class="comments">
    <MTIf name="comment_preview_template">
    <$MTInclude module="コメント入力フォーム"$>
    </MTIf>
    <MTComments>
        <MTCommentsHeader>
    <h2 class="comments-header">コメント(<$MTEntryCommentCount$>)</h2>
    <div class="comments-content">
        </MTCommentsHeader>
        <$MTInclude module="コメント詳細"$>
        <MTCommentsFooter>
    </div>
        </MTCommentsFooter>
    </MTComments>
    <MTUnless name="comment_preview_template">
    <$MTInclude module="コメント入力フォーム"$>
    </MTUnless>
</div>
</MTIfCommentsActive>

問題となるのは、コメント全体に対してフラグメントが設定できないマークアップになっている場合です。

例えば次のようなマークアップを想定します。

<MTIfCommentsActive>
<MTIf name="comment_preview_template">
<div>
    <$MTInclude module="コメント入力フォーム"$>
</div>
</MTIf>
 
<MTComments>
    <MTCommentsHeader>
<h2 id="comments" class="comments-header">コメント(<$MTEntryCommentCount$>)</h2>
<div class="comments-content">
    </MTCommentsHeader>
    <$MTInclude module="コメント詳細"$>
    <MTCommentsFooter>
</div>
    </MTCommentsFooter>
</MTComments>
 
<MTUnless name="comment_preview_template">
<div>
    <$MTInclude module="コメント入力フォーム"$>
</div>
</MTUnless>
</MTIfCommentsActive>

このマークアップでは、もし投稿コメントがひとつもないと、MTComments 内部が実行されず、フラグメントも表示されないため、コメントのリンクをクリックするとページのトップにジャンプすることになります。
つまり、投稿コメントの有無によって、フラグメントの出力位置を切り替える必要があります。

この問題を解消するには、次のようにコメント入力フォーム部分に MTIfNonZero を追加し(青色部分)、投稿コメント件数が0の場合だけ id 属性を表示するようにします。

<MTIfCommentsActive>
<MTIf name="comment_preview_template">
<div>
    <$MTInclude module="コメント入力フォーム"$>
</div>
</MTIf>
 
<MTComments>
    <MTCommentsHeader>
<h2 id="comments" class="comments-header">コメント(<$MTEntryCommentCount$>)</h2>
<div class="comments-content">
    </MTCommentsHeader>
    <$MTInclude module="コメント詳細"$>
    <MTCommentsFooter>
</div>
    </MTCommentsFooter>
</MTComments>
 
<MTUnless name="comment_preview_template">
<div<MTIfNonZero tag="MTEntryCommentCount"><MTElse> id="comments"</MTIfNonZero>>
    <$MTInclude module="コメント入力フォーム"$>
</div>
</MTUnless>
</MTIfCommentsActive>

なお、コメント入力フォームの MTInclude が2ヶ所ありますが、最初に現れる、MTIf タグで括られた方は、コメントプレビュー時しか表示されない(=フラグメントの対象にならないため)ので、対処する必要はありません。

参考記事:文書の特定の場所へのリンク

Comments [0] | Trackbacks [0]

Movable Type のデモ環境を簡単に構築する InstaMT

March 16,2008 12:15 AM
Category:[インストール]
Tag:[, ]
Permalink

MovableType.jp で InstaMT というのが公開されていたので、早速試してみました。「InstaMT」は instant をもじったものです(と勝手に解釈しています)。

InstaMT でかんたんデモ環境構築

InstaMT は、Movable Type が動作するのに必要な環境である Apache, MySQL, ActivePerl, そして MTOS 4.1 が各々ひとつのディレクトリにプリインストールされているかんたんデモ環境構築パックです。InstaMT.exe を実行すれば、Apache や MySQL のステータスを表示するウインドウが立ち上がり、ローカルホスト (http://127.0.0.1/) へアクセスするだけで Movable Type のダッシュボードに移動します。

以下、USB メモリからの起動方法を紹介します。

1.デモ環境構築パックのダウンロード

InstaMT でかんたんデモ環境構築のサイトから InstaMT-USB.zip をダウンロードします。

2.インストール

ダウンロードしたアーカイブを解凍します。
ファイルサイズがかなり大きいので、150MB くらいの空きがあるといいでしょう。また、USBメモリのトップディレクトリに次のファイルおよびフォルダが展開されていないと、次の起動が説明の通りに行えません。

autorun.inf
InstaMT

3.起動

USB メモリを PC に挿入すると、「Run InstaMT デバイスで提供されたプログラムを使用」が表示されるので、それを選択します。
autorun.inf が別のフォルダ配下にある場合は、このように起動できないので、InstaMT フォルダの中にある InstaMT.exe を起動してください。

InstanMT のウィンドウが開きます。

同時にブラウザが起動し、次のようなメッセージが表示されますので、しばらく待ちましょう。

Apache や MySQL が正常に起動できれば、Movable Type の管理画面が起動し、次のような画面に遷移します。

USB メモリを挿入した PC で、他の Apache や MySQL が起動していると(厳密にはポートが使用されていると)正常に起動できないので気をつけましょう。