2009年12月アーカイブ

このサイトでも利用させてもらってる、Movaable Type をモバイル対応にするCGIが、MT5に暫定ながら対応して公開されました。

検索機能などもついてパワーアップしています。

【2009-12-28 追記】
現在は、MT4i version 3.1 alpha2 が公開されています。
【2010-01-28 追記】
ロリポップ・チカッパでは、Movaable Type 5.01でEncode.pmがらみでエラーがでるようですが、SAKURAでは動作確認できました。
【2010-03-20 追記】
MT4i3.1 alpha3 は、ロリポップ・チカッパででのEncode.pmがらみでエラーがでる問題が修正されています。これで一安心。

Movable Type 4.1からテンプレートセット機能が搭載されましたが、これを作成するのは若干のスキルが必要になります。

そこで、ブログごとのテンプレートをテンプレートセットとして作成できる、TemplateSetExporter Plugin を導入してあります。

MovableType用TemplateSetExporter Plugin Ver.0.50 (エムロジック放課後プロジェクト)

また、次のサイトでは、さらに使いやすくするTipsが掲載されています。

Movable Type のテンプレートをカスタマイズするときのバージョン管理 - かたつむりくんのWWW

なお、Movable Type 5 には対応していません。

複数ブログで構成されたサイトで、検索結果のテンプレートを共通化したい場合は、mt-config.cgiに環境変数

SearchAltTemplate altsearch altsearch.tmpl

と記述し、代替の検索結果のテンプレートを指定(MT/search_templates/altsearch.tmpl)しますが、ここで落とし穴。

このままだと、検索結果のFeedが出力されません。

検索結果のFeedをクリック

検索結果Feedテンプレートが無いエラー

そこで、検索結果のFeedテンプレートも次のように環境変数に記述します。

SearchAltTemplate altsearch altsearch.tmpl
SearchAltTemplate feed results_feed.tmpl

MT4iの作者、太鉄さんにご指摘頂き気付きました。ありがとうございます。

冗長になりがちな Movable Type の出力ページの、余分な改行・空行などを全部取ってくれる「Source Code Cleaner(ソースコード・クリーナー) - Movable Type プラグイン」がバージョン 2.0 にアップデートされたのを機会に導入してみました。

バージョン 2.0 からの便利機能として、tabindex 属性、accesskey 属性、外部リンクに class 属性まで付けられます。

JavaScriptやCSSのMinify機能を実現するプラグイン、Minifier Pluginを導入しました。

膨れ上がっていたCSSファイルのサイズが小さくなりました。読み込み速度もあがるかな?

「Movable Type 4.2 パーフェクトガイド」(小粋空間の荒木勇次郎著:毎日コミュニケーションズ)に、メールマガジンを発行する方法について解説がありました。

具体的には、本を読んでいただくとして自分自身の覚書。

手順

1.購読・購読解除用のインデックステンプレートを新規に作成し、次のフォームを埋め込む。

<div class="section">
<h3>メールマガジンの購読</h3>
<div class="asset-content">
<p>次のフォームからメールアドレスを登録するだけで、このサイトのブログをメールで受け取ることができます。どうぞご利用ください。</p>
<form method="post" action="<$mt:CGIPath$>mt-add-notify.cgi">
<div id="comments-open-data">
<input type="hidden" name="blog_id" value="<$mt:BlogID$>" />
<input type="hidden" name="_redirect" value="<$mt:BlogURL$>" />
<div id="comment-form-email">
<label for="registry-email">登録するアドレス:</label><br />
<input name="email" for="registry-email" size="30" />
</div>
</div>
<div id="comments-open-footer">
<input type="submit" class="submit" value="購読する" />
</div>
</form>
</div>
<h3>メールマガジンの購読を解除</h3>
<div class="asset-content">
<p>メールマガジンの購読を解除するには、次のフォームにメールアドレスを入力して「購読を解除」をクリックしてください。</p>
<form method="post" action="<$mt:CGIPath$>mt-add-notify.cgi">
<div id="comments-open-data">
<input type="hidden" name="__mode" value="unsubscribe" />
<div id="comment-form-email">
<label for="deregistration-email">解除するアドレス:</label><br />
<input name="email" id="deregistration-email" size="30" />
</div>
<div id="comments-open-footer">
<input type="submit" class="submit" value="購読を解除する" />
</div>
</div>
</form>
</div>

2.システムの「ブログ記事の共有」テンプレートを次のように書き換え。

富山市議会議員 しきだ博紀 メールマガジン「<$mt:EntryTitle$>」
<$mt:EntryDate mail="1" format="%x"$>
<mt:If name="object_type" eq="entry">表示する<mt:Else>表示する</mt:If>: <mt:SetVarBlock name="entry_status"><$mt:EntryStatus$></mt:SetVarBlock><mt:If name="entry_status" eq="Publish"><$mt:EntryPermalink$><mt:Else><$mt:Var name="entry_editurl"$></mt:If>
-------------------------------------
<mt:If name="send_excerpt">
<$mt:EntryExcerpt wrap_text="72"$>
-------------------------------------</mt:If>
<mt:If name="message">メッセージ: 
<$mt:Var name="message"$>
-------------------------------------</mt:If>
<mt:If name="send_body">
<$mt:EntryBody remove_html="1" wrap_text="72"$>
-------------------------------------</mt:If>
■ 富山市議会議員 しきだ博紀
e-mail info@shikidahironori.jp
Twitter http://twitter.com/h_shikida
公式サイト http://<$mt:BlogHost$>
購読と解除(PCから) http://<$mt:BlogHost$>/blog/mail_magazine.html
購読と解除(携帯から) http://<$mt:BlogHost$>/blog/m/mail_magazine.html

3.必要に応じ、lib/MT/L10N/ja.pmを書き換えて読確認メールのメッセージと、メールマガジンのタイトルを変更することもできます。このサイトでは、タイトルに関するの982行目のみを変更していますが、詳しくは書籍をご覧ください。

'[_1] Update: [_2]' => 'メルマガ: [_1] - [_2]',

4.あとはブログ記事の編集画面で「共有」をクリックすれば、アドレス帳に登録されたメールアドレスへ、ブログ記事を送ることが出来ます。

履歴が残らないなどの点はありますが、とりあえず手軽にメールマガジンを発行したい場合に使えます。本当はプラグインがあればいいのだけれど。

【2010-04-21 追記】
mt-config.cgiに
EnableAddressBook 1
と記述しないとアドレス帳が有効になりません(一覧に表示されません)
photo
Movable Type 4.2 パーフェクトガイド
毎日コミュニケーションズ 2008-07-31

by G-Tools , 2009/11/09

オリジナルのcssでデザインした場合、コメントのサインイン画面でロード中の画像が表示されない場合は、次のような画像を用意し(以前書いたように、このサイトでは、ajaxload.infoというサイトで作成したものを使用しています。)

ロード中の画像(ajax-loader.gif)

スタイルシートに次の記述をします。

.status-indicator {
    display: inline;
    height: 16px;
    width: 16px;
    background: url(../images/ajax-loader.gif) no-repeat left center;
    padding: 2px 7px;
}

当然のことながら、heightとwidthは画像の大きさに合わせてください。backgroundのurlも画像へのパスもか各自の環境にあわせて書き換えを。

テンプレートだけで関連するエントリーを表示する方法の覚書。

こんなサイトで使用してます。

いくつかの方法がありますが二つご紹介。なお、テンプレートタグは当方で使用しているものに変更してあります(ul要素ではなくdl要素を使うなど)。

1. MTSetVar(Block)/MTIfタグの具体的な利用例。 - Junnama Onlineで公開されている方法。

<mt:EntryIfTagged>
<div class="asset-more">
<mt:SetVarBlock name="entrytags"><mt:EntryTags glue=" OR "><$mt:TagName$></mt:EntryTags></mt:SetVarBlock>
<mt:SetVarBlock name="thisid"><mt:EntryID></mt:SetVarBlock>
<mt:SetVar name="match" value="0"><mt:Ignore><!--←当該エントリーがマッチしたかどうか--></mt:Ignore>
<mt:Entries tag="$entrytags" lastn="11"><mt:Ignore><!--←10件でなく11件にしておく--></mt:Ignore>
<mt:SetVarBlock name="eid"><mt:EntryID></mt:SetVarBlock>
<mt:SetVarBlock name="entryCount"><mt:EntriesCount></mt:SetVarBlock><mt:Ignore><!--←何件マッチしたか--></mt:Ignore>
<mt:If name="entryCount" gt="1">
<mt:Ignore><!--↑1件以上マッチしたら出力 / 1件だったら当該エントリのみと判断できる--></mt:Ignore>
<mt:EntriesHeader><dl class="relatedEntry">
<dt><$mt:GetVar name="entrytags"$>の記事</dt>
<dd>
<ul></mt:EntriesHeader>
<mt:Unless name="__last__"><mt:Ignore><!--←ループの最後でなければ--></mt:Ignore>
<mt:Unless name="eid" eq="$thisid">
<li><a href="<mt:EntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><mt:EntryTitle></a></li>
<mt:Else>
<mt:SetVar name="match" value="1"><mt:Ignore><!--←当該エントリーがマッチしたことを覚えておく!--></mt:Ignore>
</mt:Else>
</mt:Unless>
<mt:Else><mt:Ignore><!--←ループの最後ならば--></mt:Ignore>
<mt:If name="match"><mt:Ignore><!--←当該エントリと既に一致していた場合は11件目を表示--></mt:Ignore>
<li><a href="<mt:EntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><mt:EntryTitle></a></li>
<mt:Else>
<mt:If name="__counter__" ne="11"><mt:Ignore><!--←11件に満たない場合も無条件に表示--></mt:Ignore>
<li><a href="<mt:EntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><mt:EntryTitle></a></li>
</mt:If>
</mt:Else>
</mt:If>
</mt:Else>
</mt:Unless>
<mt:EntriesFooter></ul>
</dd>
</dl></mt:EntriesFooter>
</mt:If>
</mt:Entries>
</div>
</mt:EntryIfTagged>

2. Movable Type 備忘録 - エントリ・タグを使って関連するエントリ一覧を表示だとこんな感じ

<mt:EntryIfTagged>
<div class="asset-more">
<mt:SetVarBlock name="entid"><$MTEntryID$></mt:SetVarBlock>
<mt:SetVarBlock name="enttags"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></mt:SetVarBlock>
<MTEntries tags="$enttags" lastn="6">
<MTEntriesHeader>
<dl class="relatedEntry">
<dt><$mt:GetVar name="enttags"$>の記事</dt>
<dd>
<ul>
</MTEntriesHeader>
<mt:SetVarBlock name="cur"><$MTEntryID$></mt:SetVarBlock>
<mt:If name="entid" ne="$cur">
<li><a href="<MTEntryPermalink>" title="<$mt:EntryTitle encode_html="1"$>に移動します"><$MTEntryTitle$></a></li>
</mt:If>
<MTEntriesFooter>
</ul>
</dd>
</dl>
</MTEntriesFooter>
</MTEntries>
</div>
</mt:EntryIfTagged>