Thunderbird で返信メールをスレッドに含める方法

June 30,2009 12:55 AM
Category:[PC]
Tag:[, ]
Permalink

Thunderbird で返信メールを元メールのスレッドに含める方法を紹介します。

返信メールを元メールのスレッドに含める

メールソフト「Thunderbird」は、受信メールをスレッド表示する機能があります。これを利用すれば、メールの返信履歴を追跡しやすく、私は大変重宝しています。

受信メールのスレッド表示

ただし、自分からの返信メール(自分のメールアドレスが送信先に含まれていないもの)については、Thunderbird のデフォルト設定では、利用しているアカウントの「送信済みトレイ」に保存されるので、受信メールと併せてスレッド表示することができません。

ネットを検索したところ、返信メールもスレッドに含める方法がありましたので、本エントリーで紹介します。

設定後の動作は、返信メールを「送信済みトレイ」ではなく、返信したメールのフォルダに保存するようになります。

1.設定方法

メニューバーより、「ツール」→「アカウント設定」を選択

メニューバー

アカウント設定画面の「コピーと特別なフォルダ」をクリック

アカウント設定画面

「コピー」の中にある「返信元のメッセージと同じフォルダに返信を保存する」をチェックして「OK」をクリック。

「コピー」設定

以上です。フォルダを振り分けている場合も、送信メールは返信元のフォルダにきちんと保存されます。

2.注意点

送信メールは「送信済みトレイ」に保存されなくなります。ただし、新規作成メールは「送信済みトレイ」に保存されます。

3.参考

参考ページは下記です。ありがとうございました。

MozillaZine.jp :: トピックを表示 - 送信メールもスレッド表示したい
Comments [0] | Trackbacks [0]

PowerEdit プラグインでカスタムフィールドを表示する(テキスト編)

Movable Type のブログ記事一括編集画面に複数のフィールドを表示する PowerEdit プラグインをカスタマイズして、カスタムフィールドを表示する方法を紹介します。

変更前
PowerEdit プラグイン(変更前)

変更後(赤枠部分を追加)
PowerEdit プラグイン(変更後)

時間の都合上、解説を複数回に分け、今回はテキストのカスタムフィールドを表示する方法を示します。なお、アップロード系のカスタムフィールドについては対象外です。

1.カスタムフィールドを作成する

次のような「テキスト」カスタムフィールドを作成します。

「テキスト」カスタムフィールドを作成

ベースネームはシステムで生成した「cf」という値を用います(ベースネームがプラグインカスタマイズのキモになります)。

以下、この設定を例に説明します。

2.entry_table.tmpl の編集

plugins/CMSContext/tmpl/alt-tmpl/include/entry_table.tmpl の 255 行目あたりに青色のサブテンプレートを追加します。

...前略...
<mt:ignore>===================================</mt:ignore>
        <mt:if name="is_power_edit">
            <tr>
                <th><__trans phrase="Text"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="text_<$mt:var name="id"$>"><mt:entryBody convert_breaks="0" escape="html" /></textarea></td>
            </tr>
            <tr>
                <th><__trans phrase="Extended entry"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="text_more_<$mt:var name="id"$>"><mt:entryMore convert_breaks="0" escape="html" /></textarea></td>
            </tr>
<mt:ignore>
            <tr>
                <th><__trans phrase="Excerpt"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="excerpt_<$mt:var name="id"$>"><mt:entryExcerpt convert_breaks="0" no_generate="1" escape="html" /></textarea></td>
            </tr>
</mt:ignore>
            <tr>
                <th><__trans phrase="EntryProductName"></th>
                <td colspan="9"><textarea style="width:760px" type="text" name="customfield_cf_<$mt:var name="id"$>"><mt:entryProductName escape="html" /></textarea></td>
            </tr>
        </mt:if>
</mt:cmscontext>
<mt:ignore>===================================</mt:ignore>
...後略...

追加したタグの意味は次の通りです。

  • <__trans phrase="EntryProductName">:見出しになります。phrase 属性の値はなんでもかまいません。見出しの日本語ローカライズを行なう場合は4項を参照してください。
  • textarea 要素の name 属性:値に「customfield_cf_<$mt:var name="id"$>"」を設定します。「cf」はベースネームなので、ご自身のカスタムフィールドのベースネームに適宜書き換えてください。その他の部分は固定です。
  • textarea 要素の内容:MTEntryProductName タグを記述します。

3.PowerEdit.pl の修正1

plugins/PowerEdit/PowerEdit.pl の 24行目あたりに、青色のコードを追加します。

...前略...
use MT::Util qw( asset_cleanup );
use MT::I18N qw( first_n_text );
use CustomFields::Util qw( save_meta ); 
 
our $VERSION = '0.07';
...後略...

3.PowerEdit.pl の修正2

plugins/PowerEdit/PowerEdit.pl の 180 行目(save_power_edit 関数の中)あたりに、青色のコードを追加します。

...前略...
sub save_power_edit {
    my ($cb, $app, $entry, $org) = @_;
    my $q = $app->param;
    my $id = $entry->id;
    if ($id) {
...中略...
        unless ($q->param('allow_pings')) {
            if ($q->param('allow_pings_' . $id )) {
                $entry->allow_pings(1);
            } else {
                $entry->allow_pings(0);
            }
        }
        unless ($q->param('customfield_cf')) {
            my $meta;
            if ($q->param('customfield_cf_' . $id )) {
                $meta->{cf} = $q->param('customfield_cf_' . $id );
            } else {
                $meta->{cf} = '';
            }
            &save_meta($entry, $meta);
        }
    }
    return 1;
}
...後略...

赤色で示す部分がベースネームに対応します。ベースネームはご自身のカスタムフィールドのベースネームに適宜書き換えてください。

4.見出しのローカライズを行いたい場合

見出しを日本語で表示したい場合、エレガントな方法ではありませんが、lib\MT\L10N/ja.pm の最後から4行目あたり(「);」の直前の行)に下記のような1行を追加してください。

'EntryProductName', '商品名',

この作業は必須ではありません。

5.テキストのカスタムフィールドを複数表示する場合

2項と4項の内容を、必要なカスタムフィールド分、追加してください(ベースネームはそれぞれ異なります)。

Comments [5] | Trackbacks [1]

世襲議員のからくり

June 28,2009 12:03 AM
Category:[書籍]
Tag:[, ]
Permalink

ジャーナリズム崩壊」に続いて読み始めました。

世襲議員のからくり (文春新書)世襲議員のからくり (文春新書)
上杉 隆

文藝春秋 2009-05
売り上げランキング : 1703

Amazonで詳しく見る
by G-Tools

世襲議員の生い立ちと、そこから生まれる、庶民とは違った物事の考え方、そして世襲による政治資金管理団体の非課税や後援会組織の継承、メディアによる世襲制の補完といった、いわゆる「二世・三世」議員が当たり前のように政治の中心的役割を担っている理由の裏側をレポートしたものです。

第1章 二世の投げ出しはなぜ続く
世襲議員の出現
「他の人にやってもらうほうがいい」
首相辞任は気象情報以下のニュース
安倍の場合
<わたくしが出ていかなくてはならない>
福田の場合
麻生の場合
<日本人は誇り高い民族>
お茶の淹れ方がわからない
「笑いを取る」のが麻生スタイル
「下座に座る人じゃない」
第2章 民主党の二世たち
小沢一郎の場合
西松事件と「王国」の継承
鳩山家の場合
渡辺恒雄の馬で遊ぶ
田中真紀子の場合
第3章 からくりその1 政治資金管理団体の非課税相続
特権的優遇制度
「ど真ん中のストライク」
小渕優子の場合
迂回寄付は相続の作法
橋本元首相の場合
森喜朗、息子への「特別な支援」
世襲こそ、機会の平等を損なう
第4章 からくりその2 後援会組織の世襲
故人の遺志とは「無関係」
「絶対に落ちない」安倍の選挙
「洋子と戦った感じ」
小選挙区制で"棲み分けた"後援会
政治家本人の資質は問わず
なぜ秘書が後継ではいけないのか
福田後援会が決めた「後継・康夫」
後援会の作り方
原動力は婦人部
後援会こそ最大の問題
第5章 からくりその3 どんな無理もする「看板の世襲」
中村喜四郎の「襲名披露」
「一郎」「太郎」が多い理由
「親バカ」で済まない小泉の世襲
石原家の場合
政治団体もおいしい相続対象
先代の後援会を解散して落選
第6章 世襲大国日本
日本の異常な世襲率
政党活動歴重視のヨーロッパ
英国に世襲議員が少ない理由
チャーチルの子孫もただの人
日本の「選挙制度見直し」は?
「個人のブランド」がものを言う
富士急グループオーナー・堀内光雄の場合
赤城徳彦の場合
大選挙区でも変わらない世襲の強さ
第7章 国民の意思が世襲を断ち切る
民主党「世襲規制」も案も結局ザル法案?
野田佳彦委員長との一問一答
「警鐘を鳴らす」にとどまる
自民党・若手に拡がる不安
「公募」と「予備選」でも世襲が残る
「他人の釜の飯」を食った二世は強い
経済界に世襲は絶えた
世襲したければ上場するな
継がせなかった議員
おわりに 政治記者にはなぜ政治家の二世が多いのか
Comments [0] | Trackbacks [0]

呉竹筆ペン

June 27,2009 1:55 AM
Category:[ダジャレ]
Tag:[]
Permalink
Comments [0] | Trackbacks [0]

アップロードしたファイルをブログ記事に挿入する

June 26,2009 12:03 AM
Category:[管理画面]
Tag:[, , ]
Permalink

Movable Type の「ファイルのアップロード」を利用して、ファイルをアップロード(=ブログ記事を作成しない)後、そのファイルをブログ記事やウェブページに関連付ける方法です。ご質問を頂いたので紹介致します。

1.画像ファイルとブログ記事を関連付ける方法

ブログ記事(またはウェブページ)の作成・編集画面で「画像の挿入」アイコン(またはその右の「ファイルの挿入」)をクリックします。

「画像の挿入」アイコン

画像の挿入画面が表示されます。

「画像の挿入」アイコン

挿入したい画像をクリックし、「次へ」をクリックします。「新しい画像をアップロード」をクリックすれば、新しいファイルをアップロードすることもできます。

アイテムの挿入画面

「ファイルオプション」画面で、サムネイルの作成や表示位置を設定し、「完了」をクリックします。

「ファイルオプション」画面

これで画像が挿入されました。

画像が挿入

テキストフォーマットを変更すると、「新規作成」→「ファイルアップロード」と同時にブログ記事を作成したときと同じ(X)HTMLタグが挿入されていることが分かります。

画像が挿入

2.画像以外のファイルを挿入する場合

画像以外のファイルをブログ記事に挿入するときは、一番最初の手順で、「ファイルの挿入」)をクリックします。

画像が挿入

「画像の挿入」と異なるのは、選択画面で、画像ファイル以外のファイルも選択対象となります。

画像が挿入

Comments [0] | Trackbacks [0]

Movable Type のオープンソース「Melody」

June 25,2009 1:55 AM
Category:[Melody]
Tag:[]
Permalink

Movable Type のオープンソースCMSプロジェクト「Melody」が立ち上がりました。

MTOS が Movable Type のコア機能となる形態とは異なり、Melody は MT のディストリビューションとして、より迅速な開発を目指すようです。

melody

ということで早速、開発中のコードをダウンロード・インストールしてみました。コードは下記のページからダウンロードできます。インストール方式は Movable Type と同じです。

openmelody's melody at master - GitHub

インストールウィザードが少し変わっています。

melodyインストールウィザード

管理画面はまだ MT のままです。クレジットは一応変わってました。

melodyクレジット

テンプレートタグ周りでは、MTBlogs タグに glue モディファイアが追加され、またいくつかのバグフィックスが行なわれています。

Comments [0] | Trackbacks [0]

Movable Type の変数の初期化に関するまとめ

June 24,2009 12:55 AM
Category:[変数]
Tag:[, ]
Permalink

Movable Type の変数の初期化について、「45式::雑記 - MTで変数の値を初期化する方法」に便乗して、まとめっぽくエントリーします。

1.変数を「0」で初期化する

変数を 0 で初期化する場合には value モディファイアの値に 0 を設定します。

<mt:SetVar name="foo" value="0" />

2.変数を空の文字列で初期化する

45式::雑記 - MTで変数の値を初期化する方法」で解説されている通りです。

主な初期化方法は次の2通りです。ひとつは value モディファイアの値を設定しません。

<mt:SetVar name="foo" value="" />

もうひとつは、value モディファイア自体を記述しません。

<mt:SetVar name="foo" />

単純な変数以外に、設定済みの配列変数やハッシュ変数も上記の方法で初期化できます。

3.変数を未定義にする

変数は MTSetVar タグで1項や2項のお作法で設定されていない限り、未定義の状態です。MTSetVar タグなどで一旦定義した変数を未定義にするには undef 関数を利用します。

<mt:SetVar name="undef(foo)" />

利用するケースは少ないと思いますが、未定義にすることで Perl の defined による判定が行なえます。Movable Type で defined を利用するには、test モディファイアを使用します。

変数の定義・未定義のチェックは、下記のサブテンプレートでお試しください。

a.変数が定義されていない状態でのチェック

<mt:If test="defined $foo">
defined!
<mt:Else>
undef!
</mt:If>

aの実施結果

undef!

b.変数を定義した後のチェック

<mt:SetVar name="foo" value="0" />
<mt:If test="defined $foo">
defined!
<mt:Else>
undef!
</mt:If>

bの実施結果

defined!

c.変数を undef した後のチェック

<mt:SetVar name="undef(foo)" />
<mt:If test="defined $foo">
defined!
<mt:Else>
undef!
</mt:If>

cの実施結果

undef!

undef 関数は、配列変数やハッシュ変数にも利用できます。

4.変数の NULL 設定について

Movable Type のテンプレートタグには、NULL 判定に該当する処理はありません。MT の変数が Perl に依存していると考えれば、Perl に NULL が存在しないのがその理由と思います。

なおネットで調べると、DB の NULL については、変数未定義の状態が該当するようです。

燈明日記 - DBでのNULLはPerlではどうなる?

また、PHP には NULL 判定がありますが、is_null() 関数が true を返却する条件として「未定義の変数」も含まれています。

つまり3項の、変数を未定義にする動作が NULL 設定に等しい(または近い)状態と思われます。

Comments [10] | Trackbacks [0]

Amazon 携帯サイト「Amazile」

June 23,2009 12:55 AM
Category:[Amazon, お知らせ]
Tag:[, , ]
Permalink

Amazon を携帯電話で商品検索するサイト「Amazile」を公開します。検索から購入までの操作が可能です。PC からも利用可能です。

Amazile

下記の QR コードでもサイトに移動できます。

Amazile

Amazile というサイト名は、「Amazon + mobile」の造語です。「アマザイル」と呼んでください。

このサイトは特に目新しい機能があるわけではなく、シンプルな検索および購入機能を提供します。実はかれこれ3年ほど前に Amazon Web サービスを利用して練習がてら作ったもので、特に公開することもなく、そのまま放置してしまっていました。最近ふと思い立ってプログラムを少し修正したので、これを機会に公開したいと思います。

表示は DoCoMo のみ確認しています(他キャリア分はエミュレータを使えばいいんですが未確認です)。また、サーバは「さくらインターネット」のスタンダードプランを使っているので、集中的に負荷がかかると動かなくなるかもしれません。

ということで、どうぞごひいきに。

Comments [0] | Trackbacks [0]

Firefox3 と Firefox3.5 の共存

June 22,2009 12:03 AM
Category:[Firefox]
Tag:[]
Permalink

Firefox3 と Firefox3.5 の Windows での共存方法を紹介します(Firefox3.5 は、2009年6月22日現在はRC2) 。すでに Firefox2 と Firefox3 の共存を行い、さらに Firefox3.5 の共存を行いたい場合にも使えます。

Firefox3 と Firefox3.5 の共存

以下、共存するための手順を紹介します。注意事項は次の通りです。

  • 1項のバックアップは必ず行ってください
  • 手順の途中でFirefox3.5 を絶対に起動しないでください
  • うっかり Firefox3.5 を起動させてしまった場合は、6項に進んでください(1項の作業を行なっていることが条件です)

1.Firefox3 のプロファイルのバックアップ

本作業中にインストールした Firefox3.5 をうっかり起動してしまうと、Firefox3 のプロファイル(=ブラウザのオプション設定やアドオンなどが保存されているフォルダ)が、Firefox3.5 のプロファイルで上書きされてしまいます。上書きされてしまうと、Firefox3 の以前のプロファイルは二度と復元することができません。

とうことで、Firefox3.5 をインストールする前に、Firefox3 のプロファイルを、フォルダごとバックアップしておきます。

「Firefox3 のプロファイルのフォルダ」のありかは、プロファイル名が「default」の場合、次のパスになります(普通にインストールしていれば、プロファイル名は自動的に「default」になります)。

C:¥Documents and Settings¥[ユーザ名]¥Application Data¥Mozilla¥Firefox¥Profiles¥xxxxxxxx.default
[ユーザ名]
ご自身のログインユーザ名
xxxxxxxx.default
ピリオドの前半はFirefox がつけた任意の半角英数文字で無関係、ピリオドの後半がプロファイル名です。

この「xxxxxxxx.default」フォルダごと、別のフォルダにバックアップ(コピー)してください。

1.1 プロファイル名が「default」以外、またはプロファイル名が分からない場合

Firefox3 を「default」以外のプロファイル名で起動している場合、または起動しているプロファイル名が分からない場合、

C:¥Documents and Settings¥[ユーザ名]¥Application Data¥Mozilla¥Firefox¥Profiles¥xxxxxxxx.プロファイル名

の、「xxxxxxxx.プロファイル名」のフォルダをバックアップすればOKです。

ちなみに私は「firefox3」というプロファイル名で Firefox3 を起動しているので、プロファイルのフォルダは「xxxxxxxx.firefox3」となっています。

1.2 複数のプロファイルを持っている場合

Firefox1.5 や Firefox2 のプロファイルなど、複数のプロファイルを持っている場合、それらをすべてバックアップしておくと良いでしょう。

2.Firefox3.5 のインストール

Firefox3.5 RC2 をダウンロードし、ダウンロードアーカイブをダブルクリックして、「次へ」をクリック(下)。

Firefox3.5 のインストール1

カスタムインストールを選択して、「次へ」をクリック(下)。「標準インストール」をクリックすると、インストール済みの Firefox のフォルダに上書きインストールしてしまう可能性があるので、選択しないでください。 *1

Firefox3 beta のインストール2

インストール先フォルダを「Mozilla Firefox 3_5」などに変更し、「次へ」をクリック(下)。

Firefox3 beta のインストール3

すべてチェックを外して、「次へ」をクリック(下)。チェックしておくと、既存の Firefox のものに上書きしてしまいます(説明の後半でデスクトップのショートカットから起動できる設定を行います)。

Firefox3 beta のインストール4

そのまま「次へ」をクリック(下)。

Firefox3 beta のインストール5

「インストール」をクリック(下)。これでインストールが開始します。

Firefox3 beta のインストール6

「今すぐ Firefox を起動」のチェックを外して「完了」をクリック(下)。チェックを外さないで完了すると Firefox3.5 が起動し、Firefox3 のプロファイルが上書きされてしまいます。

Firefox3 beta のインストール5

3.プロファイルの作成

タスクバーの[スタート]-[ファイル名を指定して実行]を選択(下)。

プロファイルの作成1

「firefox -createprofile firefox3_5」を入力(下)。これで Firefox3.5 用の「firefox3_5」という名前のプロファイルが作成されます。

プロファイルの作成2

「firefox3_5」という名前は他の名前でも構いません。ここでは「firefox3_5」で説明を進めます。

4.ショートカットの作成

インストールした Firefox3.5 を起動するためのショートカットを作成します。

エクスプローラーで C:¥Program Files¥Mozilla Firefox 3_5 に移動し、firefox.exe(拡張子を表示していない場合は firefox)を右クリックして、「ショートカットの作成」を選択します(下)。

ショートカットの作成

間違って、firefox.exe をダブルクリックしないようにしてください。クリックすると Firefox3.5 が起動し、Firefox3 のプロファイルが上書きされてしまいます。

5.起動オプションの追加

Firefox3、Firefox3.5 を起動するとき、それぞれ異なるプロファイルを指定して起動するよう、起動オプションを追加します。

5.1 Firefox3.5 の起動オプションの追加

4項で作成したショートカット「firefox.exe へのショートカット(または firefox へのショートカット)」を右クリックして、「プロパティ」 を選択(下)。

起動オプションの追加1

「リンク先」欄の末尾に、半角スペースをいれた後、

-p firefox3_5 -no-remote

を追加して、「OK」をクリック(下)。

起動オプションの追加2

余談ですが、「-no-remote」は、ひとつのアプリケーションを同時に複数起動するためのオプションです。

mozilla developer center

この後、ショートカットをデスクトップに移動し、「Mozilla Firefox 3.5」など、適当な名前に変更しておきます。

ショートカットをデスクトップに移動

Firefox 3.5 は、5.2の作業が完了するまで起動しないでください。

5.2 Firefox3 の起動オプションの追加

デスクトップの「Mozilla Firefox(Firefox3)」を右クリックして「プロパティ」 を選択(下)。注:前項のショートカットではなく、既存の Firefox3 のショートカットです。

起動オプションの追加3

「リンク先」欄の末尾に -p オプションが設定されているか、設定されていないかで、次のいずれかの作業を行なってください(設定したおぼえがなければ、5.2.2項へ進んでください)。

5.2.1 -p オプションが設定されている場合

「リンク先」欄の末尾に -p オプションが設定されている場合、この項の作業は不要ですが、念のため、-p オプションの後に設定されているプロファイル名と、1項のプロファイルが一致していることを確認してください。

OKであれば、Firefox3 および Firefox3.5 を起動して、両方とも立ち上がることを確認し、成功すればすべての作業は完了です。

5.2.2 -p オプションが設定されていない場合

「リンク先」欄の末尾に -p オプションが設定されていない場合、-p オプションの後に設定するプロファイル名を確認します。

プロファイル名は、1項のバックアップ時のプロファイル名(通常は「default」)か、タスクバーの[スタート]-[ファイル名を指定して実行]を選択し、「firefox -p」を入力します。これで現在使用しているプロファイルが表示されます(確認した後は「終了」をクリックしてください)。

私の環境の場合は「firefox3」です(下)。

プロファイル名の確認

プロファイル名が確認できたら、末尾に半角スペースをいれた後、

-p [プロファイル名] -no-remote

を追加して、「OK」をクリック(下)。プロファイル名が「default」であれば「-p default -no-remote」を設定します。

起動オプションの追加4

これでデスクトップの Firefox3 と Firefox3.5 のショートカットをそれぞれ起動すれば、同時に開くことができます。

Firefox2 と Firefox3 beta の共存

6.共存に失敗した場合

Firefox3.5 をアンインストールし、Firefox3 をアンインストール→再インストールし、バックアップしていた Firefox3 のプロファイルを、インストールした Firefox3 のプロファイルに上書きしてください。プロファイルのフォルダ名は異なる名称になっていますが、末尾が「.default」になっているフォルダに上書きすればOKです(上書きするのはその中にあるフォルダやファイルだけです。フォルダ名自体は書き換えないでください)。

この状態で Firefox3 を起動し、設定が元に戻っていることを確認したら、Firefox3 を終了し、再度 Firefox3.5 の共存にチャレンジしてください。


*1:Firefox3 のインストールフォルダがデフォルトと異なるフォルダ名であれば上書きされないと思いますが、確認の上、作業を進めてください。
Comments [4] | Trackbacks [1]

魔法使いの台所

June 21,2009 2:33 AM
Category:[書籍]
Tag:[, ]
Permalink

魔法使いの台所」という本を、Amazon アソシエイトをチェックしているときに見つけました。サブタイトルに「まとめづくりと手早い料理で夕食用意が30分」とあるように、知恵と工夫で、忙しい方でも楽しく栄養を損なわない料理ができることを目的とした本です。

1990年に初版が出版され、今回購入したものは2009年の第34刷という、ベストセラーです。

魔法使いの台所―まとめづくりと手早い料理で夕食用意が30分魔法使いの台所―まとめづくりと手早い料理で夕食用意が30分
婦人之友社編集部

婦人之友社 1990-05
売り上げランキング : 525

Amazonで詳しく見る
by G-Tools

単純に一品ずつの調理時間を短くするだけでなく、材料のそろえ方、献立の考え方、食材の整理の仕方など、料理に必要なさまざまな作業に焦点をあて、台所に立つ時間を短縮するためのノウハウが詰まっています。

以下に目次を掲載しておきます。各目次の中にはさらに具体的なメニューがあります(量が多すぎるのでここでは割愛しました)。ざっと数えたところ、約250品目ありました。

●はじめに
●魔法使いの台所10points
●忙しいときの食卓はまず「栄養バランス」から
●今、食卓を考える
●献立と買物を上手に組み合わせて
●目安量を覚えて買物を
●一日の栄養所要量から割りだした食品の目安量とパターン
●さすがひと手間かけた保存食
一度の手間が二十回分に
ここからゆとりが生まれます おすすめの保存食14品
玉葱ドレッシング漬け
蒸しどり
炒め玉葱
挽肉炒め(玉葱入り)
マッシュポテト
肉味噌
五目の具
白和えの衣
夏野菜のスープ煮
揚げ茄子
煮ぬき豆
薄焼き卵
焼き塩鮭
ささみ(吉野どり・揚げどり)
乾物はしまう前にちょっとここまで
手軽にできて味も広がる基本のソースの作りおき
基本のソース、たれの応用
つくりおいた"ルー"でポタージュも簡単に
だし、スープをとるのは簡単です
●野菜をたくさんとる工夫
洗っておく それだけのことが野菜を身近に
茹でておく 同じ手間なら少し多めに
かるく塩をしておく それだけで野菜が一品ふえる嬉しさ
酢油漬けでも保存
つくりおき野菜のおかず
料理をひと味かえるザワークラフト・紫キャベツのピクルス
食品の腐敗と保存の基礎知識
●前もっての心づもりが味をよく
先手仕事で外出前に夕食準備
主菜に下味をつけておくと
魚も漬けて
朝からコトコト 肉も野菜もたっぷりと
小さな工夫と心がけ
私の愛用している"はかせ鍋"
●まとめ料理は心のゆとり
蒸し豚
塩豚
ボイルドタン
牛すね肉ワイン煮
とり肉を煮込む
豚のかたまり肉に味をつけて
同じたねでつくる挽肉料理
和風ハンバーグのたねで即席しゅうまいも
ほんとうに忙しい日はご飯もので
〆鯖
オイルサーディン
よい労力と経済でゆたかな食卓を
●手早い主菜
魚料理
牛肉料理
とり肉料理
豚肉料理
●手軽な副菜
青菜の小鉢 毎日のことだからつくり手も食べ手も新しく
忙しいときこそ和えものでちょっとした演出を
心がけてとりたい海藻類 わかめの得意料理をふやす
古くからの食べ方に新しさも加えて豆腐料理の充実を!
納豆を使って
こんなポテト料理なら食卓もあたたかい
単調になりがちな炒めものに旨味や辛味をひと味くわえて
火を通して野菜をたっぷりと
●私のアシスタントはこの小道具たち
●身近にあるトレイで整理上手に
●みんなのキッチン
Comments [0] | Trackbacks [0]

喜多方ラーメン

June 20,2009 12:03 AM
Category:[ダジャレ]
Tag:[]
Permalink
Comments [0] | Trackbacks [0]

Movable Type 4.26 から 4.261 へのアップグレード(データベース更新あり)

June 19,2009 1:55 AM
Category:[4.261, アップグレード]
Tag:[, , ]
Permalink

当ブログを、Movable Type 4.26 から 4.261 へアップグレードしました。

4.261 では「Movable Type 4.26 のスケジュールタスク実行時にエラーが発生する現象について」が解消されていますが、4.26 でスキーマバージョンが変更とならなかった(=データベースのスキーマが変更されなかった)バグも修正されています。ということで、すでに 4.26 にアップグレードした人は、4.261 へのアップグレードを推奨します。

その他、ブログ記事編集画面の表示オプションのtypo も修正されています。

以下、「Movable Type 4.25 から 4.26 へのアップグレード」と異なる手順のみ掲載します。

9.ブラウザから mt.cgi にアクセス

mt.cgi にアクセスするとアップグレードが開始画面になるので「アップグレード開始」をクリックします。

サインインします。

データベースのアップグレードが実行されます。終了したら「Movable Type に戻る」をクリックします。

ブログ管理画面にアクセスできれば完了です。

Comments [18] | Trackbacks [1]

Movable Type 4.261 リリース

June 18,2009 10:22 AM
Category:[4.261]
Tag:[, ]
Permalink

Movable Type 4.261 がリリースされました。情報は MTOS のみですが、基本ライセンス版ももうじき出ると思います。

Movable Type 4.261 リリース

先日エントリーした「Movable Type 4.26 のスケジュールタスク実行時にエラーが発生する現象について」も解消されているようです。

とりあえずお知らせまで。

追記:4.26 と 4.261 の差分ファイルは下記です。

  • lib/MT/ConfigMgr.pm
  • lib/MT.pm
  • mt-check.cgi
  • php/mt.php
  • tmpl/cms/edit_entry.tmpl
Comments [0] | Trackbacks [0]

Movable Type テンプレートタグの簡略化まとめ

June 18,2009 1:55 AM
Category:[テンプレートタグ]
Tag:[, ]
Permalink

Movable Type のテンプレートタグの簡略化についてまとめました。とりあえず思いついたものを並べておきます。

一部のより詳細な情報は、「blog.aklaswad.com - MTタグの書き方を調べてみました。」にありますので、そちらをご覧ください。

1.name モディファイアの簡略化

テンプレートタグの name モディファイアは、値以外の部分を省略できます。

1.1 ファンクションタグの場合

変更前

<$mt:SetVar name="foo" value="1"$>

変更後

<$mt:SetVar foo value="1"$>

1.2 ブロックタグの場合

変更前

<mt:If name="__first__">
...中略...
</mt:If>

変更後

<mt:If __first__>
...中略...
</mt:If>

2.変数の設定・取得の簡略化

MTSetVar タグ、MTGetVar タグは MTVar タグで置き換えられます。

変更前

<$mt:SetVar name="foo" value="1"$>
<$mt:GetVar name="foo"$>

変更後

<$mt:Var name="foo" value="1"$>
<$mt:Var name="foo"$>

1項の省略記法を追加

<$mt:Var foo value="1"$>
<$mt:Var foo$>

3.配列の設定を簡略化

配列に値を設定するには、[] または index モディファイアを利用しますが、value モディファイアをカンマやコロンで区切れば、まとめて記述できます。

変更前

<$mt:SetVar name="foo[0]" value="0"$>
<$mt:SetVar name="foo[1]" value="1"$>
<$mt:SetVar name="foo[2]" value="2"$>

変更後1

<$mt:SetVar name="foo" value="0","1","2"$>

変更後2

<$mt:SetVar name="foo" value="0":"1":"2"$>

4.複数の変数設定の簡略化

複数の変数を設定するには、MTSetVars タグを使用します。

変更前

<$mt:SetVar name="a" value="1"$>
<$mt:SetVar name="b" value="2"$>
<$mt:SetVar name="c" value="3"$>
<$mt:SetVar name="d" value="4"$>
<$mt:SetVar name="e" value="5"$>

変更後

<mt:SetVars>
a=1
b=2
c=3
d=4
e=5
</mt:SetVars>

参考:1項・2項の簡略化を行なった場合

<$mt:Var a value="1"$>
<$mt:Var b value="2"$>
<$mt:Var c value="3"$>
<$mt:Var d value="4"$>
<$mt:Var e value="5"$>

5.テンプレートタグの非 0 判定を簡略化

MTIfNonZero タグは、「MTIf タグ+tag モディファイア」で置き換えられます。

変更前

<mt:IfNonZero tag="MTBlogEntryCount">
...中略...
</mt:IfNonZero>

変更後

<mt:If tag="BlogEntryCount">
...中略...
</mt:If>

6.テンプレートタグの非空き判定を簡略化

MTIfNonEmpty タグは、「MTIf タグ+tag モディファイア」で置き換えられます。

変更前

<mt:IfNonEmpty tag="MTEntryMore">
...中略...
</mt:IfNonEmpty>

変更後

<mt:If tag="EntryMore">
...中略...
</mt:If>

7.ファンクションタグの内容を変数に設定する場合の簡略化

ファンクションタグの内容を変数に設定するには、MTSetVarBlock タグを利用する代わりに、setvar モディファイアを利用することで簡略化できます。

変更前

<mt:SetVarBlock name="blog_url"><$mt:BlogURL$></mt:SetVarBlock>

変更後

<$mt:BlogURL setvar="blog_url"$>

8.変数の内容を他の変数に設定する場合の簡略化

変数の内容を他の変数に代入するには、MTGetVar タグと MTSetVarBlock タグを併用する代わりに、setvar モディファイアを利用することで簡略化できます。

例:変数 foo の値(1)を、変数 bar に設定

変更前

<$mt:SetVar name="foo" value="1"$>
<mt:SetVarBlock name="bar"><$mt:Getvar name="foo" value="1"$></mt:SetVarBlock>

変更後

<$mt:SetVar name="foo" value="10"$>
<$mt:GetVar name="foo" setvar="bar"$>

1項・2項の省略記法を追加

<$mt:Var foo value="10"$>
<$mt:Var foo setvar="bar"$>

ついでに「$」や「:」も削除

<mtVar foo value="10">
<mtVar foo setvar="bar">

2010.01.31
5項・6項の記載を修正しました。

Comments [2] | Trackbacks [0]

Movable Type 4.26 のスケジュールタスク実行時にエラーが発生する現象について

Movable Type 4.26 のスケジュールタスク実行時に、次のエラーが発生します。Linux でも Windows でも発生します。

(in cleanup) Can't call method "registry" on an undefined value at lib/MT/Component.pm line 558 during global destruction.

本件についてシックスアパートに問い合わせたところ、すでに対応中ということでした。

ということで、対処はお任せして、ここでは、当該エラーを出力しない方法を2つ紹介します。

1.コマンドラインスイッチ「-w」を削除する。

maRkのMyOwn - MT-Xsearchによるタグ検索が4.26でエラーの件」で紹介されている方法の応用で、tools/run-periodic-tasks の1行目(shebang行)の「-w」を削除します。

変更前

#!/usr/bin/perl -w

変更後

#!/usr/bin/perl

2.標準エラーを出力しない

cron を使用しているので、そもそも標準エラーを出力しない設定を行うことも可能です。

変更前

cd <path to mt>; ./tools/run-periodic-tasks

変更後(csh の場合) *さくらインターネット等

cd <path to mt>; ./tools/run-periodic-tasks >& /dev/null

変更後(bash の場合)

cd <path to mt>; ./tools/run-periodic-tasks 2>/dev/null

bash で標準出力も表示しない場合は次のようにします。

run-periodic-tasks >/dev/null 2>&1

シェルの種類を知るには次のコマンドを入力します。

echo $SHELL
Comments [2] | Trackbacks [0]

Feed2JS の表示結果のタイトルに日付を表示する

June 16,2009 1:55 AM
Category:[ツール]
Tag:[, , , , , , ]
Permalink

フィードの内容をブログ等に表示するツール「Feed2JS」を使ったときに、タイトル横に日付を表示する方法です。

Feed2JS の詳細については、「RSS Feed(フィード)を表示する」をご覧ください。

下の例は、はてなブックマーク「最近の人気エントリー」のフィードを表示した場合の、変更前と変更後です。変更前はタイトル下に日付と時刻が表示されますが、変更後はタイトルの左に日付を表示します(いずれも設定項目の「Show item posting date? 」を「Yes」に設定)。

変更前
変更前

変更後
変更後

西暦を2桁表示することも可能です。
西暦を2桁表示

元のように、時刻も表示できます。
時刻も表示

1.タイトル横に日付を適用する

自サーバにアップロードした feed2js ディレクトリ直下にある、feed2js.php の 200 行目あたり(確認バージョンは1.98)にある、下記の赤色部分を削除し、青色部分を追加します。バージョンによって行が異なる場合は似たような箇所をみつけてください。

変更前(赤色を削除)

...前略...
if ($desc < 0) {
    $str.= "document.write('<li class=\"rss-item\">');\n";
    
} elseif ($item['title']) {
    // format item title
    $my_title = addslashes(strip_returns($item['title']));
                
    // create a title attribute. thanks Seb!
    $title_str = substr(addslashes(strip_returns(strip_tags((htmlspecialchars($item['summary']))))), 0, 255) . '...'; 
 
    // write the title strng
    $str.= "document.write('<li class=\"rss-item\"><a class=\"rss-item\" href=\"" . trim($my_url) . "\" title=\"$title_str\"". $target_window . '>' . $my_title . "</a><br />');\n";
 
} else {
    // if no title, build a link to tag on the description
    $str.= "document.write('<li class=\"rss-item\">');\n";
    $more_link = " <a class=\"rss-item\" href=\"" . trim($my_url) . '"' . $target_window . ">&laquo;details&raquo;</a>";
}
 
// print out date if option indicated
 
if ($date == 'y') {
            
    if ($tz == 'feed') {
    //   echo the date/time stamp reported in the feed
 
        if ($item['pubdate'] != '') {
            // RSS 2.0 is alreayd formatted, so just use it
            $pretty_date = $item['pubdate'];
        } elseif ($item['published'] != "") {
            // ATOM 1.0 format, remove the "T" and "Z" and the time zone offset
            $pretty_date = str_replace("T", " ", $item['published']);
            $pretty_date= str_replace("Z", " ", $pretty_date);
 
        } elseif ($item['issued'] != "") {
            // ATOM 0.3 format, remove the "T" and "Z" and the time zone offset
            $pretty_date = str_replace("T", " ", $item['issued']);
            $pretty_date= str_replace("Z", " ", $pretty_date);
        } elseif ( $item['dc']['date'] != "") {
            // RSS 1.0, remove the "T" and the time zone offset
            $pretty_date = str_replace("T", " ", $item['dc']['date']);
            $pretty_date = substr($pretty_date, 0,-6);
        } else {
        
            // no time/date stamp, 
            $pretty_date =  'n/a';
        }
 
    } else {
        // convert to local time via conversion to GMT + offset
        
        // adjust local server time to GMT and then adjust time according to user
        // entered offset.
        
        $pretty_date = date($date_format, $item['date_timestamp'] - $tz_offset + $tz * 3600);
    
    }
 
    $str.= "document.write('<span class=\"rss-date\">$pretty_date</span><br />');\n"; 
}
 
// link to podcast media if availavle
...後略...

変更後(青色を追加)

...前略...
if ($desc < 0) {
    $str.= "document.write('<li class=\"rss-item\">');\n";
    
} elseif ($item['title']) {
    // format item title
    $my_title = addslashes(strip_returns($item['title']));
                
    // create a title attribute. thanks Seb!
    $title_str = substr(addslashes(strip_returns(strip_tags((htmlspecialchars($item['summary']))))), 0, 255) . '...'; 
 
    // print out date if option indicated
 
    if ($date == 'y') {
            
        if ($tz == 'feed') {
        //   echo the date/time stamp reported in the feed
 
            if ($item['pubdate'] != '') {
                // RSS 2.0 is alreayd formatted, so just use it
                $pretty_date = $item['pubdate'];
            } elseif ($item['published'] != "") {
                // ATOM 1.0 format, remove the "T" and "Z" and the time zone offset
                $pretty_date = str_replace("T", " ", $item['published']);
                $pretty_date= str_replace("Z", " ", $pretty_date);
 
            } elseif ($item['issued'] != "") {
                // ATOM 0.3 format, remove the "T" and "Z" and the time zone offset
                $pretty_date = str_replace("T", " ", $item['issued']);
                $pretty_date= str_replace("Z", " ", $pretty_date);
            } elseif ( $item['dc']['date'] != "") {
                // RSS 1.0, remove the "T" and the time zone offset
                $pretty_date = str_replace("T", " ", $item['dc']['date']);
                $pretty_date = substr($pretty_date, 0,-6);
            } else {
        
                // no time/date stamp, 
                $pretty_date =  'n/a';
            }
 
        } else {
            // convert to local time via conversion to GMT + offset
        
            // adjust local server time to GMT and then adjust time according to user
            // entered offset.
        
            $pretty_date = date($date_format, $item['date_timestamp'] - $tz_offset + $tz * 3600);
    
        }
        $pretty_date = substr($pretty_date, 0,-8);
    }
 
    // write the title strng
    $str.= "document.write('<li class=\"rss-item\">$pretty_date <a class=\"rss-item\" href=\"" . trim($my_url) . "\" title=\"$title_str\"". $target_window . '>' . $my_title . "</a><br />');\n";
 
} else {
    // if no title, build a link to tag on the description
    $str.= "document.write('<li class=\"rss-item\">');\n";
    $more_link = " <a class=\"rss-item\" href=\"" . trim($my_url) . '"' . $target_window . ">&laquo;details&raquo;</a>";
}
 
// link to podcast media if availavle
...後略...

2.西暦を2桁にする

表示されている西暦を4桁から2桁にするには、1項で追加した、

$pretty_date = substr($pretty_date, 0,-8);

$pretty_date = substr($pretty_date, 2,-8);

に変更します。

3.時刻を表示する

時刻を表示するには、1項で追加した、

$pretty_date = substr($pretty_date, 0,-8);

の1行を丸ごと削除してください。

Comments [2] | Trackbacks [0]

月別アーカイブリストの年別表示(ツリー化+折りたたみ)

June 15,2009 12:03 AM
Category:[月別アーカイブ]
Tag:[, , , , ]
Permalink

Movable Type の「月別アーカイブリストの年別表示」に、ツリー化および年別の折りたたみを加えるカスタマイズです。このカスタマイズにはプラグインを使いません。

公開テンプレート(変更前)
公開テンプレート(変更前)

公開テンプレート(変更後・折りたたんだ状態)
公開テンプレート(変更後・折りたたんだ状態)

公開テンプレート(変更後・開いた状態)
公開テンプレート(変更後・開いた状態)

デフォルトテンプレート(変更前)
デフォルトテンプレート(変更前)

デフォルトテンプレート(変更後・折りたたんだ状態)
デフォルトテンプレート(変更後・折りたたんだ状態)

デフォルトテンプレート(変更後・開いた状態)
デフォルトテンプレート(変更後・開いた状態)

このエントリーは「JavaScript 不要な月別アーカイブの年別ツリー化+折りたたみ」を改良したものです。

このカスタマイズは、Movable Type 4.1以降で有効です。

以下、カスタマイズ手順を紹介します。

1.スクリプトのダウンロード

下記のリンクより menufolder.js をダウンロードしてください。

download

2.スクリプトのアップロード

menufolder.js を、ブログのメインページ(index.html)と同じディレクトリにアップロードします。

3.テンプレートモジュールの修正(script タグ追加)

テンプレートモジュールに下記の script 要素を追加します。利用しているテンプレートによって追加するテンプレートモジュールが次のように異なりますので注意してください。

  • 公開テンプレート:「ヘッダー」テンプレートモジュールの</head> の直前
  • デフォルトテンプレート(4.1x):「ヘッダー」テンプレートモジュールの </head> の直前
  • デフォルトテンプレート(4.2x):「HTMLヘッダー」テンプレートモジュールの <$mt:CCLicenseRDF$> の直前
<script type="text/javascript" src="<$mt:BlogURL$>menufolder.js"></script>

4.ツリー画像のダウンロード・アップロード

下記のツリー画像をダウンロードしてください。画像は、実線表示用(solid)・点線表示用(dotted)の2種類を用意していますので、お好きな方をダウンロードしてください。

実線表示用:tree_lst_solid.gif / tree_end_solid.gif
点線表示用:tree_lst_dotted.gif / tree_end_dotted.gif

保存方法は、(IEの場合)リンクをクリックして一旦画像を表示し、その後に「ファイル」→「名前をつけて保存」で保存するか、リンクを右クリックして「対象をファイルに保存」を選択します。

ダウンロードした画像ファイルのファイル名をそれぞれ、

tree_lst.gif
tree_end.gif

に変更し、ブログのメインページ(index.html)と同じディレクトリにアップロードします。

5.月別アーカイブの年別ツリー化表示+折りたたみ用タグの設定

ブログ管理画面の「デザイン」→「ウィジェット」で「月別アーカイブ」を下記の内容に入れ替えてください。

5.1 公開テンプレート

<mt:ifArchiveTypeEnabled archive_type="Monthly">
<dt class="sidetitle">Monthly Archives</dt>
<dd class="side">
  <mt:archiveList archive_type="Monthly" sort_order="descend">
    <mt:archiveListHeader>
  <ul>
    <li><div id="archive<mt:archiveDate format="%Y" />name"><span><mt:archiveDate format="%Y&#24180;" /></span></div>
      <ul id="archive<mt:archiveDate format="%Y" />list" class="tree">
      <mt:archiveDate format="%Y&#24180;" setvar="year" />
      <mt:setVarBlock name="monthly_fold_script">
        FoldNavigation('archive<mt:archiveDate format="%Y" />','off',false);
      </mt:setVarBlock>
    </mt:archiveListHeader>
    <mt:archiveDate format="%Y&#24180;" setvar="current_year" />
    <mt:if name="current_year" ne="$year">
        <li class="tree tree_end"><mt:getVar name="month_title" /></li>
      </ul>
    </li>
    <li><div id="archive<mt:archiveDate format="%Y" />name"><span><mt:getVar name="current_year" /></span></div>
      <ul id="archive<mt:archiveDate format="%Y" />list" class="tree">
      <mt:setVarBlock name="monthly_fold_script" prepend="1">
        FoldNavigation('archive<mt:archiveDate format="%Y" />','off');
      </mt:setVarBlock>
    <mt:else>
      <mt:unless name="__first__">
        <li class="tree"><mt:getVar name="month_title" /></li>
      </mt:unless>
    </mt:if>
    <mt:getVar name="current_year" setvar="year" />
    <mt:setVarBlock name="month_title">
      <a href="<mt:archiveLink />"><mt:archiveTitle regex_replace="/\d+&#24180;/","" /></a> [<mt:archiveCount />]
    </mt:setVarBlock>
    <mt:archiveListFooter>
        <li class="tree tree_end"><mt:getVar name="month_title" /></li>
      </ul>
    </li>
  </ul>
    </mt:archiveListFooter>
  </mt:archiveList>
</dd>
<dd>
<script type="text/javascript">
//<![CDATA[
<mt:getVar name="monthly_fold_script" />
//]]>
</script>
</dd>
</mt:ifArchiveTypeEnabled>

5.2 デフォルトテンプレート(MT4.1x)

<mt:IfArchiveTypeEnabled archive_type="Monthly">
  <mt:ArchiveList archive_type="Monthly">
    <mt:ArchiveListHeader>
<div class="widget-archive-monthly widget-archive widget">
  <h3 class="widget-header"><$mt:ArchiveTypeLabel$> <a href="<$mt:Link template="archive_index"$>">アーカイブ</a></h3>
  <div class="widget-content">
    <ul class="widget-list">
      <li class="widget-list-item"><div id="archive<mt:archiveDate format="%Y" />name"><span><mt:archiveDate format="%Y&#24180;" /></span></div>
        <ul id="archive<mt:archiveDate format="%Y" />list" class="widget-list tree">
      <mt:archiveDate format="%Y&#24180;" setvar="year" />
      <mt:setVarBlock name="monthly_fold_script">
        FoldNavigation('archive<mt:archiveDate format="%Y" />','off',false);
      </mt:setVarBlock>
    </mt:ArchiveListHeader>
    <mt:archiveDate format="%Y&#24180;" setvar="current_year" />
    <mt:if name="current_year" ne="$year">
          <li class="widget-list-item tree tree_end"><mt:getVar name="month_title" /></li>
        </ul>
      </li>
      <li class="widget-list-item"><div id="archive<mt:archiveDate format="%Y" />name"><span><mt:getVar name="current_year" /></span></div>
        <ul id="archive<mt:archiveDate format="%Y" />list" class="widget-list tree">
      <mt:setVarBlock name="monthly_fold_script" prepend="1">
        FoldNavigation('archive<mt:archiveDate format="%Y" />','off');
      </mt:setVarBlock>
    <mt:else>
      <mt:unless name="__first__">
          <li class="widget-list-item tree"><mt:getVar name="month_title" /></li>
      </mt:unless>
    </mt:if>
    <mt:getVar name="current_year" setvar="year" />
    <mt:setVarBlock name="month_title">
      <a href="<mt:archiveLink />"><mt:archiveTitle regex_replace="/\d+&#24180;/","" /> (<mt:archiveCount />)</a>
    </mt:setVarBlock>
    <mt:ArchiveListFooter>
          <li class="widget-list-item tree tree_end"><mt:getVar name="month_title" /></li>
        </ul>
      </li>
    </ul>
  </div>
    </mt:ArchiveListFooter>
  </mt:ArchiveList>
</div>
<script type="text/javascript">
//<![CDATA[
<mt:getVar name="monthly_fold_script" />
//]]>
</script>
</mt:IfArchiveTypeEnabled>

5.3 デフォルトテンプレート(MT4.2x)

<mt:IfArchiveTypeEnabled archive_type="Monthly">
  <mt:ArchiveList archive_type="Monthly">
    <mt:ArchiveListHeader>
<div class="widget-archive-monthly widget-archive widget">
  <h3 class="widget-header"><$mt:ArchiveTypeLabel$> <a href="<$mt:Link template="archive_index"$>">アーカイブ</a></h3>
  <div class="widget-content">
    <ul>
      <li><div id="archive<mt:archiveDate format="%Y" />name"><span><mt:archiveDate format="%Y&#24180;" /></span></div>
        <ul id="archive<mt:archiveDate format="%Y" />list" class="tree">
      <mt:archiveDate format="%Y&#24180;" setvar="year" />
      <mt:setVarBlock name="monthly_fold_script">
        FoldNavigation('archive<mt:archiveDate format="%Y" />','off',false);
      </mt:setVarBlock>
    </mt:ArchiveListHeader>
    <mt:archiveDate format="%Y&#24180;" setvar="current_year" />
    <mt:if name="current_year" ne="$year">
          <li class="tree tree_end"><mt:getVar name="month_title" /></li>
        </ul>
      </li>
      <li><div id="archive<mt:archiveDate format="%Y" />name"><span><mt:getVar name="current_year" /></span></div>
        <ul id="archive<mt:archiveDate format="%Y" />list" class="tree">
      <mt:setVarBlock name="monthly_fold_script" prepend="1">
        FoldNavigation('archive<mt:archiveDate format="%Y" />','off');
      </mt:setVarBlock>
    <mt:else>
      <mt:unless name="__first__">
          <li class="tree"><mt:getVar name="month_title" /></li>
      </mt:unless>
    </mt:if>
    <mt:getVar name="current_year" setvar="year" />
    <mt:setVarBlock name="month_title">
      <a href="<mt:archiveLink />"><mt:archiveTitle regex_replace="/\d+&#24180;/","" /> (<mt:archiveCount />)</a>
    </mt:setVarBlock>
    <mt:ArchiveListFooter>
          <li class="tree tree_end"><mt:getVar name="month_title" /></li>
        </ul>
      </li>
    </ul>
  </div>
    </mt:ArchiveListFooter>
  </mt:ArchiveList>
</div>
<script type="text/javascript">
//<![CDATA[
<mt:getVar name="monthly_fold_script" />
//]]>
</script>
</mt:IfArchiveTypeEnabled>

6.CSS

スタイルシートに以下の内容を追加してください。

ul.tree {
    margin: 0 0 0 15px;
    padding: 0;
    list-style: none;
}
ul.tree ul {
    margin: 0 0 0 10px;
    padding: 0;
}
ul.tree li {
    margin: 0;
    padding: 0 0 0 11px;
    background-image: url(tree_lst.gif);
    background-repeat: no-repeat;
    list-style: none;
}
ul.tree li.tree_end {
    background-image: url(tree_end.gif);
    list-style: none;
}

すべてを再構築をすれば、月別アーカイブのツリー化と折りたたみが行なえます。

7.ツリー化のみ行いたい場合

1~3項の作業を取り消してください。

8.折りたたみのみ行いたい場合

6項の作業を取り消してください。

Comments [12] | Trackbacks [1]

日本一美味しいインスタントラーメン「旭山動物園限定・白クマ塩ラーメン」

June 14,2009 2:55 AM
Category:[mono]
Tag:[, ]
Permalink

「旭山動物園限定・白クマ塩ラーメン」を紹介します。このラーメンは、フジテレビの「ジョーデキ!!芸能人こだわり王講座 イケタク」という深夜番組の少し前の放送で、インスタントラーメンの神様・大山即席斎さん(テレビ東京の「TVチャンピオン・第1回インスタント麺通選手権」優勝)が「おすすめのインスタントラーメン」として紹介されたものです。

ということで、早速オンラインで購入して食べてみました。このラーメンは「ほくみん」から発売されています。

白クマ塩ラーメン 『熊出没注意』塩味 《G》白クマ塩ラーメン
白クマ塩ラーメン 『熊出没注意』塩味 《G》白クマ塩ラーメン

白クマ塩ラーメン『熊出没注意』 【1ケース10個入】 《G》白クマ塩ラーメン
白クマ塩ラーメン『熊出没注意』  【1ケース10個入】 《G》白クマ塩ラーメン

肝心の味ですが、インスタントの域を超えており、お店で食べるような塩ラーメンです。上品な味のスープにしこしことしたのどごしの良い麺、大変美味しかったです。スープ用のお湯を別に用意せず、茹でたお湯をそのまま使えるのも手軽で有難いです。

なお、スープはやや濃い目なので、最初は半分~3/4ほど入れて、味を見つつ増量することをおすすめします。スープは袋の中で成分が分離しているので、少し暖めておき、よく振ってから使うといいでしょう(沸騰している鍋で暖めないでください、と注意書きされているので、お湯をいれたコップ等に入れて暖めてください)。

YouTube にそのときの放映分がアップされているので、インスタントラーメン好きな方は是非ご覧ください。「白クマ塩ラーメン」は、4/4 の 5:12 辺りから紹介されています。

2012/1/17追記:以下の動画は削除されています。残念。

ジョーデキ!!芸能人こだわり王講座 イケタク ( フジテレビ ):10分見ればインスタントラーメン通!(1/4)

ジョーデキ!!芸能人こだわり王講座 イケタク ( フジテレビ ):10分見ればインスタントラーメン通!(2/4)

ジョーデキ!!芸能人こだわり王講座 イケタク ( フジテレビ ):10分見ればインスタントラーメン通!(3/4)

ジョーデキ!!芸能人こだわり王講座 イケタク ( フジテレビ ):10分見ればインスタントラーメン通!(4/4)

大山さんは「即席麺カタログ」という書籍も執筆されています。

Comments [2] | Trackbacks [0]

頬が

June 13,2009 1:55 AM
Category:[ダジャレ]
Tag:[]
Permalink
Comments [0] | Trackbacks [0]

Movable Type 4.25 から 4.26 へのアップグレード

June 12,2009 1:55 AM
Category:[アップグレード]
Tag:[, , ]
Permalink

当ブログを、Movable Type 4.25 から 4.26 へアップグレードしました。ということで、アップグレード手順を紹介します。4.2x から 4.26 のアップグレードでも参考になると思います。

アップグレード

4.26 にアップグレードした後、検索速度が若干向上しています。

アップグレードは個人の責任で行ってください。正常にアップグレードできなかった場合、申し訳ありませんが当ブログに質問を頂いても解決するお手伝いをすることはできません。作業前には1項に示すバックアップ作業などを行い、ブログのバックアップを行ってください。

1.プラグインディレクトリについて

アップグレードは、新しいアプリケーションディレクトリを作成する方法を紹介していますが、この方法では、プラグインディレクトリにインストールしたプラグインを新しいアプリケーションディレクトリのpluginsディレクトリにコピーする手間が増えます。

以前も紹介しましたが、当ブログでは、自分でインストールしたプラグインを標準のディレクトリ配下に置くのをやめ、別のところに配置しました。そのおかげで、本エントリーで示すプラグインファイルのコピー作業は(ほぼ)なくなり、かなり楽になりました。

Movable Type のアップグレードで旧アプリケーションディレクトリのプラグインを新アプリケーションディレクトリにコピーしない方法

デフォルトでバンドルされているプラグインと、自分でインストールしたプラグインの差分を確認しながら必要なものだけをコピーする手間が省け、非常に便利です。

なお、さきほど「ほぼ」と書いたのは、プラグインにCGIが含まれるものについてはこの方法が使えないためです。また、mt-static/pluginsにあるファイルのコピー作業は必要です。

2.ブログのバックアップ

4.25 の状態でブログのバックアップを取得します。

バックアップした後、正しくバックアップされているかどうか、バックアップファイルを確認した方が良いでしょう。圧縮ファイルでバックアップした場合、バックアップファイルを解凍すれば、XMLファイルなどがテキストエディタで確認できます。
またはバックアップを2回繰り返し、同じサイズになっていれば、経験上大丈夫だと思います。

バックアップはこれ以外にも方法があります。SQLiteであれば、mt-config.cgi に指定してる DBファイルを丸ごとダウンロードしておけば良いでしょう。MySQL であれば、コマンドラインからバックアップを実行するか、phpMyAdmin によるバックアップが可能です。

なお、バックアップはアップグレード前だけでなく、定期的に行いましょう。

3.アプリケーションディレクトリのリネーム

「アプリケーションディレクトリ」は、mt.cgi などがあるディレクトリです。このアプリケーションディレクトリ自体を FTP ツールでリネームして、プログラムを上書きしないようにしています。

例えば、アプリケーションディレクトリ名が

mt

であれば、

mt--

などに変更します。

なお、アプリケーションディレクトリ名を変更した後、一時的にブログ管理画面にアクセスできなくなりますので、注意してください。

4.アプリケーションディレクトリ作成

リネーム前と同じディレクトリを FTP ツールで(同じ位置に)作成します。上の例では、

mt

というディレクトリを作成します。

5.Movable Type 4.26 のアップロード

Movable Type 4.26 のプログラム一式を、アプリケーションディレクトリ配下にアップロードします。

スタティックディレクトリをアプリケーションディレクトリと別のディレクトリに配置している場合は、スタティックディレクトリも手順3~4と同じ要領でディレクトリを作成すると良いでしょう。

6.mt-config.cgi のコピー

旧アプリケーションディレクトリ(mt--)にある mt-config.cgi をFTPツールで一旦ローカルPCにダウンロードし、新アプリケーションディレクトリ(mt)にアップロードします。

この作業を行わずに、うっかり mt.cgi にアクセスすると、新規インストールの動作になってしまう場合があるので注意してください。間違ってアクセスしても、5項の後でパーミッション変更が行われていなければエラーになります。正常にアクセスできた場合も、ブラウザの操作をそれ以上行わなければ問題ありません。

7.SQLiteのデータベースをコピー(データベースにSQLite/SQLite2を使用している場合)

SQLite を使用していて、データベースファイルが旧アプリケーションディレクトリ(mt--)配下にある場合は、FTP ツールで一旦ローカル PC にダウンロードし、新アプリケーションディレクトリ(mt)配下の同じディレクトリにアップロードします。

SQLite のデータベースファイルがどれか分からない場合は、mt-config.cgi を任意のエディタで開き、Database という項目の右側に書かれている内容が SQLite のデータベースへのパスとファイル名になります。

8.CGIファイルの属性変更

5項でアップロードした、アプリケーションディレクトリ直下にある、各CGIファイル(.cgi)の属性を 644 から 755 や 705 などに変更します。属性が分からない場合は、旧アプリケーションディレクトリの CGI ファイルを参照してください。

9.ブラウザから mt.cgi にアクセス

mt.cgi にアクセスすると、アップグレードが直ちに完了するので「Movable Type に戻る」をクリックします。

アップグレード完了

ブログ管理画面にアクセスできれば完了です。

10.プラグインファイルのコピー

旧アプリケーションディレクトリから必要なプラグインをコピーします。外部のテンプレートセットを利用していた場合は、必ず新しい plugins ディレクトリに外部テンプレートセットのディレクトリを、plugins ディレクトリにコピーしてください。場合によっては mt-static/plugins ディレクトリからのコピーも必要です。

以上です。

Comments [4] | Trackbacks [0]

Movable Type 4.26 リリース

June 11,2009 11:00 AM
Category:[4.26]
Tag:[, ]
Permalink

Movable Type 4.26 がリリースされました。現在は英語版のみですが、日本語版も近々リリースされると思います。

Movable Type 4.26 リリース

4.26 では検索機能の性能向上とバックグラウンドパブリッシングの性能・信頼性を向上させているようです。セキュリティアップデートではありません。訂正:日本語公式サイトではアップデートが推奨されています。

4.25(日本語版)と 4.26 との差分ファイルは以下の通りです。目安程度にご覧ください。

/addons/Community.pack/config.yaml
/addons/Community.pack/lib/MT/App/Community.pm
/addons/Community.pack/lib/MT/Community/CMS.pm
/addons/Community.pack/lib/MT/Community/Friending.pm
/addons/Community.pack/lib/MT/Community/Tags.pm
/addons/Community.pack/lib/MT/Community/Util.pm
/extlib/Data/ObjectDriver/BaseObject.pm
/extlib/Data/ObjectDriver/BaseView.pm
/extlib/Data/ObjectDriver/Driver/BaseCache.pm
/extlib/Data/ObjectDriver/Driver/DBD/Pg.pm
/extlib/Data/ObjectDriver/Driver/DBD/SQLite.pm
/extlib/Data/ObjectDriver/Driver/DBD.pm
/extlib/Data/ObjectDriver/Driver/DBI.pm
/extlib/Data/ObjectDriver/Driver/MultiPartition.pm
/extlib/Data/ObjectDriver/Driver/Multiplexer.pm
/extlib/Data/ObjectDriver/Driver/Partition.pm
/extlib/Data/ObjectDriver/ResultSet.pm
/extlib/Data/ObjectDriver/SQL.pm
/extlib/Data/ObjectDriver.pm
/lib/MT/App/CMS.pm
/lib/MT/App/Comments.pm
/lib/MT/App/Search.pm
/lib/MT/App/Wizard.pm
/lib/MT/App.pm
/lib/MT/Asset/Image.pm
/lib/MT/Author.pm
/lib/MT/BackupRestore/BackupFileHandler.pm
/lib/MT/BackupRestore.pm
/lib/MT/Blog.pm
/lib/MT/Bootstrap.pm
/lib/MT/CMS/Blog.pm
/lib/MT/CMS/Comment.pm
/lib/MT/CMS/Dashboard.pm
/lib/MT/CMS/Entry.pm
/lib/MT/CMS/Search.pm
/lib/MT/CMS/Tools.pm
/lib/MT/Comment.pm
/lib/MT/Component.pm
/lib/MT/ConfigMgr.pm
/lib/MT/Core.pm
/lib/MT/Entry.pm
/lib/MT/L10N/de.pm
/lib/MT/L10N/es.pm
/lib/MT/L10N/fr.pm
/lib/MT/L10N/ja.pm
/lib/MT/L10N/nl.pm
/lib/MT/Meta/Proxy.pm
/lib/MT/Object.pm
/lib/MT/ObjectAsset.pm
/lib/MT/ObjectDriver/Driver/Cache/RAM.pm
/lib/MT/ObjectDriver/Driver/DBD/mysql.pm
/lib/MT/ObjectDriver/Driver/DBD/Pg.pm
/lib/MT/ObjectDriver/Driver/DBI.pm
/lib/MT/ObjectDriverFactory.pm
/lib/MT/Session.pm
/lib/MT/Template/ContextHandlers.pm
/lib/MT/Template.pm
/lib/MT/TheSchwartz/Error.pm
/lib/MT/TheSchwartz/Job.pm
/lib/MT/TheSchwartz.pm
/lib/MT/Upgrade.pm
/lib/MT/Util.pm
/lib/MT/WeblogPublisher.pm
/lib/MT.pm
/mt-check.cgi
/mt-static/css/main.css
/mt-static/css/structure.css
/mt-static/mt_de.js
/mt-static/mt_es.js
/mt-static/mt_fr.js
/mt-static/mt_ja.js
/mt-static/mt_nl.js
/php/lib/mtdb_base.php
/php/mt.php
/plugins/feeds-app-lite/lib/MT/Feeds/Lite.pm
/plugins/feeds-app-lite/lib/MT/Feeds/Tags.pm
/plugins/feeds-app-lite/mt-feeds.pl
/readme.html
/tmpl/cms/edit_entry.tmpl
/tmpl/cms/include/display_options.tmpl
/tmpl/cms/include/itemset_action_widget.tmpl
/tmpl/cms/list_widget.tmpl
/tmpl/cms/search_replace.tmpl
/tmpl/cms/system_check.tmpl
/tmpl/cms/widget/blog_stats.tmpl
/tmpl/cms/widget/this_is_you.tmpl
/tmpl/wizard/blog.tmpl
/tmpl/wizard/cfg_dir.tmpl
/tmpl/wizard/configure.tmpl
/tmpl/wizard/packages.tmpl
/tmpl/wizard/start.tmpl
/tools/run-periodic-tasks

4.26 のみ

/extlib/Data/ObjectDriver/Driver/DBD/Oracle.pm
/extlib/Data/ObjectDriver/Driver/GearmanDBI.pm
/extlib/Data/ObjectDriver/SQL
/lib/MT/L10N/de-iso-8859-1.pm
/lib/MT/L10N/es-iso-8859-1.pm
/lib/MT/L10N/fr-iso-8859-1.pm
/lib/MT/L10N/nl-iso-8859-1.pm
/lib/MT/ObjectDriver/Driver/CacheWrapper.pm

お知らせまで。

Comments [0] | Trackbacks [0]

はてなダイアリーテーマ

June 11,2009 1:55 AM
Category:[はてな]
Tag:[, ]
Permalink

はてなダイアリー用のテーマを作成しました。とりあえず2カラム固定レイアウト(右サイドバー)を公開します。完成例は次のようになります。

はてなダイアリーテーマ

1.テーマ設定方法

管理画面の「デザイン(またはデザイン編集)」をクリックし、「テーマ」は「指定なし」を選択します。「ヘッダ色」「ヘッダタイプ」はお好きなものを選んでください。

管理画面

その下にある「ヘッダ/フッタ/スタイルシートの編集」に、下記のテキストエリアの内容を貼り付けてください。ページのフッタのモジュールはサンプルなので、自由に入れ替えてください。

ヘッダ/フッタ/スタイルシートの編集

ページのヘッダ

ページのフッタ

スタイルシート

2.フッターを非表示にする場合

このテーマではフッターを表示することができます。フッターが不要な場合は、「ページのフッタ」の一番下にある、

<p class="footer">Copyright &copy; 2009 xxxx. All Rights Reserved.</p>

を削除してください。

3.その他

すべての動作・表示を確認できていないので、不具合がありましたらご連絡ください。

Comments [0] | Trackbacks [1]

photoshop でメニュータイトルの背景画像を作る

June 10,2009 2:55 AM
Category:[PC]
Tag:[, ]
Permalink

当ブログで使っている、2色のグラデーションになったサイドバーメニュータイトルの背景画像の作り方についてご質問を頂きましたので、本エントリーで紹介します。ここでは Adobe Photoshop CS4 を使った画面で解説しますが、Photoshop 6.0 等でも操作は全く同じです。

メニュータイトル背景画像の完成例は次のようになります。

背景画像の完成例

以下、画像サイズをやや大きめにしたもので解説します。私は Photoshop 使いではないので、他にもっと簡単な方法があるかもしれません。ご参考程度ということで。

1.作成方法

ツールバーの「ファイル」→「新規作成」で適当な大きさのファイルを開きます。ここでは100px×100pxの設定で説明を進めます。

ツールバーの「ファイル」→「新規作成」

このような画面が開きます。

新規作成画面

[レイヤー]パレットの右下にある「新規レイヤーを作成」アイコンをクリックして、新規レイヤーを作成します。

新規レイヤーを作成

[レイヤー]パレットがこのようになりますので、「レイヤー1」が選択された状態にしてください。

「レイヤー1」を選択した状態

ツールバーの「選択範囲」→「すべてを選択」で、レイヤーを全選択状態にします。

レイヤーを全選択状態

ツールの描画色をクリックします。

ツールの描画色

カラーピッカーで efefef を設定します。

カラーピッカー

ツールバーの「編集」→「塗りつぶし」を選択し、レイヤー全体を描画色で塗りつぶします。

レイヤー全体を描画色で塗りつぶし

作成画面はこのように、全体がやや薄いグレーになります。

作成画面

ツールバーの「レイヤー」→「レイヤーのスタイル」→「グラデーションオーバーレイ」を選択して、「レイヤースタイル」画面を表示します。

「レイヤースタイル」画面

「レイヤースタイル」画面を表示したときの作成画像は、次のようにグラデーションが設定されます。

作成画像

「レイヤースタイル」画面中央にある、「比率」を一番左にスライドさせ、さらに「不透明度」を左の方にスライドさせます。ここではいずれも 10% に設定します。

「レイヤースタイル」画面

これで、2色に分かれた、いい感じのグラデーションが出来上がります。

作成画像

ツールバーの「選択範囲」→「選択を解除」で選択範囲を解除すれば完成です。

完成した画像

2.グラデーションを設定するコツ

グラデーションを設定するときのコツは、以下の2つです(他にも色々あるかもしれませんが)。

  • 描画色がグラデーションの上側の色になるので、それを念頭に描画色を設定
  • グラデーションオーバーレイする高さを狭くすれば、中央部分のグラデーションがなくなります。つまり、中央部分をぼかしたくないときは、新規作成画像の高さ(または選択範囲)を狭くしてグラデーションオーバーレイし、画像の高さが必要であれば、その後、「イメージ」→「画像サイズ」で高さを出します(増やした部分は色がつかないので、拡大前の、グラデーションされてない部分の色をコピーして色を足します

3.当ブログでの設定値

冒頭にお見せした、当ブログのサイドメニュータイトル部分の背景画像は以下の設定です。

  • 描画色:efefef
  • 高さ:30px
  • 不透明度:6%

グラデーション部分が、先ほどの例よりくっきりしているのが分かると思います。厳密には、中央の1px分しかグラデーションがかかっていないので、この画像は3色です。

当ブログの画像

実際には、幅を狭くしてファイルサイズを小さくして使用しています。

Comments [0] | Trackbacks [0]

Feed2JS の表示結果の title 属性をカスタマイズする

June 9,2009 1:55 AM
Category:[ツール]
Tag:[, , , , , , ]
Permalink

フィードの内容をブログ等に表示するツール「Feed2JS」を使ったときに、a 要素部分に設定される title 属性をカスタマイズする方法を紹介します。

Feed2JS の詳細については、「RSS Feed(フィード)を表示する」をご覧ください。

下の例は、はてなブックマーク「最近の人気エントリー」のフィードを表示した場合の、変更前と変更後です。変更前はリンクのツールチップをポイントすると、ずらずらと日本語が表示されますが、変更後はタイトルのみを表示します(title 要素の内容は RSS フィードの description 要素から取得しています)。

変更前
変更前

変更後
変更後

また、title 属性自体を削除することも可能です。
title 属性自体を削除

時々、Feed2JS の質問を頂くことがあるのですが、紹介してから個人的には使っていなかったため、質問を頂いてもスルーさせて頂いている状態でした。ということで、お詫びをかねて以前頂いた質問を元にエントリー致します。

1.title 属性にタイトルを適用する

自サーバにアップロードした feed2js ディレクトリ直下にある、feed2js.php の 202 行目(確認バージョンは1.98)にある、下記の赤色部分を青色部分のように変更します。バージョンによって行が異なる場合は似たような箇所をみつけてください。

変更前

...前略...
// write the title strng
$str.= "document.write('<li class=\"rss-item\"><a class=\"rss-item\" href=\"" . trim($my_url) . "\" title=\"$title_str\"". $target_window . '>' . $my_title . "</a><br />');\n";
...後略...

変更後

...前略...
// write the title strng
$str.= "document.write('<li class=\"rss-item\"><a class=\"rss-item\" href=\"" . trim($my_url) . "\" title=\"Jump to $my_title\"". $target_window . '>' . $my_title . "</a><br />');\n";
...後略...

2.title 属性を表示しない

1項と同じ、feed2js.php の 202 行目(確認バージョンは1.98)にある、下記の赤色部分を削除してください。バージョンによって行が異なる場合は似たような箇所をみつけてください。ダブルクォーテーションを消しすぎないように気をつけましょう。

変更前

...前略...
// write the title strng
$str.= "document.write('<li class=\"rss-item\"><a class=\"rss-item\" href=\"" . trim($my_url) . "\" title=\"$title_str\"". $target_window . '>' . $my_title . "</a><br />');\n";
...後略...

変更後

// write the title strng
$str.= "document.write('<li class=\"rss-item\"><a class=\"rss-item\" href=\"" . trim($my_url) . "\" ". $target_window . '>' . $my_title . "</a><br />');\n";
Comments [1] | Trackbacks [0]

UnrecognizedTags プラグインを日本語環境で利用する

June 8,2009 12:03 AM
Category:[管理画面]
Tag:[, , ]
Permalink

Movable Type のテンプレート上にある不明なタグを管理画面上に一括表示してくれる、UnrecognizedTags プラグインを紹介します。このプラグインは一度インストールして動作しないのでそのまま放置していたのですが、ソースを改変することで動作が確認できました。

UnrecognizedTags プラグイン

で当初、プラグインの紹介記事にしようと思いましたが、タイムリーに「WolaWola - Unrecognized Tags」で記事が修正されていたので、内容を変更して紹介します。プラグインの概要については、「WolaWola - Unrecognized Tags」をご覧ください。

1.日本語環境で利用する場合のカスタマイズ

plugins ディレクトリ配下の UnrecognizedTags/lib/UnrecognizedTags/CMS.pm を修正します。CMS.pm の赤色部分を青色部分のように変更します。

変更前

...前略...
while (my $tmpl = $iter->()) {
    $tmpl->compile;
    if ($tmpl->{errors} && @{$tmpl->{errors}}) {
        #print "Errors in " . $tmpl->id . "'" . $tmpl->name . "' (" . $tmpl->blog_id . ")\n";
        my @msgs = map { ($_->{message} =~ /unrecognized/mi) ? $_->{message} : () } @{$tmpl->{errors}};
        for my $msg (@msgs) {
            my ($tag) = ($msg =~ /^<([^>]+)>/);
            $tags->{$tag} ||= {};
            $tags->{$tag}->{$tmpl->id}++;
        }
        $tmpls->{$tmpl->id} = $tmpl;
        $blogs->{$tmpl->blog_id} ||= MT::Blog->load($tmpl->blog_id);
    }
}
...後略...

変更後

...前略...
while (my $tmpl = $iter->()) {
    $tmpl->compile;
    if ($tmpl->{errors} && @{$tmpl->{errors}}) {
        #print "Errors in " . $tmpl->id . "'" . $tmpl->name . "' (" . $tmpl->blog_id . ")\n";
        my @msgs = map { ($_->{message} =~ /は存在しません/mi) ? $_->{message} : () } @{$tmpl->{errors}};
        for my $msg (@msgs) {
            my ($tag) = ($msg =~ /^<([^>]+)>/);
            $tags->{$tag} ||= {};
            $tags->{$tag}->{$tmpl->id}++;
        }
        $tmpls->{$tmpl->id} = $tmpl;
        $blogs->{$tmpl->blog_id} ||= MT::Blog->load($tmpl->blog_id);
    }
}
...後略...

修正したファイルは必ずUTF-8で保存してください。この変更を行なわないと、プラグインで追加された管理画面には何も表示されません。

2.プラグインの動作確認方法

任意のテンプレートに <mt:hoge /> などの存在しないテンプレートタグを書き、システム管理画面の「ツール」→「不明なタグ」を選択してください。下のように表示されればOKです。

不明なタグ

CMS.pm の設定文字列を変更すれば、他のなエラーをひっかけられるかもしれません。

Comments [2] | Trackbacks [1]

Web creators (ウェブクリエイターズ) 2009年 07月号

June 7,2009 1:11 AM
Category:[書籍]
Tag:[, ]
Permalink

告知が遅れましたが、Web creators (ウェブクリエイターズ) 2009年 07月号に Movable Type の記事(先月号からの連載)が掲載されています。

Web creators (ウェブクリエイターズ) 2009年 07月号 [雑誌]Web creators (ウェブクリエイターズ) 2009年 07月号 [雑誌]

インプレスコミュニケーションズ 2009-05-29
売り上げランキング :

Amazonで詳しく見る
by G-Tools

短期集中連載の「Movable Type 4.x デザインカスタマイズを極める(後編)」です。

シックス・アパート(株)が開発、提供している「Movable Type 4.x」を使って、「ブログとは思えない」レイアウトとデザインのWebサイトを制作するテクニックを解説!! 前編(vol.90)・後編(vol.91)に分け、2カ月連続で紹介します。記事の解説で使用したサンプルデータをダウンロードしてテクニックを理解し、Movable Type 4のデザインカスタマイズに挑戦しよう!!

ということで、後半では次の3つのサンプルがダウンロードできるようになっており、Movable Type のテンプレートに貼り付けて再構築することでデザインを実際に確認できるようになっています。

  • モーション機能を利用した動画クリップブログを作成する
  • Ajaxでカテゴリ付のクールなフォトギャラリーをつくる
  • MTとFlashを組み合わせて投稿と更新を効率的に行う

サンプルの画像をお見せできないのが残念ですが、素敵なデザインのサイトが紹介されています。後半も6ページの短い記事ながら、Movable Type を使ってデザインの勉強をしたい方にお勧めです。

Comments [0] | Trackbacks [1]

シンドバッドの

June 6,2009 10:30 AM
Category:[ダジャレ]
Tag:[]
Permalink

シャープペンから(すでにネタばれ)

Comments [0] | Trackbacks [0]

僕が2ちゃんねるを捨てた理由

June 5,2009 1:55 AM
Category:[書籍]
Tag:[, ]
Permalink

元「2ちゃんねる」の管理人、ひろゆきさんの最新著書です。

僕が2ちゃんねるを捨てた理由 (扶桑社新書 54)僕が2ちゃんねるを捨てた理由 (扶桑社新書 54)
ひろゆき

扶桑社 2009-05-29
売り上げランキング : 29

Amazonで詳しく見る
by G-Tools

「僕が2ちゃんねるを捨てた理由」というタイトルの割に、書かれている内容はほぼ違うのですが、あとがきのところで、「既存メディアとインターネットの対比のような話で進んでいたところ、本のタイトルが全然違うものに」みたいなことが書かれています。

ということで、釣りタイトルにひっかかって購入した訳ではありませんが、ライターの人に書いてもらった鋭い切れ味の文章が楽しめます。

「好きなチャンネル」「嫌いなチャンネル」に関するアンケート
第1章 2ちゃんねる譲渡
僕が2ちゃんねるを手放した理由
シンガポールは理想国家!?
2ちゃんねる譲渡は無料だって誰が言った!?
第2章 大いなる勘違い
クラウドコンピューティング≒Web2.0の法則
「Web2.0」の本当の意味
間違ったCGMで集合知はパー
進みすぎた技術力は世界マーケットではKY
携帯電話がゲーム市場をも食い荒らす
フィルタリングなしの携帯電話は子供に持たすな!!
フィルタリングのフィルターは穴だらけ
名指しの2ちゃんねるを名なしのゲームサイト
情報のフィルタリングは教育で
「学校の裏サイト≒ロサンゼルスのダウンタウン≒危ない」の誤解
ダウンロード違法化で何が起きる?
第3章 ネットと広告
ニコニコ動画は黒字にしない!
ニコニコ動画の未来予想図
ネット企業の上場は失敗する
ネットの広告単価はまだまだバブル
僕はネット広告をクリックしない
ネットはメディアじゃないんです!!
テレビとネットの得手不得手
僕の意見は客観論
第4章 テレビはもう、死んでいる
日本の経営陣はバカだらけ?
テレビのモラルとネットのモラル
テレビ局の金遣い
「メディアの情報=すべて正しい」は大間違い
インターネットはウソだらけ。テレビを観る人はバカだらけ?
四大メディアの情報フィルタリングは権力
新聞って、おもしろい?
これが雑誌の生きる道
ブランド価値は企業の将来的な価値じゃない
目指せ世界マーケット
対談 土屋敏男×ひろゆき
第5章 ルーツ・オブ・ひろゆき
「うちは貧乏だ」。そう言われ続けた子ども時代
脳の構成はゲームと映画
空気が読めるKY
1%のひらめきを、99%の努力ができる他人にやらせてみる
論理的思考のルーツは西村家のお弁当にあり?
毎度おなじみ、あとがきの時間です
Comments [0] | Trackbacks [2]

コメント出力数に応じてコメント番号を制御する

June 4,2009 1:55 AM
Category:[コメント]
Tag:[, , ]
Permalink

Movable Type 4(4.1~)で、コメント出力数に応じてコメント番号を制御するカスタマイズです。

1.概要

例えば、あるブログ記事に投稿された20件のコメントのうち、最新の10件のコメントだけを表示し、さらにコメント番号を付与する場合、次のように MTCommentOrderNumber タグを使ってコメント番号を表示すると、本来のコメント番号は11~20 ですが、この場合もコメント番号は 1~10 で表示されてしまいます。

<mt:Comments sort_order="ascend" lastn="10">
  このコメントは<mt:CommentOrderNumber />番目のコメントです。
  <mt:CommentBody />
</mt:Comments>

本エントリーのカスタマイズを行なうことで、lastn モディファイアや limit モディファイアで絞り込んでも、適正なコメント番号を表示することができます。

なお通常、ブログ記事のコメントはすべて表示する設定になっているのですが、このカスタマイズを何のために使うかという理由を、以下に箇条書きにしておきます。

  • 当ブログでの使用を想定
  • コメントプレビュー画面でこのカスタマイズを使用
  • これまで、コメントプレビュー画面でもすべてのコメントを表示していたが、1000件近くのコメントがあるブログ記事では負荷がかかるので、全コメント表示はやめたい
  • ただしコメントの返信を行なう都合上、コメントプレビュー画面でも、リプライする直近のコメント数件は表示し、コメント番号も確認できるようにしたい

デフォルトテンプレートではコメントプレビュー画面に投稿済みコメントは表示されないので、以下、公開テンプレートを例にカスタマイズを紹介します。

2.コメントを昇順に表示する場合のカスタマイズ

制御タグを駆使して、MTComments タグに lastn モディファイアを使っている場合でも、適正なコメント番号を表示するようにします。

例えば、コメントが5件あり、コメントプレビューで3件だけ表示したい場合、次のようになります。

ブログ記事ページの表示

コメントプレビュー画面の表示

上記の表示を行なうためのサブテンプレートは以下です(最新10件のコメントを表示する設定にしています)。

まず、「コメント」テンプレートモジュールに青色部分を追加します。赤色部分がコメントプレビューテンプレートで表示したい件数になるので、この値を変更すれば表示するコメント数を変更できます。

<mt:ifCommentsActive>
<div id="comments">
 
   <mt:if name="comment_preview_template">
   <mt:include module="コメント入力フォーム" />
   </mt:if>
 
<mt:entryCommentCount setvar="entry_comment_count" />
<mt:if name="comment_preview_template">
  <mt:setVar name="lastn" value="10" />
  <mt:getVar name="lastn" op="--" setvar="counter" />
<mt:else>
  <mt:setVar name="lastn" value="$entry_comment_count" />
</mt:if>
   <mt:comments sort_order="ascend" lastn="$lastn">
 
   <mt:commentsHeader><h3 class="comments-header">コメント<mt:entryCommentCount singular="[1]" plural="[#]" none="[0]" /></h3></mt:commentsHeader>
      <mt:include module="コメント詳細" />
   <mt:commentsFooter></mt:commentsFooter>
   </mt:comments>
 
   <mt:unless name="comment_preview_template">
   <mt:include module="コメント入力フォーム" />
   </mt:unless>
 
</div>
</mt:ifCommentsActive>

次に、「コメント詳細」テンプレートモジュールに青色部分を追加します。このカスタマイズでは「Posted」の前にコメント番号を表示するようにしています。表示位置を変更したい場合は、青色のサブテンプレートを任意の位置に移動してください。

<div class="comment"<mt:ifArchiveTypeEnabled archive_type="Individual"> id="c<mt:commentID />"</mt:ifArchiveTypeEnabled>>
 
   <div class="comment-content">
   <mt:ifCommentParent>
   <p><a href="<mt:commentParent>#comment-<mt:commentID /></mt:commentParent>"><mt:commentParent>No.<mt:commentID />の<mt:commentAuthor /></mt:commentParent></a>さんのコメントへの返信</p>
   </mt:ifCommentParent>
   <mt:commentBody /></div>
 
   <p class="comment-footer">
<mt:if name="comment_preview_template">
  <mt:if name="entry_comment_count" ge="$lastn">
    [ <mt:getVar name="entry_comment_count" op="-" value="$counter" /> ]
  <mt:else>
    <mt:if name="__counter__">
    [ <mt:getVar name="__counter__" /> ]
    </mt:if>
  </mt:if>
  <mt:setVar name="counter" op="--" />
<mt:else>
    [ <mt:getVar name="__counter__" /> ]
</mt:if>
      Posted by <mt:commentAuthorLink default_name="Anonymous" show_email="0" /> <mt:if tag="CommentAuthorIdentity"><mt:commentAuthorIdentity /></mt:if> at <mt:commentDate /><mt:ifCommentsAccepted> | <mt:commentReplyToLink /></mt:ifCommentsAccepted>
   </p>
</div>

カスタマイズは以上です。なお、上記は2つのテンプレートモジュールに設定が分断してしまっていて分かりにくいので、ひとつにまとめてポイントだけに絞り込んだサブテンプレートを以下に示し、解説します。

<mt:entryCommentCount setvar="entry_comment_count" />
<mt:if name="comment_preview_template">
  <mt:setVar name="lastn" value="10" />
  <mt:getVar name="lastn" op="--" setvar="counter" />
<mt:else>
  <mt:setVar name="lastn" value="$entry_comment_count" />
</mt:if>
<mt:comments sort_order="ascend" lastn="$lastn">
  <mt:commentBody />
  <mt:if name="comment_preview_template">
    <mt:if name="entry_comment_count" ge="$lastn">
   [ <mt:getVar name="entry_comment_count" op="-" value="$counter" /> ]
    <mt:else>
      <mt:if name="__counter__">
   [ <mt:getVar name="__counter__" /> ]
      </mt:if>
    </mt:if>
    <mt:setVar name="counter" op="--" />
  <mt:else>
   [ <mt:getVar name="__counter__" /> ]
  </mt:if>
</mt:comments>

サブテンプレートの概要ですが、コメントプレビューテンプレートの場合、変数 lastn に表示したい件数を設定します。また、カウンタ値として、「変数 lastn -1」の値を変数 counter に保持しておきます。それ以外のテンプレート(ブログ記事テンプレート)では、単純に MTEntryCommentCount の値を設定します。

MTComments タグに lastn モディファイアを設定し、値に変数 lastn を利用します。これでブログ記事の場合とコメントプレビューの場合で表示する件数を制御します。

後半に追加したサブテンプレートでコメント番号を出力します。コメントプレビューテンプレートの場合、ブログ記事へのコメント数と変数 lastn の値を比較し、ブログ記事へのコメント数と等しいか、または多い場合は、コメント番号に「ブログ記事へのコメント数 - カウンタ値」を適用します。カウンタ値は繰り返すたびにデクリメントするので、表示するコメント番号は繰り返すたびに大きくなります。

ブログ記事へのコメント数と変数 lastn の値を比較し、ブログ記事へのコメント数が小さい場合は、特殊変数 __counter__ を使用し、コメント番号を1から順番に表示ます。ブログ記事テンプレートの場合も同様です。

なお、コメントプレビュー画面のプレビューコメントにコメント番号を表示しないよう、「<mt:if name="__counter__">」で括っています。

3.降順に表示する場合のカスタマイズ

降順に表示する場合、先頭に表示するコメントのコメント番号は、MTEntryCommentCount タグの値となるので、次のようなサブテンプレートになります。

まず、「コメント」テンプレートモジュールに青色部分を追加します。赤色部分がコメントプレビューテンプレートで表示したい件数になるので、この値を変更すれば表示するコメント数を変更できます。

<mt:ifCommentsActive>
<div id="comments">
 
   <mt:if name="comment_preview_template">
   <mt:include module="コメント入力フォーム" />
   </mt:if>
 
   <mt:entryCommentCount setvar="entry_comment_count" />
   <mt:comments sort_order="descend">
 
   <mt:commentsHeader><h3 class="comments-header">コメント<mt:entryCommentCount singular="[1]" plural="[#]" none="[0]" /></h3></mt:commentsHeader>
      <mt:include module="コメント詳細" />
   <mt:commentsFooter></mt:commentsFooter>
   </mt:comments>
 
   <mt:unless name="comment_preview_template">
   <mt:include module="コメント入力フォーム" />
   </mt:unless>
 
</div>
</mt:ifCommentsActive>

次に、「コメント詳細」テンプレートモジュールに青色部分を追加します。このカスタマイズでは「Posted」の前にコメント番号を表示するようにしています。表示位置を変更したい場合は、青色のサブテンプレートを任意の位置に移動してください。

<div class="comment"<mt:ifArchiveTypeEnabled archive_type="Individual"> id="c<mt:commentID />"</mt:ifArchiveTypeEnabled>>
 
   <div class="comment-content">
   <mt:ifCommentParent>
   <p><a href="<mt:commentParent>#comment-<mt:commentID /></mt:commentParent>"><mt:commentParent>No.<mt:commentID />の<mt:commentAuthor /></mt:commentParent></a>さんのコメントへの返信</p>
   </mt:ifCommentParent>
   <mt:commentBody /></div>
 
   <p class="comment-footer">
[ <mt:getVar name="entry_comment_count" /> ]
<mt:setVar name="entry_comment_count" op="--" />
      Posted by <mt:commentAuthorLink default_name="Anonymous" show_email="0" /> <mt:if tag="CommentAuthorIdentity"><mt:commentAuthorIdentity /></mt:if> at <mt:commentDate /><mt:ifCommentsAccepted> | <mt:commentReplyToLink /></mt:ifCommentsAccepted>
   </p>
</div>

降順に表示する場合のカスタマイズは、「コメント番号を降順で表示する」の2項と全く同じです。降順に出力する場合は、最初に表示するコメントのコメント番号は MTEntryCommentCount タグの値と等しくなります。

以上です。
これらのサブテンプレートは、コメントプレビューの判定等を外し、少し書き換えることで、ブログ記事テンプレートでの利用も可能です。

Comments [3] | Trackbacks [0]

コメント番号を降順で表示する

June 3,2009 2:07 AM
Category:[コメント]
Tag:[, , ]
Permalink

Movable Type 4(4.1~)で、ブログ記事に表示されるコメントのコメント番号を降順で表示するカスタマイズです。

1.MTCommentOrderNumber タグについて

コメント番号を表示するには、MTCommentOrderNumber タグを利用します。このタグは、コメント一覧に表示するコメントに対し、1から順番に番号(以下「コメント番号」)を付与するためのファンクションタグです。

デフォルトテンプレート(MT4.2 コメントテンプレートモジュール)での使用例は次の通りです。青色の MTCommentOrderNumber タグを追加します(そもそも特殊変数 __counter__ を利用するという手もありますが)。あと、説明の都合上、MTComments タグに sort_order="ascend" を付与して昇順に表示します。

...前略...
<mt:Comments sort_order="ascend">
  <mt:CommentsHeader>
<h2 class="comments-header"><$mt:EntryCommentCount singular="コメント(1)" plural="コメント(#)" none="コメント(0)"$></h2>
<div class="comments-content">
  </mt:CommentsHeader>
  <div id="comment-<$mt:CommentID$>" class="comment<mt:IfCommentParent> comment-reply</mt:IfCommentParent><mt:IfCommenterIsEntryAuthor> entry-author-comment</mt:IfCommenterIsEntryAuthor>">
    <div class="inner">
      <div class="comment-header">
        <div class="asset-meta">
          <span class="byline">
            <$mt:CommentAuthorIdentity$>
<mt:IfCommentParent>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>から<a href="<mt:CommentParent><$mt:CommentLink$></mt:CommentParent>"><mt:CommentParent><$mt:CommentAuthor$></mt:CommentParent></a>への返信
<mt:Else>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>
</mt:IfCommentParent>
              | <a href="<$mt:CommentLink$>"><abbr class="published" title="<$mt:CommentDate format_name="iso8601"$>"><$mt:CommentDate$></abbr></a>
<mt:IfCommentsAccepted>
              | <$mt:CommentReplyToLink$>
</mt:IfCommentsAccepted>
[ <mt:CommentOrderNumber /> ]
          </span>
        </div>
      </div>
      <div class="comment-content">
        <$mt:CommentBody$>
      </div>
    </div>
  </div>
  <mt:CommentsFooter>
</div>
  </mt:CommentsFooter>
</mt:Comments>
...後略...

上記の完成例(「返信」の右側に表示されているのがコメント番号)

ただし、MTComments タグに sort_order="descend" を与えて、コメントを降順に表示しても、次のようにコメント番号は降順に表示されません。

MTCommentOrderNumber タグは、MTComments タグの表示条件や処理中のコメントに連動するわけではなく、単純なインクリメントしか行なわないためです。

2.コメント番号を降順に表示するカスタマイズ

コメント番号を降順に表示するには、元の「コメント」テンプレートモジュールに、次の青色部分を追加します。MTEntryCommentCount タグでブログ記事のコメント数を取得し、MTComments タグの繰り返し処理の中で、その値を表示&デクリメントします。MTCommentOrderNumber タグは用いません。

...前略...
<mt:entryCommentCount setvar="entry_comment_count" />
<mt:Comments sort_order="descend">
  <mt:CommentsHeader>
<h2 class="comments-header"><$mt:EntryCommentCount singular="コメント(1)" plural="コメント(#)" none="コメント(0)"$></h2>
<div class="comments-content">
  </mt:CommentsHeader>
  <div id="comment-<$mt:CommentID$>" class="comment<mt:IfCommentParent> comment-reply</mt:IfCommentParent><mt:IfCommenterIsEntryAuthor> entry-author-comment</mt:IfCommenterIsEntryAuthor>">
    <div class="inner">
      <div class="comment-header">
        <div class="asset-meta">
          <span class="byline">
            <$mt:CommentAuthorIdentity$>
<mt:IfCommentParent>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>から<a href="<mt:CommentParent><$mt:CommentLink$></mt:CommentParent>"><mt:CommentParent><$mt:CommentAuthor$></mt:CommentParent></a>への返信
<mt:Else>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>
</mt:IfCommentParent>
              | <a href="<$mt:CommentLink$>"><abbr class="published" title="<$mt:CommentDate format_name="iso8601"$>"><$mt:CommentDate$></abbr></a>
<mt:IfCommentsAccepted>
              | <$mt:CommentReplyToLink$>
</mt:IfCommentsAccepted>
[ <mt:getVar name="entry_comment_count" /> ]
<mt:setVar name="entry_comment_count" op="--" />
          </span>
        </div>
      </div>
      <div class="comment-content">
        <$mt:CommentBody$>
      </div>
    </div>
  </div>
  <mt:CommentsFooter>
</div>
  </mt:CommentsFooter>
</mt:Comments>
...後略...

上記の完成例

Comments [0] | Trackbacks [0]

Amazon 2009年5月の注文ランキング

June 2,2009 12:17 AM
Category:[Amazon]
Tag:[, ]
Permalink

2009 年 5 月の Amazon 注文ランキングです。先月に引き続き、今月も1位は「Movable Type逆引きデザイン事典[4.2/4.1対応]」です。お買い上げくださった方、ありがとうございました。

1位:Movable Type逆引きデザイン事典[4.2/4.1対応]

Movable Type逆引きデザイン事典[4.2/4.1対応]Movable Type逆引きデザイン事典[4.2/4.1対応]
荒木 勇次郎

翔泳社 2009-04-21
売り上げランキング : 2457

Amazonで詳しく見る
by G-Tools

2位:即戦プロ技 Movable Typeデザインテンプレートコレクション

即戦プロ技 Movable Typeデザインテンプレートコレクション即戦プロ技 Movable Typeデザインテンプレートコレクション
エクストラコミュニケーションズ

毎日コミュニケーションズ 2009-05-13
売り上げランキング : 37226

Amazonで詳しく見る
by G-Tools

2位:基本からしっかりわかる Movable Type 4.2 カスタマイズブック(Web Designing Books)

基本からしっかりわかる Movable Type 4.2 カスタマイズブック(Web Designing Books)基本からしっかりわかる Movable Type 4.2 カスタマイズブック(Web Designing Books)
大藤 幹

毎日コミュニケーションズ 2008-09-20
売り上げランキング : 6281

Amazonで詳しく見る
by G-Tools

4位:MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現!

MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現!MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現!
藤本 壱

ラトルズ 2009-02
売り上げランキング : 8891

Amazonで詳しく見る
by G-Tools

4位:ウェブはバカと暇人のもの

ウェブはバカと暇人のもの (光文社新書)ウェブはバカと暇人のもの (光文社新書)
中川淳一郎

光文社 2009-04-17
売り上げランキング : 132

Amazonで詳しく見る
by G-Tools

6位:GriffinTechnology iTalk Pro GRI-IP-000063

GriffinTechnology iTalk Pro GRI-IP-000063GriffinTechnology iTalk Pro GRI-IP-000063

Griffin Technology 2006-11-10
売り上げランキング : 314

Amazonで詳しく見る
by G-Tools

6位:抗ウイルスマスク 普通3枚

抗ウイルスマスク 普通3枚抗ウイルスマスク 普通3枚

抗ウイルスマスク 2005-11-28
売り上げランキング : 7260

Amazonで詳しく見る
by G-Tools

8位:Movable Type 4.2 パーフェクトガイド

Movable Type 4.2 パーフェクトガイドMovable Type 4.2 パーフェクトガイド
荒木 勇次郎

毎日コミュニケーションズ 2008-07-31
売り上げランキング : 1457

Amazonで詳しく見る
by G-Tools

8位:現場のプロから学ぶXHTML+CSS

現場のプロから学ぶXHTML+CSS現場のプロから学ぶXHTML+CSS
CSS Nite

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

Amazonで詳しく見る
by G-Tools

8位:アスベル ドリンクビオ 8213 ブルー D-221

アスベル ドリンクビオ 8213 ブルー D-221アスベル ドリンクビオ 8213 ブルー D-221

アスベル
売り上げランキング : 1839

Amazonで詳しく見る
by G-Tools

8位:Logitec iPod対応 ICレコーダーアダプタ LIC-IREC01

Logitec iPod対応 ICレコーダーアダプタ LIC-IREC01Logitec iPod対応 ICレコーダーアダプタ LIC-IREC01

ロジテック 2008-03-18
売り上げランキング : 1350

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

月別アーカイブリストの年別表示

June 1,2009 1:55 AM
Category:[月別アーカイブ]
Tag:[, , ]
Permalink

Movable Type 4.1 以降で、ネイティブタグを使って月別アーカイブリストを年別に表示するカスタマイズです。

これまで、月別アーカイブリストを年別に分割して表示させるために、ArchiveDateHeader プラグインと ArchiveDateFooter プラグインを使った方法を紹介してきましたが、MT4.1 以降ではネイティブタグのみで表示することが可能になっています。

公開テンプレート(変更前)
月別アーカイブの年別表示(変更前)

公開テンプレート(変更後)
月別アーカイブの年別表示(変更後)

デフォルトテンプレート(変更前)
月別アーカイブの年別表示(変更前)

デフォルトテンプレート(変更後)
月別アーカイブの年別表示(変更後)

ここでは公開テンプレートとデフォルトテンプレートでのサブテンプレートを紹介します。ツリー化や折りたたみなどの付加機能は別エントリーしたいと思います。

1.公開テンプレート

ブログ管理画面の「デザイン」→「ウィジェット」で「月別アーカイブ」を下記の内容に入れ替えてください。

<mt:ifArchiveTypeEnabled archive_type="Monthly">
<dt class="sidetitle">Monthly Archives</dt>
<dd class="side">
  <mt:archiveList archive_type="Monthly">
    <mt:archiveListHeader>
  <ul>
    <li><mt:archiveDate format="%Y&#24180;" />
      <ul>
      <mt:archiveDate format="%Y&#24180;" setvar="year" />
    </mt:archiveListHeader>
    <mt:archiveDate format="%Y&#24180;" setvar="current_year" />
    <mt:if name="current_year" ne="$year">
      </ul>
    </li>
    <li><mt:getVar name="current_year" />
      <ul>
    </mt:if>
    <mt:getVar name="current_year" setvar="year" />
        <li><a href="<mt:archiveLink />"><mt:archiveTitle regex_replace="/\d+&#24180;/","" /></a> [<mt:archiveCount />]</li>
    <mt:archiveListFooter>
      </ul>
    </li>
  </ul>
    </mt:archiveListFooter>
  </mt:archiveList>
</dd>
</mt:ifArchiveTypeEnabled>

2.デフォルトテンプレート(MT4.1)

ブログ管理画面の「デザイン」→「ウィジェット」で「月別アーカイブ」を下記の内容に入れ替えてください。

<mt:IfArchiveTypeEnabled archive_type="Monthly">
  <mt:ArchiveList archive_type="Monthly">
    <mt:ArchiveListHeader>
<div class="widget-archive-monthly widget-archive widget">
  <h3 class="widget-header"><$mt:ArchiveTypeLabel$> <a href="<$mt:Link template="archive_index"$>">アーカイブ</a></h3>
  <div class="widget-content">
    <ul class="widget-list">
      <li class="widget-list-item"><mt:archiveDate format="%Y&#24180;" />
        <ul class="widget-list">
      <mt:archiveDate format="%Y&#24180;" setvar="year" />
    </mt:ArchiveListHeader>
    <mt:archiveDate format="%Y&#24180;" setvar="current_year" />
    <mt:if name="current_year" ne="$year">
        </ul>
      </li>
      <li class="widget-list-item"><mt:getVar name="current_year" />
        <ul class="widget-list">
    </mt:if>
    <mt:getVar name="current_year" setvar="year" />
          <li class="widget-list-item"><a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle regex_replace="/\d+&#24180;/",""$> (<$mt:ArchiveCount$>)</a></li>
    <mt:ArchiveListFooter>
        </ul>
      </li>
    </ul>
  </div>
</div>
    </mt:ArchiveListFooter>
  </mt:ArchiveList>
</mt:IfArchiveTypeEnabled>

3.デフォルトテンプレート(MT4.2~)

ブログ管理画面の「デザイン」→「ウィジェット」で「月別アーカイブ」を下記の内容に入れ替えてください。

<mt:IfArchiveTypeEnabled archive_type="Monthly">
  <mt:ArchiveList archive_type="Monthly">
    <mt:ArchiveListHeader>
<div class="widget-archive-monthly widget-archive widget">
  <h3 class="widget-header"><$mt:ArchiveTypeLabel$> <a href="<$mt:Link template="archive_index"$>">アーカイブ</a></h3>
  <div class="widget-content">
    <ul>
      <li><mt:archiveDate format="%Y&#24180;" />
        <ul>
      <mt:archiveDate format="%Y&#24180;" setvar="year" />
    </mt:ArchiveListHeader>
    <mt:archiveDate format="%Y&#24180;" setvar="current_year" />
    <mt:if name="current_year" ne="$year">
        </ul>
      </li>
      <li><mt:getVar name="current_year" />
        <ul>
    </mt:if>
    <mt:getVar name="current_year" setvar="year" />
          <li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle regex_replace="/\d+&#24180;/",""$> (<$mt:ArchiveCount$>)</a></li>
    <mt:ArchiveListFooter>
        </ul>
      </li>
    </ul>
  </div>
</div>
    </mt:ArchiveListFooter>
  </mt:ArchiveList>
</mt:IfArchiveTypeEnabled>

サブテンプレートの詳細については、「Movalbe Type 4.2 パーフェクトガイド」の「6.28 月別アーカイブ一覧に年別の見出しを表示する」をご覧ください。

Movable Type 4.2 パーフェクトガイドMovable Type 4.2 パーフェクトガイド
荒木 勇次郎

毎日コミュニケーションズ 2008-07-31
売り上げランキング : 1457

Amazonで詳しく見る
by G-Tools
Comments [0] | Trackbacks [1]
Now loading...
Introduction
List of "June 2009"
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site
loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.12