Top > Movable Type > カスタマイズ > 管理画面 [全て開く]
2011年8月 6日

Movable Type 5.1のブログ選択メニューをカスタマイズする

August 6,2011 1:11 AM
Tag:[, ]
Permalink

「Movable Type 5.1のブログ選択メニューについて」でブログ選択メニューの基本動作について紹介しましたが、本エントリーではブログ選択メニューに表示するウェブサイトやブログの数をカスタマイズする方法を紹介します。

このカスタマイズを行うことでブログ選択メニューに表示するウェブサイト・ブログ数を増やすことができます。

変更前
ブログ選択メニュー(変更前)

変更後
ブログ選択メニュー(変更後)

1.ブログ数表示のカスタマイズ

任意のエディタでlib/MT/App/CMS.pmを開き、以下の赤色部分を青色の内容に変更します。MT5.12であれば3100行目辺りにあります。

変更前

sub build_blog_selector {
    my $app = shift;
    my ($param) = @_;
    …中略…
 
    # Load favorites blogs
    my @fav_blogs = @{ $auth->favorite_blogs || [] };
    if ( scalar @fav_blogs > 5 ) {
        @fav_blogs = @fav_blogs[ 0 .. 4 ];
    }
 
    # How many blogs that the user can access?
    my %args;
    my %terms;
    $args{join}
        = MT::Permission->join_on( 'blog_id',
        { author_id => $auth->id, permissions => { not => "'comment'" } } )
        if !$auth->is_superuser
            && !$auth->permissions(0)->can_do('edit_templates');
    $terms{class}     = 'blog';
    $terms{parent_id} = \">0"; # baka editors ";
    $args{limit}      = 6;        # Don't load over 6 blogs
    my @blogs = $blog_class->load( \%terms, \%args );
 
# Special case. If this user can access 5 blogs or smaller then load those blogs.
    $param->{selector_hide_blog_chooser} = 1;
    if ( @blogs && scalar @blogs == 6 ) {
 
        # This user can access over 6 blogs.
        if (@fav_blogs) {
            @blogs = $blog_class->load( { id => \@fav_blogs } );
        }
        else {
            @blogs = ();
        }
        $param->{selector_hide_blog_chooser} = 0;
    }
    …後略…

変更後

sub build_blog_selector {
    my $app = shift;
    my ($param) = @_;
    …中略…
 
    # Load favorites blogs
    my @fav_blogs = @{ $auth->favorite_blogs || [] };
    if ( scalar @fav_blogs > 10 ) {
        @fav_blogs = @fav_blogs[ 0 .. 9 ];
    }
 
    # How many blogs that the user can access?
    my %args;
    my %terms;
    $args{join}
        = MT::Permission->join_on( 'blog_id',
        { author_id => $auth->id, permissions => { not => "'comment'" } } )
        if !$auth->is_superuser
            && !$auth->permissions(0)->can_do('edit_templates');
    $terms{class}     = 'blog';
    $terms{parent_id} = \">0"; # baka editors ";
    $args{limit}      = 10;        # Don't load over 6 blogs
    my @blogs = $blog_class->load( \%terms, \%args );
 
# Special case. If this user can access 5 blogs or smaller then load those blogs.
    $param->{selector_hide_blog_chooser} = 1;
    if ( @blogs && scalar @blogs == 10 ) {
 
        # This user can access over 6 blogs.
        if (@fav_blogs) {
            @blogs = $blog_class->load( { id => \@fav_blogs } );
        }
        else {
            @blogs = ();
        }
        $param->{selector_hide_blog_chooser} = 0;
    }
    …後略…

この変更ではウェブサイト管理画面・システム管理画面・ユーザーダッシュボードで最大10ブログ、ブログ管理画面で最大9ブログを表示するようにしています。

また、「ブログを選択」のテキストリンクをクリックしたときに適切な表示にするために、lib/MT/App/CMS/Blog.pmを開き、以下の赤色部分を青色の内容に変更します。MT5.12であれば3100行目辺りにあります。

変更前

sub dialog_select_weblog {
    my $app = shift;
 
    my $favorites = $app->param('select_favorites');
    my %favorite;
    my $confirm_js;
    my $terms = {};
    my $args  = {};
    my $auth  = $app->user or return;
 
    if ($favorites) {
        my @favs = @{ $auth->favorite_blogs || [] };
        if (@favs) {
            @favs = @favs[ 0 .. 4 ] if scalar @favs > 5;
            $terms->{id} = { not => \@favs };
        }
        $confirm_js = 'saveFavorite';
    }
    …後略…

変更後

sub dialog_select_weblog {
    my $app = shift;
 
    my $favorites = $app->param('select_favorites');
    my %favorite;
    my $confirm_js;
    my $terms = {};
    my $args  = {};
    my $auth  = $app->user or return;
 
    if ($favorites) {
        my @favs = @{ $auth->favorite_blogs || [] };
        if (@favs) {
            @favs = @favs[ 0 .. 9 ] if scalar @favs > 10;
            $terms->{id} = { not => \@favs };
        }
        $confirm_js = 'saveFavorite';
    }
    …後略…

2.ウェブサイト表示数のカスタマイズ

ウェブサイト表示数は、1項で変更した箇所の少し下にあります。赤色部分を青色の内容に変更します。

変更前

    …前略…
    # Load favorites or all websites
    my @fav_websites = @{ $auth->favorite_websites || [] };
    my @websites;
    @websites = $website_class->load( { id => \@fav_websites } )
        if scalar @fav_websites;
 
    my $max_load = $blog && $blog->is_blog ? 3 : 4;
    if ( scalar @fav_websites < $max_load ) {
 
        # Load more accessible websites
        %args  = ();
        %terms = ();
 
        $args{join} = MT::Permission->join_on( 'blog_id',
            { author_id => $auth->id, permissions => { not => "'comment'" } }
            )
            if !$auth->is_superuser
                && !$auth->permissions(0)->can_do('edit_templates');
        $terms{class} = 'website';
        my $not_ids;
        push @$not_ids, @fav_websites;
        push @$not_ids, $blog->website->id if $blog && $blog->is_blog;
        $terms{id} = { not => $not_ids } if scalar @$not_ids;
        $args{limit} = $max_load
            - ( scalar @fav_websites );    # Don't load over 3 ~ 4 websites.
        my @sites = $website_class->load( \%terms, \%args );
        push @websites, @sites;
    }
 
    if ( @fav_websites ) {
        my $i;
        my %sorted = map{ $_ => $i++ } @fav_websites;
        foreach ( @websites ) {
            $sorted{$_->id} = scalar @websites if !exists $sorted{$_->id};
        }
        @websites = sort { ( $sorted{$a->id} || 0 ) <=> ( $sorted{$b->id} || 0 ) } @websites;
    }
    unshift @websites, $blog->website if $blog && $blog->is_blog;
 
# Special case. If this user can access 3 websites or smaller then load those websites.
    $param->{selector_hide_website_chooser} = 1;
    if ( @websites && scalar @websites == 4 ) {
        pop @websites;
        $param->{selector_hide_website_chooser} = 0;
    }
    …後略…

変更後

    …前略…
    # Load favorites or all websites
    my @fav_websites = @{ $auth->favorite_websites || [] };
    my @websites;
    @websites = $website_class->load( { id => \@fav_websites } )
        if scalar @fav_websites;
 
    my $max_load = $blog && $blog->is_blog ? 9 : 10;
    if ( scalar @fav_websites < $max_load ) {
 
        # Load more accessible websites
        %args  = ();
        %terms = ();
 
        $args{join} = MT::Permission->join_on( 'blog_id',
            { author_id => $auth->id, permissions => { not => "'comment'" } }
            )
            if !$auth->is_superuser
                && !$auth->permissions(0)->can_do('edit_templates');
        $terms{class} = 'website';
        my $not_ids;
        push @$not_ids, @fav_websites;
        push @$not_ids, $blog->website->id if $blog && $blog->is_blog;
        $terms{id} = { not => $not_ids } if scalar @$not_ids;
        $args{limit} = $max_load
            - ( scalar @fav_websites );    # Don't load over 3 ~ 4 websites.
        my @sites = $website_class->load( \%terms, \%args );
        push @websites, @sites;
    }
 
    if ( @fav_websites ) {
        my $i;
        my %sorted = map{ $_ => $i++ } @fav_websites;
        foreach ( @websites ) {
            $sorted{$_->id} = scalar @websites if !exists $sorted{$_->id};
        }
        @websites = sort { ( $sorted{$a->id} || 0 ) <=> ( $sorted{$b->id} || 0 ) } @websites;
    }
    unshift @websites, $blog->website if $blog && $blog->is_blog;
 
# Special case. If this user can access 3 websites or smaller then load those websites.
    $param->{selector_hide_website_chooser} = 1;
    if ( @websites && scalar @websites == 9 ) {
        pop @websites;
        $param->{selector_hide_website_chooser} = 0;
    }
    …後略…

この変更ではシステム管理画面・ユーザーダッシュボードで最大5ウェブサイト、ウェブサイト管理画面で最大4ウェブサイトを表示するようにしています。

Comments [2] | Trackbacks [0]
2011年4月27日

Movable Type 5.1のリスティングフレームワークで独自管理画面を作る(その1)

April 27,2011 2:55 AM
Tag:[, , ]
Permalink

Movable Type 5.1のリスティングフレームワークで独自管理画面を作ってみました。何回かに分けて紹介します。

経緯は、現在執筆中のMT5.1書籍で紹介するプラグインをMT5.0xで開発しており、その中にメールアドレス一覧画面があるのですが、MT5.1で正常に表示されなくなってしまいました。

ちなみにこれがMT5.0xでのメールアドレス一覧画面です。

Movable Type 5.0のメールアドレス一覧画面
Movable Type 5.0のメールアドレス一覧画面

MT5.1ベータでそのまま表示すると、「表示オプション」がものすごいことに・・・。

Movable Type 5.1のメールアドレス一覧画面(そのまま移行)
Movable Type 5.0のメールアドレス一覧画面

で、「表示オプション」を非表示にしたら表示が崩れてました。

Movable Type 5.1のメールアドレス一覧画面(表示オプションはずした状態)
Movable Type 5.0のメールアドレス一覧画面(表示オプションはずした状態)

この画面を修正するよりもリスティングフレームワークを使った方が早いのではないかと思い、リスティングフレームワークは既存の一覧画面にプロパティを追加する程度しか知らない状態ですが、思い切って変更することにしました。

1.独自テーブルの作成

独自画面を作るにはデータベースに独自テーブルを用意する必要があります。ここでは「name」「email」「description」といったフィールドをもつmt_addressというテーブルを予め作成している前提で説明を進めます。

独自テーブルの作成方法は「Movable Type 5 プロフェッショナルガイド」の「21-5 フィールドの拡張とオブジェクトテーブルの追加」などを参考にしてください(宣伝)。

2.画面の追加

Movable Type 5.0までは一覧表示用の管理画面を、プラグイン側で「hoge.tmpl」などで用意する必要がありましたが、リスティングフレームワークでは次のレジストリ定義のみで表示されるようになります(ということが分かりました)。

listing_screens:
    address:
        primary: name
        screen_label: address
        object_label: address
        object_label_plural: all_address
        default_sort_key: name
        view: system
        scope_mode: none

2行目の「address」は、テーブル定義のdatasource(例えばmt_entryなら'entry')を設定するようです。これで一覧画面で利用するオブジェクトを指定します。

3行目の「primary」はリストの最初に表示するフィールドを指定します。この設定を行わないと、後の手順で説明する、一番左に表示するチェックボックスが横に広がってしまうようなので必ず設定しましょう。なお、このエントリーの最後に掲載するリンク先の説明では、primaryは、

プライマリ表示が指定されたカラムは、表示幅の最大値が設定されず、他のカラムが非表示になった場合にテーブルを埋める役割を果たします。

となっています。ちなみにprimaryを設定しても、後でお見せする画像でお分かりのとおり、そのフィールドが一覧に表示されるわけではありません。表示させるには「list_properties:」の設定が別途必要です。

4行目から6行目は画面に表示する部分になります。「screen_label」はtitle要素とh1要素になります。「object_label_plural」はフィルタ部分の「すべての××」の「××」の部分になります。

7行目の「default_sort_key」は、一覧を表示したときにソートするフィールドを指定します。

8行目の「view」は一覧画面を表示するスコープを指定します。ここでは「system」を指定しているのでシステム管理画面のみ表示させるようにしています。

9行目の「scope_mode」はblog_idの条件を設定するためのもののようで、コア機能のソースコードでは「none」または「this」が設定されていました。カテゴリやフォルダなどでは「this」、その他はおおむね「none」が設定されていたので、一覧に表示するオブジェクトをブログIDで絞り込むための設定ではないかと推測しています(説明が不足しているとか間違っていたらご指摘ください)。

ここまでの設定で次の画面が表示されました。

Movable Type 5.1のメールアドレス一覧画面(listing_screensまで指定)
Movable Type 5.1のメールアドレス一覧画面

listing_screensに設定可能な項目は他にも色々あります。詳細は以下のリンクを参照してください。

Registry: listing_screens

次回に続きます。

Comments [2] | Trackbacks [0]
2010年10月13日

Movable Typeのインポート・エクスポートでカスタムフィールドを扱う

October 13,2010 2:22 AM
Tag:[, , ]
Permalink

全く気がついてませんでしたが、Movable Type 5からブログ記事のインポート・プログ記事のエクスポートでカスタムフィールドが扱えるようになっています。

ざっくりですが、確認できた部分のみ情報展開しておきます。

1.インポートデータイメージ

カスタムフィールドを含むインポートデータのイメージは次の通りです。青色がカスタムフィールドの部分です。

AUTHOR: yujiro
TITLE: test
BASENAME: test
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: richtext
ALLOW PINGS: 1
DATE: 10/13/2010 01:33:32 AM
-----
BODY:
これは本文です。<br />これは本文です。<br />これは本文です。<br />
-----
EXTENDED BODY:
これは追記です。<br />これは追記です。<br />
これは追記です。<br />
<br />
-----
EXCERPT:
これは概要です。
これは概要です。
これは概要です。
-----
KEYWORDS:
a,b,c
-----
 
 
-----
CF50_CF_4: 0
CF50_CF_9: 1
-----
CF50_CF_3:
あああ
いいい
うううう
-----
CF50_CF_1: 3000
CF50_URL: http://www.koikikukan.com/
CF50_CF_2: SS
CF50_CF: パソコン
CF50_CF_5: 10/01/2010 12:34:56 PM
CF50_CF_6: あああ
--------
…後略…

3.フォーマット

カスタムフィールド部分のフォーマットは、カスタムフィールド名として、プレフィクス「CF50_」の後方にベースネームを記述し、「:」を区切り文字として、値を記述します。「:」の直後には半角スペースが必要です。

「テキスト(複数行)」などのように、内容が複数行にまたがる場合は本文などと同様、改行して記述します。

テキスト/チェックボックス/URL/ドロップダウン/ラジオボタンの場合

CF50_CF: パソコン

テキスト(複数行)の場合

CF50_CF_3:
あああ
いいい
うううう

日付と時刻の場合

CF50_CF_5: 10/01/2010 12:34:56 PM

4.プレフィクスの意味

「CF50_」の「CF」はCustomField(カスタムフィールド)の頭文字、「50」はMTのバージョンを示しているものと推測します。

少なくともMT5.0xの実装では、「CF50_」がついていないとカスタムフィールドとして扱われません。

5.エクスポート対象外のデータ

アイテム・画像・オーディオ・ビデオ・埋め込みオブジェクトはエクスポートされませんでした。

Comments [0] | Trackbacks [0]
2010年8月23日

ブログ記事の本文編集エリアを拡張する

August 23,2010 2:22 AM
Tag:[, ]
Permalink

Movable Type 5のブログ記事/ウェブページにある、本文編集エリアの縦幅を拡張する方法です。

変更前
変更前

変更後
変更後

編集エリアのスタイルは、mt-static/css/editor/editor.cssの以下のセレクタで設定しています。

.edit-entry #editor-content-enclosure { 
    height: 350px;
}
.edit-entry #editor-content-textarea { 
    height: 355px;
    border: 0 ! important;
}

編集エリアの縦幅を550pxに変更したい場合、以下のように修正します。

.edit-entry #editor-content-enclosure {
    height:550px;
}
.edit-entry #editor-content-textarea {
    height:550px;
    border: 0 ! important;
}

上記のように、直接editor.cssを編集しなくても、CMSHeadプラグインを利用して次のように設定すれば、サイズを簡単に変更することができます。

CMSHeadプラグイン

編集エリアの横幅は、ブラウザの横幅を広げれば拡張されます。

Comments [0] | Trackbacks [0]
2010年4月13日

Movable Type(MT)のコメント投稿者の承認と禁止について

April 13,2010 2:55 AM
Tag:[, ]
Permalink

Movable Type(MT)のコメントに関する機能のひとつに、コメント一覧の「アクション...」に表示される、次の4つの項目があります。

  • コメント投稿者を承認
  • コメント投稿者の承認を解除
  • コメント投稿者を禁止
  • コメント投稿者の禁止を解除

本エントリーではこの4つの項目の機能について解説します。なお、このエントリーの内容については、「Movable Type 4.2 パーフェクトガイド」の「7.4 コメント認証とTypeKeyの登録」で、図入りで解説しています。

1.「コメント投稿者」について

まず、「コメント投稿者」という用語の定義です。

「コメント投稿者」とは、任意の認証方式を利用して投稿したコメントの投稿者を指し、認証なしで投稿したコメントの投稿者はここには含まれません。

2.「承認」と「禁止」について

「承認」とは、任意の認証方式を利用して投稿したコメントのユーザーに対し、次回以降のコメント投稿を自動公開することを指します。「禁止」はその逆で、あるユーザーに対し、任意の認証方式を利用してのコメント投稿を禁止することを指します。

3.「承認」と「禁止」を有効にするためのウェブサイト・ブログの設定

この機能は、ナビゲーションの「設定」→「コミュニケーション」→「コメントポリシー」→「即時公開する条件」で、「ブログで承認されたコメント投稿者のみ」を選択している場合のみ有効になります(多分)。

この設定にしておくことで、管理者が投稿コメントのユーザーに対し、「承認」または「禁止」の設定を行うことで、コメントの自動公開または投稿禁止の設定を制御することができます。

4.「コメント投稿者を承認」の動作

以下、TypePad認証を利用したコメント投稿の例で示します。

下の図は、コメント投稿直後のコメント一覧です。このコメントは非公開で、コメント投稿者は承認されていない状態です。承認されていない場合、ユーザー名の右側に表示されている人型のアイコンには、何もついていません。

このコメントをチェックして「公開」をクリックすれば、コメント自体は公開されます(注意アイコンがチェックマークのアイコンに変化します)が、このユーザーは次のコメント投稿でも保留されてしまいます。

そこで、コメントを選択した状態で「コメント投稿者を承認」を選択します。

人のアイコンにチェックマークがつきました。これで、このコメント投稿者のコメントは、次回のコメント投稿時に、自動的に公開されます。

なお、コメント保留の状態で承認だけを行っても、該当コメントは公開されないので注意してください。

5.「コメント投稿者を承認を解除」の動作

4項と逆の動作で、コメント投稿者の承認を解除します。これで、コメント投稿者のコメントを公開するには管理者による公開が必要になります。

6.「コメント投稿者を禁止」の動作

コメント投稿者が、その認証方式を使用してコメントを投稿できないようにします。

禁止すると、人のアイコンに赤いマークがつきます。

禁止された認証方式でサインインすると、次のようなメッセージが表示されます。

7.「コメント投稿者を禁止」の動作

6項と逆の動作で、コメント投稿者の禁止を解除します。これで、コメント投稿者は該当の認証方式でコメントを投稿できるようになります。

8.Movable Type認証のユーザーについて

認証方式にはMovable Typeユーザーも含まれますが、他の認証方式と若干異なり、コメント登録者として設定した時点で承認状態となります。また、禁止への遷移は可能です。

ただし、Movable Type 4.2xまでは若干動作が異なります(このエントリーはMovable Type 5.0x を元に確認しています)。

9.状態遷移について

上記の説明では、承認→承認の解除→禁止→禁止の解除という流れを示しましたが、承認→禁止、あるいは禁止→承認という、一足飛びの状態遷移も可能です。

Comments [0] | Trackbacks [0]
2010年3月26日

CustomFieldAssetDetailsHandler プラグイン v0.20

March 26,2010 2:55 AM
Tag:[, , ]
Permalink

Movable Type 4.2 向けに公開していた、画像のカスタムフィールドでオプション画面を表示する「VisibleCustomFieldImage プラグイン 0.10」を、Movable Type 5対応にしました。プラグイン名も「CustomFieldAssetDetailsHandler」に変更しました。

このプラグインを用いることで、Movable Type 5のカスタムフィールドに画像を選択した場合にスキップされてしまう、アイテムの情報入力画面をハンドリングできます(下)。

アイテムの情報入力画面をハンドリング

なお、「ブログ記事に画像を表示」「サムネイルを利用」「ポップアップウィンドウ~」の項目は入力しても効果はありません(本文・追記のテキストエリアにカーソルをあてている状態で有効となるため)

1.価格

CustomFieldAssetDetailsHandlerプラグインの価格は次の通りです。

  • 有償ライセンスによる商用利用:1050円/1サーバ
  • 個人ライセンス(無償)/有償ライセンスによる非商用利用/Movable Type Open Source:無償

有償でご利用の場合、プラグインの動作確認後、下記のPayPalの「今すぐ購入」をクリックして、指定の金額をお支払いください。銀行振り込みをご希望の場合はお問い合わせからご連絡ください。折り返し振り込み口座をご連絡致します。

無償でご利用の場合も、プラグイン開発やサポート等にご支援・ご賛同くださる方からの寄付をお待ち申し上げます。下記の「寄付」のリンクをクリックすると Paypal によるお支払いページにジャンプします。

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

下記のリンクをクリックしてプラグインをダウンロードします。

CustomFieldAssetDetailsHandler_0_20.zip

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

ダウンロードした CustomFieldAssetDetailsHandler_0_20.zip を解凍して、中にある CustomFieldAssetDetailsHandlerフォルダを plugins ディレクトリにアップロードします。システム管理画面のプラグイン一覧に「CustomFieldAssetDetailsHandler~」が表示されればOKです。

プラグイン一覧

4.使い方

予め作成している、画像用カスタムフィールドの「imageを選択」をクリック。

画像用カスタムフィールド

「新しい画像をアップロード」をクリック(またはアップロード済の画像を選択して「次へ」をクリック)。

「新しい画像をアップロード」をクリック

新しい画像をアップロードする場合は「参照」をクリック。

「参照」をクリック

アップロードしたい画像選択後、「アップロード」をクリック。

「アップロード」をクリック

オプション画面が表示されます(これが本プラグインの機能)。
機能はファイルアップロードのオプション画面と同じですが一応掲載しておきます。

オプション画面

  • 名前:アイテムの名前を入力します。
  • 説明:アイテムの説明を入力します。
  • タグ:アイテムのタグを入力します。

「完了」をクリックすると、Movable Type の標準機能でサムネイル画像が管理画面に表示されます。なお、「ブログ記事に画像を表示」「サムネイルを利用」「ポップアップウィンドウ~」の項目は入力しても効果はありません(本文・追記のテキストエリアにカーソルをあてている状態で有効となるため)。

サムネイル画像

ブログ記事を投稿すると、予めテンプレートに設定していたカスタムフィールドのテンプレートタグ部分にサムネイル画像が表示されます。

サムネイル画像が表示

5.注意事項

オプション画面下の「画像を記事/ページに表示」をチェックして「サムネイルを利用」や「ポップアップ~」にチェックをつけると、サムネイル画像やポップアップが生成されて、アイテムとして管理対象になります。

ただし、これらを表示するための(X)HTMLマークアップが本文・追記フィールドに埋め込まれていないため、これらのアイテムは基本的に利用できません。

アイテムの一覧

利用したい場合は、本文に次のような(X)HTMLマークアップを埋め込んでください。次の例はサムネイルとポップアップファイルを組み合わせたものです。

<a href="http://user-domain/assets_c/yyyy/mm/finename-asset_id.html"
  onclick="window.open('http://user-domain/assets_c/yyyy/mm/finename-asset_id.html','popup','width=asset_width,height=asset_height,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">
  <img src="http://user-domain/assets_c/yyyy/mm/thumbnail" width="thumbnail_width" height="thumbnail_height" alt="asset_label" class="mt-image-none" style="" />
</a>

赤色部分は次の内容に書き換えてください。

  • user-domain:サイトURL
  • yyyy:アイテムをアップロードした年
  • mm:アイテムをアップロードした月
  • asset_id:アイテムID
  • finename:アイテムのファイル名(拡張子なし)
  • thumbnail:アイテムのサムネイルファイル名
  • asset_width:アイテムの幅
  • asset_height:アイテムの高さ
  • asset_label:アイテムの名前
  • thumbnail_width:サムネイルの幅
  • thumbnail_height:サムネイルの高さ
Comments [4] | Trackbacks [0]
2010年1月29日

テンプレート一覧のアクションに「テンプレートの再構築」を追加する

Movable Type の過去のバージョンでは、テンプレート一覧画面のアクションの一覧に「テンプレートの再構築」がありました。図はMovable Type 4.1のテンプレート一覧画面です。

Movable Type 4.1のテンプレート一覧画面

バージョン4.1x からボタンに代わり、Movable Type 5.0 でも「公開」ボタンが継承されています。

Movable Type 5.0のテンプレート一覧画面

アクションの一覧に「テンプレートの再構築」はありません。

Movable Type 5.0のテンプレート一覧画面

が、ソースコードは残っており、利用可能なようなので紹介します。

lib/MT/App/CMS.pm の core_list_actions() にある次のコメントアウトのマーク(赤色部分)をはずします。

sub core_list_actions {
    my $app = shift;
    my $pkg = '$Core::MT::CMS::';
    return {
        …中略…
        'template' => {
            refresh_tmpl_templates => {
                label      => "Refresh Template(s)",
                code       => "${pkg}Template::refresh_individual_templates",
                permit_action => 'refresh_template_via_list',
                order      => 100,
                condition  => sub {
                    my $app = MT->app;
                    my $tmpl_type = $app->param('filter_key') || '';
                    return
                        $tmpl_type eq 'backup_templates'
                            ? 0
                            : 1;
                },
            },
 
            # Now a button!
            # publish_index_templates => {
            #     label => "Publish Template(s)",
            #     code => "${pkg}Template::publish_index_templates",
            #     permission => 'rebuild',
            #     condition => sub {
            #         my $app = MT->app;
            #         my $tmpl_type = $app->param('filter_key');
            #         return $app->mode eq 'itemset_action'  ? 1
            #              : !$app->blog                     ? 0
            #              : !$tmpl_type                     ? 0
            #              : $tmpl_type eq 'index_templates' ? 1
            #              :                                   0
            #              ;
            #     },
            #     order => 200,
            # },
            # Now a button!
            # publish_archive_templates => {
            #     label      => "Publish Template(s)",
            #     code       => "${pkg}Template::publish_archive_templates",
            #     permission => 'rebuild',
            #     condition  => sub {
            #         my $app       = MT->app;
            #         my $tmpl_type = $app->param('filter_key');
            #         return $app->mode eq 'itemset_action' ? 1
            #           : !$app->blog ? 0
            #           : !$tmpl_type ? 0
            #           : $tmpl_type eq 'archive_templates' ? 1
            #           :                                     0;
            #     },
            #     order => 300,
            # },
            copy_templates => {
                label      => "Clone Template(s)",
                code       => "${pkg}Template::clone_templates",
                permit_action => 'copy_template_via_list',
                condition  => sub {
                    my $app = MT->app;
                    my $tmpl_type = $app->param('filter_key') || '';
                    return
                          $tmpl_type eq 'system_templates' ? 0
                        : $tmpl_type eq 'email_templates'  ? 0
                        : $tmpl_type eq 'backup_templates'  ? 0
                        :                                    1;
                },
                order => 400,
            },
        },
…後略…

これで表示されるようになります。個人的には「再構築」という表現の方が分かりやすいです。

Movable Type 5.0のテンプレート一覧画面(変更後)

Comments [0] | Trackbacks [0]
2009年11月 4日

Movable Type の管理画面用テンプレートファイル名を管理画面に表示する

Movable Type の管理画面は、管理画面テンプレート(tmpl 配下の.tmpl ファイル)が使われます。管理画面をカスタマイズする際、alt-tmpl ディレクトリを使って独自の代替テンプレートを作ったり、プラグインで管理画面テンプレートの一部を書き換えたりします。

が、そもそもどの管理画面にどの管理画面テンプレートが使われているか、対応を調べるのが結構面倒です。慣れればなんとなく分かってくるのですが、これから管理画面テンプレートをカスタマイズしようという方には結構面倒な作業です。

ということで、利用されている管理画面を一発でみつけるためのカスタマイズを紹介します。このカスタマイズを行なうと、次のように管理画面のフッタにテンプレートファイル名を表示します。

テンプレートファイル名を管理画面に表示

以下のカスタマイズは MT5 に対して行なっていますが、MT4.x でも同じ方法でカスタマイズが可能と思います。また、もっとエレガントな方法がありましたらご指導ください。

1.MT.pm の修正

lib/MT.pm を任意のエディタで開き、関数 load_tmpl に青色で示した1行を追加します。

...前略...
sub load_tmpl {
    my $mt = shift;
...中略...
    return $mt->error(
        $mt->translate("Loading template '[_1]' failed.", $file)) unless $tmpl;
    $mt->set_default_tmpl_params($tmpl);
$param->{template_file} = $file;
    $tmpl->param($param) if $param;
    $tmpl;
}
...後略...

2.footer.tmpl の修正

tmpl/cms/include/footer.tmpl を開いて、青色で示した1行を追加します。

...前略...
            <p id="version">
                <strong><__trans phrase="<a href="[_1]"><mt:var name="mt_product_name"></a> version [_2]" params="<mt:var name="portal_url">%%<mt:var name="mt_version_id">"></strong>
<mt:if name="packs_installed">
                <__trans phrase="with">: <mt:loop name="packs_installed" glue=", "><a href="<__trans phrase="http://www.sixapart.com/movabletype/">pack/<mt:var name="id">/"><mt:var name="label" escape="html"> <mt:var name="version" escape="html"></a></mt:loop>
</mt:if>
, <mt:var name="template_file">
            </p>
...後略...

これで管理画面にアクセスして、テンプレートファイル名が表示されればOKです。

3.注意事項

本カスタマイズでは、以下の表示には対応していません。

  • ポップアップ形式の画面
  • プラグイン機能による管理画面(スタイル等)
  • インクルードしているテンプレートファイル(表示されたテンプレートから辿ってください)
Comments [0] | Trackbacks [0]
2009年8月 5日

Movable Type で簡単に valid な XHTML 文書を作る

August 5,2009 1:55 AM
Tag:[, , , ]
Permalink

Movable Type のブログ記事作成・編集画面やウェブページ作成・編集画面にある、本文・追記のリッチテキストは、強調文字や下線、リンクあるいは画像など、いわゆる WYSWYG による編集ができるフォーマットです。

リッチテキストフォーマット

例えば、Amazon アフィリエイトのリンクも次のように、実際に表示されるイメージで編集できたりします。

Amazon アフィリエイトのリンク

私は普段、Movable Type でブログ記事を書くときにリッチテキストを使ってないので(すいません)、あまり機能把握ができていなかったのですが、リッチテキストを使用すると、valid でない XHTML を valid にできるそうで、全く知りませんでした。教えて頂いたヲレサイトさん、ありがとうございました。

上に貼り付けた Amazon アフィリエイトのリンクも、元のマークアップは一部 valid でないのですが、この状態で保存するだけでかなり valid な XHTML になります。

ということで、どこまで valid な XHTML にできるのか、色々試してみました。動作は Firefox 3.5.1 で確認しています。

ここで試している方法は、以下の手順で行なっています。

  1. フォーマットから「なし」を選択する
  2. valid でない(X)HTMLマークアップ等を記述
  3. フォーマットを「リッチテキスト」を選択する
  4. 再び「なし」を選択して(X)HTMLマークアップを確認する

実際の利用では、4.を実施せず、3.の「リッチテキスト」の状態で保存すれば、以下に示す変換が行なわれた状態で保存されます。変換を確認したい方は4.まで行なっても良いでしょう。

また、XHTML に不慣れな方で、生のマークアップを行いたい方は、フォーマットを「なし」にした状態で、マークアップを書き、そのあと上の変換作業を行なえば、正しいマークアップの勉強にもなります。

1.空要素タグでスラッシュの前に空白がない場合

br 要素のスラッシュの前に半角スペースがない場合、半角スペースを挿入してくれます。

変換前
変換前

変換後
変換後

img 要素のように属性がある場合も変換可能です。

変換前
変換前

変換後
変換後

2.空要素タグでスラッシュがない場合

br 要素にスラッシュがない場合、半角スペースとスラッシュを挿入してくれます。

変換前
変換前

変換後
変換後

3.終了タグがない場合

p 要素の終了タグがない場合、終了タグを付与してくれます。

変換前
変換前

変換後
変換後

親子関係のある順不同リストでも変換可能です。

変換前
変換前

変換後
変換後

定義リストも可能です。

変換前
変換前

変換後
変換後

4.実体参照

& は &amp; に変換してくれます。

変換前
変換前

変換後
変換後

ちなみに &amp;は&amp;amp; には変換されません。

< と > も、<lt; および >gt; に変換してくれます。

変換前
変換前

変換後
変換後

ダブルクォーテーションは実体参照に変換されません。

5.実体参照の解除

これまでとは逆に、「~」や「¥」などを実体参照した状態で設定し、同じ手順で変換すると、実体参照が解除されます。

変換前
変換前

変換後
変換後

<lt;/>gt;/&amp; は解除されませんでした。

6.関連サイト

下記です。ありがとうございました。

Comments [2] | Trackbacks [0]
2009年7月30日

Movable Type 4.3 の新機能(コンテンツなしのブログ複製)

July 30,2009 1:33 AM
Tag:[, , ]
Permalink

Movable Type 4.3b より、コンテンツなしのブログ複製機能が追加されました。これにより、あるブログのデザイン(テンプレート)だけを他のブログに利用することができるようになります。

と、このエントリーを書きためていたところ、下記の記事が出ました。

MovableType.org - Features of 4.3: Smarter Blog Cloning

1.使用方法

システム管理画面の「新規作成」→「ブログ」をクリックし、ブログ一覧画面から複製したいブログを選択して、さらにプルダウンメニューから「ブログの複製」を選択して「Go」をクリック。

ブログ一覧画面

Movable Type 4.3 では、「複製の設定」で除外する項目を選択できるようになっています。ここでは表示されているすべての項目を除外します。「ブログ記事/ウェブページ」をチェックすると、「コメント」「トラックバック」は自動的にチェックが入ります。

ブログの複製1

選択した除外項目を表示します。設定に問題がなければ右下の「複製」をクリック。

ブログの複製2

複製しました。

ブログの複製3

複製したブログには、ブログ記事やコメントは引き継がれていないことがわかります。

ブログの複製4

2.プラグイン

4.0~4.2 をご利用の方は、小川宏高さん作成の「BlogSkeletonCloner」を利用すれば、この機能とほぼ同じことが実現できます。

BlogSkeletonClonerプラグイン
Comments [0] | Trackbacks [0]
2009年6月26日

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

June 26,2009 12:03 AM
Tag:[, , ]
Permalink

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

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

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

「画像の挿入」アイコン

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

「画像の挿入」アイコン

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

アイテムの挿入画面

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

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

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

画像が挿入

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

画像が挿入

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

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

画像が挿入

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

画像が挿入

Comments [0] | Trackbacks [0]
2009年5月25日

MovableType 4.25 のコメント投稿でJavaScript イベント属性(onclick等)を有効にする

May 25,2009 1:37 AM
Tag:[, , ]
Permalink

Movable Type 4.25 のコメント欄の(X)HTML要素に onclick 属性や onleypress 属性を適用させる方法です。質問を頂きましたので本エントリーで回答します。

1.基本動作

コメント欄に次のような(X)HTMLを記述すると、

<a href="foo.html" onclick="foo()">foolink</a>

onclick 属性はサニタイズされて、

<a href="foo.html">foolink</a>

となります。これはコメントに書き込まれた onclick 属性によるXSS(クロスサイトスクリプティング)対策です。onclick のみだけでなく、JavaScript イベント属性(on~)は許容されていません。

なお、Movable Type 4.25 では、ブログ管理画面の「設定」→「コメント」で、「HTMLタグを制限」の項目に、JavaScript イベント属性を設定しても(下)、コメント投稿時に設定したJavaScript イベント属性はすべて除去されます。

2.JavaScript イベント属性を有効にする

lib/MT/Sanitize.pm の下記の赤色で示した1行をコメントアウトするか、削除すれば、JavaScript イベント属性の追加ができるようになります(1項で示した「HTMLタグを制限」に、JavaScript イベント属性を設定してください)。

...前略...
if ($ok_tags->{$name} ||
    (exists $tag_attr->{$name} && $tag_attr->{$name} eq '/')) {
    if ($inside) {
        my @attrs;
        while ($inside =~ m/([:\w]+)\s*=\s*(['"])(.*?)\2/gs) {
            my ($attr, $q, $val) = (lc($1), $2, $3);
            # javascript event attributes explicitly not allowed
            next if $attr =~ m/^on/;
            if ($ok_tags->{'*'}{$attr} ||
               (ref $ok_tags->{$name} && ($ok_tags->{$name}{'*'} || $ok_tags->{$name}{$attr}) && !exists($ok_tags->{$name}{'!' . $attr}))) {
...後略...

なお、コメント投稿において JavaScript イベント属性を有効にすると、XSSによる脆弱性が伴いますので、変更に際してはご自身の責任で行なってください。

この XSS 対処の仕様は4.25 から追加されています。

Comments [0] | Trackbacks [0]
2009年3月25日

カスタムフィールドのラジオボタンを横並びにする

March 25,2009 1:55 AM
Tag:[, , ]
Permalink

Movable Type 4.2x で、ラジオボタン形式のカスタムフィールドを横並びにするカスタマイズです。

Movable Type 4.1x では、ラジオボタンのカスタムフィールドは横並びにできたのですが、4.2x ではラジオボタン(多分他も)のマークアップが順不同リストに変更されたため、縦に並びます。

Movable Type 4.1x
4.1

Movable Type 4.2x
4.2

ラジオボタンを横並びにするには、mt-static/css/main.css を任意のエディタで開き、次のセレクタを最後に追加します。

.custom-field-radio-list li{
  float:left;
  margin-right:5px;
}

次のように表示されます。

Movable Type 4.2x(修正後)
4.2(修正後)

Comments [0] | Trackbacks [2]
2009年3月16日

Movable Type の管理画面に「IP禁止リスト」を表示する

Movable Type では、一定期間に大量のスパムコメントを受信した場合、「IP禁止リスト」というものにスパムコメント投稿元のIPアドレスを登録するようですが、デフォルトのブログ管理画面には「IP禁止リスト」のメニューは表示されません。

これは「IP禁止リスト」滅多に操作する必要がないためと思われますが、下記の記事のように、テスト操作などで「IP禁止リスト」に登録されてしまい、その後のコメント投稿で、

「短い期間にコメントを大量に送りすぎです。しばらくたってからやり直してください。」

というエラーになってしまうような事象もあるみたいなので、同様の事象が発生している場合、試しに「IP禁止リスト」を表示してみると良いのではないでしょうか。

Humming of Lunatics - スパムが来すぎてコメント不能

「IP禁止リスト」を表示するには、mt-config.cgi に下記の1行を追加します。

ShowIPInformation 1

これでブログ管理画面をリロードすれば、ツールメニューに「IP禁止リスト」が表示されます。

メニューに「IP禁止リスト」を表示

「IP禁止リスト」です。これは禁止されているIPアドレスがない状態です。

IP禁止リスト

「IPアドレスの禁止」をクリックすれば手動で登録することもできます。

「IP禁止リスト」に登録

試しにひとつ登録してみました。日付が実体参照されているのはご愛嬌ということで。

禁止IPを登録

削除するには、削除したいIPアドレスを選択して「削除」をクリックします。

「IP禁止リスト」から削除

Comments [0] | Trackbacks [0]
2008年10月 3日

TemplateSetNameViewer プラグイン

Movable Type 4 で利用しているテンプレートセット名を、ブログ管理画面のテンプレート一覧画面やテンプレート編集画面に表示するプラグインです。

TemplateSetNameViewer プラグイン

1.プラグイン作成の経緯

実験サイトで頻繁にテンプレートセットを切り替えるため、時間が経って管理画面にログインすると、使っていたテンプレートセットが何だったのか分からなくなることがほとんどです。そういう訳で一覧画面に表示されているテンプレート名から推測したり、ブログのトップページを表示したりしていたのですが、作業効率の改善を目指して作りました。

このプラグインを用いれば、利用中のテンプレートセットが即座に分かります。自画自賛ですが、なかなかナイスなプラグインかと(笑)。

このプラグインの動作は Movable Type 4.21 で確認しています。

余談ですが、当初 MTBlogTemplateSetID タグを管理画面に埋め込んで表示してみたところ、テンプレートセットのキーしか表示されない(=和名が表示されない)ことに気づき、テンプレート初期化画面でテンプレートセット名を表示するロジックを流用して和名を表示するようにしてみました。
外部のテンプレートセットも和名で表示されます。

小粋空間テンプレートセットの表示

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

下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。

TemplateSetNameViewer.zip

3.インストール

プラグインアーカイブを解凍し、中にある TemplateSetNameViewer フォルダを plugins ディレクトリにアップロードしてください。

ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

プラグイン一覧

4.テンプレートセット名が表示される画面

とりあえず以下の画面で表示されることと、グローバルテンプレートで表示されないことを確認しています。

テンプレート一覧画面
テンプレート一覧画面

テンプレート編集画面
テンプレート編集画面

ウィジェット一覧画面
ウィジェット一覧画面

ウィジェット編集画面
ウィジェット編集画面

バックアップ画面
バックアップ画面

ウィジェットセットでの表示は別途。

Comments [0] | Trackbacks [0]
2008年6月25日

Movable Type でメールマガジンを作る(メールアドレスの解除)

June 25,2008 12:03 PM
Tag:[, ]
Permalink

昨日の「Movable Type でメールマガジンを作る」の続きで、ユーザーが登録したメールアドレスを、ユーザーが解除する方法を紹介します。
メールアドレスの解除方法は過去のマニュアルにも掲載されていませんが、機能は提供されています。

1.メールアドレス解除フォームの作成

次のようなメールアドレス解除フォーム用のテンプレートモジュール(またはウィジェット)を作成します。このサブテンプレートはブログのサイドバーに掲載するのではなく、ウェブページで解除専用のページを作成し、メールマガジンの本文から解除フォームがあるページへ誘導を促した方が良いでしょう。

<form method="post" action="<$MTCGIPath$>mt-add-notify.cgi">
    <input type="hidden" name="__mode" value="unsubscribe" />
    <input name="email" size="20" />
    <input type="submit" value="delete" />
</form>

input 要素についてはそのまま使用してください。

2.メールアドレスの解除

ブログ閲覧ユーザは、表示されたフォームに登録したメールアドレスを入力します。「delete」をクリックすると、「登録したメールアドレスの登録を解除しました。」というメッセージが表示されます。

3.注意点

解除フォームではブログのID番号をパラメータとして引き継ぎません。

Comments [2] | Trackbacks [1]
2008年6月24日

Movable Type でメールマガジンを作る

June 24,2008 12:55 PM
Tag:[, ]
Permalink

昨日の「Movable Type 4.2 でアドレス帳機能を利用する」の続きで、ブログ管理者が手動でアドレス帳にメールアドレスを登録するのではなく、ブログにアドレス登録用のフォームを掲載し、外部のユーザーが登録したメールアドレスをアドレス帳に登録する方法を紹介します。

メルマガ登録

この機能と「Movable Type 4.2 でアドレス帳機能を利用する」を組み合わせれば、Movable Typeを利用してメールマガジンのようなものを構築できそうです(タイトルはちょっと言い過ぎです)。

本エントリーではメールアドレス登録までの流れを紹介します。この機能を利用するには、事前に次の作業を行ってください。

  • システムメニュー「全般」のメールアドレスを設定する
  • アドレス帳機能を有効にする

1.メールアドレス登録フォームの作成

次のようなメールアドレス登録フォーム用のテンプレートモジュール(またはウィジェット)を作成します。

<form method="post" action="<$MTCGIPath$>mt-add-notify.cgi">
    <input type="hidden" name="blog_id" value="<$MTBlogID$>" />
    <input type="hidden" name="_redirect" value="<$MTBlogURL$>" />
    <input name="email" size="20" />
    <input type="submit" value="add" />
</form>

mt-add-notify.cgi がアドレス帳追加用のCGIです。他の input 要素についてはそのまま使用してください。

2.メールアドレスの登録

ブログ閲覧ユーザは、表示されたフォームからメールアドレスを登録します。「add」をクリックすると、「登録したメールアドレスにメールを送信しました。メールアドレスを認証するため、メールの内容に従って登録を完了してください。」というメッセージが表示されます。

登録ユーザーが、送信されたメールに掲載されたURLをクリックすれば、アドレス帳への追加が完了します。逆に、クリックをしないと登録は完了しないので、スパム攻撃を防ぐことができます。

3.メールマガジンを送る

送信方法は「Movable Type 4.2 でアドレス帳機能を利用する」を参照してください。

メールマガジンの送信時に使われるテンプレートは、システムテンプレートの「ブログ記事の共有」です。このテンプレートをカスタマイズすれば、好きなフォーマットで送信できます。

メールマガジン本文は、ブログ記事本文の内容をそのまま利用すると良いでしょう。
なお、ブログ記事の「テキストフォーマット」の指定は適用されません。メールで送信する際は、プレーンテキストで送られます。

4.その他

以前のバージョン(~3.3)では環境変数EmailVerificationSecretの設定が必要でしたが、Movable Type 4では環境変数自体が削除されています。

Comments [15] | Trackbacks [1]
2008年6月23日

Movable Type 4.2 でアドレス帳機能を利用する

June 23,2008 1:33 AM
Tag:[, , ]
Permalink

Movable Type 4.1 まで表示されていた「アドレス帳」が、Movable Type 4.2 では表示されなくなっています。

下は 4.1 のブログ管理画面です。[設定]メニューに[アドレス帳]があります。

ブログ管理画面(4.1)

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

ブログ管理画面(4.2)

アドレス帳機能が落とされたかと思ったのですが、mt-config.cgi に、次の環境変数 EnableAddressBook を設定(値を1)すれば、アドレス帳機能を有効にすることができます。

EnableAddressBook 1

mt-config.cgi に設定後、管理画面にアクセスすれば、「一覧」メニューにアドレス帳が表示されます。

「一覧」メニューにアドレス帳が表示

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

アドレス帳にメールアドレスやURLを追加すると、アドレス帳一覧画面でこのように表示されます。

アドレス帳一覧画面

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

「共有」のリンクをクリック

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

送信画面

Comments [11] | Trackbacks [1]
2008年5月22日

Movable Type 4 のブログ記事投稿画面のカテゴリー選択エリアを拡張する

May 22,2008 1:17 AM
Tag:[, ]
Permalink

私のブログは、カテゴリ数が結構肥大化してしまって、とりとめのない量になっています。

で、ブログを投稿する時に面倒に感じているのは、ブログ記事に設定するカテゴリのチェックです。カテゴリの表示エリアの高さがあまりないので、右側のスクロールバーで探すのは動きがシビアです。マウスでスクロールもできますが、個人的にはもう少しスクロール量が多い方がありがたく、「帯に短し、襷に長し」といった感じでしょうか。

カテゴリ選択エリア(変更前)

ということで、表示エリアを拡張する方法を紹介します。下は拡張後のカテゴリ選択エリアです。
久々の力技ですが、こういうのが面白いです。

カテゴリ選択エリア(変更前)

2011/11/16追記:MT5.0/5.1対応の情報は以下を参照願います。

1.CSSファイルのダウンロード

管理画面のCSSファイルはスタティックディレクトリの

mt-static/css/main.css

なので、これをダウンロードします。

2.値の変更

ダウンロードしたmain.cssを任意のエディタで開き、「.category-selector-list」で検索します。そのセレクタの中に、

height:150px;

というプロパティがあり、これがカテゴリリストの高さを指定するものです。これを好きな値に変更してください。

3.CSSファイルのアップロード

修正したmain.cssを元のディレクトリに上書きアップロードします。これでブログ記事投稿画面を開けば、カテゴリ表示エリアが拡張されます。

なお、ブログ記事投稿画面のtmplファイルを書き換えて、heightプロパティを上書きするCSSファイルを呼び出すようにすれば、プラグインで実装できると思います。

Comments [0] | Trackbacks [1]
2008年1月23日

カスタムフィールドによるアップロード画像をサムネイルで表示するプラグイン 0.02

January 23,2008 12:37 AM
Tag:[, , ]
Permalink

先日公開した「カスタムフィールドによるアップロード画像をサムネイルで表示するプラグイン」をパワーアップして、アップロード時にアイテムのオプション画面をハンドリングするようにしてみました。

これで、カスタムフィールド用のテンプレートタグを使った画像表示でも、サムネイル画像を自動的に生成してブログ記事に表示することができます。

2008.09.17 Movable Type 4.2 対応のバージョンを公開しました。

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

下記のリンクをクリックしてプラグインをダウンロードします。

VisibleCustomFieldImage.zip
2008.02.17 v0.03:script error になるバグを改修しました。

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

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

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

ダウンロードした VisibleCustomFieldImage.zip を解凍して、中にある VisibleCustomFieldImage.pl を plugins ディレクトリにアップロードします。「VisibleCustomFieldImage.pl」が表示されればOKです。

3.使い方

予め作成している、画像用カスタムフィールドの「imageを選択」をクリック。

「imageを選択」をクリック

「新しい画像をアップロード」をクリック(またはアップロード済の画像を選択して「次へ」をクリック)。

「新しい画像をアップロード」をクリック

新しい画像をアップロードする場合は「参照」をクリック。

「参照」をクリック

アップロードしたい画像選択後、「アップロード」をクリック。

「アップロード」をクリック

オプション画面が表示されます(これが今回の追加部分)。
機能はファイルアップロードのオプション画面と同じですが一応掲載しておきます。

オプション画面

  • ブログ記事に画像を表示:チェックすればカスタムフィールドに画像を表示します。
  • サムネイルを利用:サムネイルを自動生成します(Image::magickがインストールされていないと表示されません)
  • ポップアップウィンドウで元の大きさの画像にリンクします。:カスタムフィールドで表示したテキストリンクまたは画像リンクをクリックすると、ポップアップウィンドウで元画像を表示します。
  • 位置: カスタムフィールドで表示した画像の位置を指定します。

「完了」をクリックすると、サムネイル画像が管理画面に表示されます。なお、オプションの組み合わせによっては画像の代わりに「表示」というテキストリンクになる場合もあります。

ブログ記事を投稿すると、予めテンプレートに設定していたカスタムフィールドのテンプレートタグ部分にサムネイル画像が表示されます。

アイテムの一覧を表示すると、サムネイル画像やポップアップがすべて管理対象になっています。

5.ライセンス

MTOSにはカスタムフィールドはありませんが、先のことを考えてデュアルライセンスにしておきます。

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

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

5.2 MTOSと組み合わせる場合

  • 無料で利用できます。
  • GPLv2に従います。

2008.02.17
0.03 にバージョンアップしました。

Comments [17] | Trackbacks [1]
2008年1月15日

他人の Movable Type 4 へのコメント投稿で Movable Type 認証を利用する方法

January 15,2008 2:30 AM
Tag:[, ]
Permalink

Movable Type 4 のコメント投稿では複数の認証方式が用意されています。その中のひとつに「Movable Type 認証」という方式があります(下)。

Movable Type 認証

これは、その Movable Type にユーザーとして登録されている人が利用するための認証で、他の、全く別にインストールした Movable Type のアカウントで認証できるものではありません。したがって、Movable Type 認証には「認証しようとするユーザーが、その Movable Type にユーザー登録されている」という制限があります。

ただし、厳密には MT の設定方法によって、外部の人間に対し「コメント投稿者」という権限を与えることができるため、「Movable Type」の認証によるコメント投稿が可能になります。以前、「Movable Type の認証では(他の方のブログの)コメント投稿はできません」と、誤解を招く発言をしたことがあるかもしれませんが、その点についてはお詫び申し上げます。

以下、その設定方法および、Movable Type の認証によるコメント投稿方法を紹介します。

1.(コメント投稿対象ブログの)管理画面の設定

システムメニューの「設定」→「全般」画面で、「システムのメールアドレス」を設定し「変更を保存」をクリック。このフィールドを設定しないと、後に説明する「メール通知」が行われません。

「全般」画面

システムメニューの「設定」→「ユーザー」画面で、「コメント投稿者がMovable Typeに登録することを許可する」にチェックをして「変更を保存」をクリック。

「ユーザー」画面

ブログ別管理画面の「設定」→「ブログの設定」→「登録/認証」で「ユーザー登録」をチェック。

「登録/認証」画面

2.コメント投稿側の設定

コメント投稿の認証画面より「Movable Type」を選択して「サインアップ」をクリック。ブログ管理者の設定によっては「Movable Type」が選択できない場合もあります。

認証画面

必要事項を記入して「登録する」をクリック。

アカウント作成画面

「ご登録ありがとうございます。」という画面が表示され、表示されている(コメント投稿者の)メールアドレスにアカウント登録の確認メールが送信されます。

アカウント登録完了画面

下のようなメールが届いていたら、表示されている URL にアクセスします。もしメールが届いてないようであればメールアドレス誤りか、MT の設定(本エントリーの一番最初の手順)が完全に行われていない可能性があります。

確認メール

メールに表示されたURL にアクセスし、次の画面が表示されれば、他人の MT にコメント投稿者として登録されます。

アカウント作成完了

3.Movable Type 管理画面でのコメント投稿者の扱い

登録した「hoge」さんの MT での権限は「コメント登録者」として表示されます。

アカウント作成完了

「コメント登録者として権限を与えると、ブログ管理画面にログインされてしまうのでは?」と思われるかもしれませんが、登録したアカウントで他人の MT にログインしても、次のようなアカウント変更画面しか表示されません。

アカウント作成画面

また、登録が完了していないユーザは、下のように「保留」状態になります。このフィールドは、ブログ管理画面からのユーザー登録では「有効・無効」しか選択できませんので、外部から登録する際の特殊なケースです。

保留状態

Comments [2] | Trackbacks [1]
2008年1月10日

ブログ記事の入力フィールドに初期値を設定する「DefaultValueSetterプラグイン」

Movable Type 4.x/5.xで、ブログ記事の入力フィールドに初期値を設定する「DefaultValueSetterプラグイン」を公開します。このプラグインを利用すれば、ブログ記事の新規作成時に、

  • タイトル
  • 本文
  • 追記
  • タグ
  • 概要
  • キーワード

の各フィールドに任意の文字列を初期値として表示することができます。

これは「『タグ』や『キーワード』等にいつも同じ内容を設定するのですが、特定の文字列を予め設定しておくことはできないでしょうか」という質問を頂いたのが作成の発端です。

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

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

更新履歴

2008.01.10 初版
2009.12.16 v0.10 MT5.0対応
2011.05.31 v0.20 MT5.1対応/hetemlで正常に動作しない不具合を修正

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

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

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

設定画面

3.プラグインの設定

ブログ別にブログ記事用の初期値を設定します。ブログ管理画面の「設定」→「プラグイン」で「DefaultValueSetter~」をクリックし、さらに「設定」をクリックすると次のような設定画面が表示されます。

設定画面

このような感じで設定し、一番下の「変更を保存」をクリック。

設定画面

ブログの新規作成画面に設定した内容が反映されます。

設定画面

4.価格

有償ライセンスと組み合わせる場合、1050円/1サーバ(消費税込み)となります。プラグインの動作確認完了後、下記のリンクからお支払いください。

MTOS/個人無償ライセンスと組み合わせる場合、無料で利用できます。なお、プラグイン開発やサポート等にご支援・ご賛同くださる方からの寄付をお待ち申し上げます。下記の「寄付」のリンクをクリックすると Paypal によるお支払いページにジャンプします。

Comments [9] | Trackbacks [1]
2007年12月25日

CORESERVER / XREA にcron ジョブ(Movable Type 4 の run-periodic-tasks)を設定する

CORESERVER や XREA では crontab コマンドでは cron を設定できない(一瞬できますが削除されます)ので、管理画面より設定します。

ここではMovable Type 4 の run-periodic-tasks を例に手順を紹介します。

1.シェルスクリプトの作成

「シェルスクリプト」とは、Linux上のコマンドを制御するプログラミング言語が記述されたファイルを指します。
まず、以下のような内容のシェルスクリプトを任意のテキストエディタで作成します。

#!/bin/sh
cd /virtual/***/public_html/mt
/usr/bin/perl ./tools/run-periodic-tasks
exit

2行目の赤色の部分、*** はユーザによって異なります。また、「mt」は Movable Type のアプリケーションディレクトリ(mt.cgi があるところ)を指定してください。
1行目と3行目、4行目の記述内容は固定です。

この内容を cron.sh というファイル名で保存します。ファイルの名前は任意ですが、拡張子は必ず .sh にしてください。
なお改行コードは必ずLFで保存してください。Windows のメモ帳では改行コードは CR+LF になってしまうので、他のフリーのエディタを使いましょう。

2.ファイルのアップロード

FTPツールで cron.sh をアップロードします。ここではユーザディレクトリ(public_html のひとつ上の階層)にアップロードします。
アップロード後、cron.sh のパーミッションを 705 に変更してください。

3.cron ジョブの設定

CORESERVERの管理画面ログイン

ログイン画面

「CORESERVERアカウントの登録・管理・購入」をクリック

ユーザーコントロールパネル

「サーバー設定」をクリック。

CORESERVERアカウントの登録・管理・購入画面

「入室」をクリック(ブラウザによっては自動で画面遷移します)

入室画面

サイドメニューの「CRONジョブ」をクリック

CORESERVERアカウントの登録・管理・購入画面

アップロードしたファイルをCRON ジョブに登録します(画面から切れてますが、曜日の部分も * を設定)

CRON ジョブに登録

これは毎時0分に cron.sh を実行する設定です。数字は時間、* は全ての期間に対応する意味です。「時」に * をつけると「毎時実行する」という意味になります。

設定後、「保存」をクリックしてください。

4.エラーメールを送信しない

cron ジョブにエラーがあると、登録しているメールアドレスにエラーメールが送信されます。このエラーメールの送信を行いたくない場合は、シェルファイル名の後に「 >/dev/null 2>&1」を付けます。

CRON ジョブに登録

最初はこの設定を行わず、エラーメールが送信されないことを確認してからの方がいいでしょう。

5.その他

CORESERVER での cron ジョブ実行については以下の条件があります。

  • ジョブの最大実行時間は3分です。それを超えるものは強制停止されます
  • CORESERVER でのジョブの実行間隔は最短で1時間に1回です
  • 削除する場合は、「/virtual/***/~」を空にし保存して下さい
  • ジョブの負荷はCGI負荷として加算されます

2008.09.22
XREA を追加しました。

Comments [1] | Trackbacks [1]
2007年11月 2日

Movable Type 4 の管理画面で詳細メッセージのないエラーが発生する不具合について

Movable Type 4 のブログ管理画面操作中、下のような、詳細メッセージのないエラー画面に時々遭遇することがあります。

感覚的には、管理画面にグインした後、長時間(といっても数十分程度)何も操作しない状態の直後の操作で発生するようです。

根本的な解消策はみつかってませんが、この画面が表示された場合は、ブラウザの「戻る」をクリックしてリロードすれば元の操作に戻ることができます。

ちなみに、セッションタイムアウト(UserSessionTimeout)は、デフォルトで4 時間 (14400秒)に設定されていますが、それより短い時間で遭遇するので、セッションのタイムアウトではないようです。
また、この設定にひっかかった場合は、エラー画面ではなくログイン画面に遷移します。

Comments [0] | Trackbacks [0]
2007年10月20日

ブログ記事の画像挿入時に表示位置を指定しないプラグイン

October 20,2007 12:32 AM
Tag:[, , ]
Permalink

ブログ記事の投稿で、記事内に画像ファイル等を挿入する場合、ファイルの表示位置を指定しないオプションがありません(下)。

オプションなし

このプラグインでは表示位置を指定しないラジオボタンを追加します。

オプションあり

このプラグインは、crema さんの記事を元に作成したものです。

が、やや先に Junnama さんがよりリッチなプラグインを投稿されていました。

私の作成したプラグインは簡素なので、style 属性が設定されなくなるだけです。class 属性の設定は残ります。

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

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

InsertAssetWithoutStyle.zip

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

アーカイブを解凍し、解凍した内容を plugins ディレクトリおよびスタティックディレクトリに、それぞれ下記のように配置してください。

mt-static/
  plugins/
    InsertAssetWithoutStyle/
      images/
        align_none.gif
      styles/
        app.css
plugins/
  InsertAssetWithoutStyle.pl

システムメニュー→プラグインで「InsertAssetWithoutStyle 0.0x」が表示されていればOKです。

プラグイン一覧画面

3.利用方法

画像の表示位置を指定したくない場合、冒頭のスクリーンショットのように、位置欄より「なし」を選択します。「設定を記憶」をチェックすれば選択状態を保存することができます。

Comments [2] | Trackbacks [0]
2007年8月21日

Movable Type のスケジュール・タスク実行(Windows 編)

August 21,2007 1:50 AM
Tag:[, , ]
Permalink

Windows のタスク・スケジューラを利用した、Movable Type のスケジュール・タスク実行方法を紹介します。スケジュールタスクを実行することで、MT4 であれば指定日投稿・迷惑コメント(トラックバック)削除・公開キュー等のスケジュール処理が可能になります。
MT3 も同じ設定方法です(公開キューはMT4のみ)。

この設定は自宅サーバで Windows XP 等を利用している場合の設定方法です。レンタルサーバの場合は Linux 上で同様の設定を行います。

以下、設定手順です。

「スタート」→「設定」→「コントロール パネル」→「タスク」→「スケジュールされたタスクの追加」を選択。

スケジュールされたタスクの追加

タスク ウィザードで「次へ」をクリック。

タスク ウィザード1

「参照」をクリック。

タスク ウィザード2

perl プログラム(ここでは C:¥usr¥bin¥perl.exe)を選択して「開く」をクリック。拡張子を表示しない設定の場合は「perl」を選択。

perl選択

日単位を選択して「次へ」をクリック。

タスク ウィザード3

開始時刻を設定し、このタスクの実行から「毎日」を選択して「次へ」をクリック。

タスク ウィザード4

表示されたユーザーのパスワードを設定して「次へ」をクリック。

タスク ウィザード5

「[完了]をクリックしたときに詳細プロパティを開く」をチェックして、「完了」をクリック。

詳細プロパティ

ここからの設定が重要です。開いたプロパティ画面で

  • 実行するファイル名:C:¥usr¥bin¥perl tools¥run-periodic-tasks
  • 開始:アプリケーション・ディレクトリのパス(例はC:¥web¥mt)に書き換える

を設定し、「OK」をクリック。実行するファイル名の tools¥run-periodic-tasks の前には半角空白を入れてください。「開始」のアプリケーション・ディレクトリとは、mt.cgi があるディレクトリです。

とりあえずこれで「OK」をクリックすれば設定完了です。
ただしこのままでは日に1回しか実行されないので、実行周期を短くする場合は「スケジュール」タブの詳細設定をクリック。

オプションの詳細設定で「タスクを繰り返し実行」で間隔を設定します。継続時間は間隔より長く設定してください。
スケジュールを変更するとパスワードの設定が求められる場合があります。

オプションの詳細設定

作成したタスクは最初の「スタート」→「設定」→「コントロール パネル」→「タスク」→「XX」で起動することができます。

オプションの詳細設定

Comments [0] | Trackbacks [2]
2007年7月 4日

管理画面のページ遷移を簡単にする Bookmarks プラグイン

July 4,2007 2:15 AM
Tag:[, , ]
Permalink

MT4 専用の最初のプラグインがリリースされたというアナウンスがありましたので、便乗して紹介します。

First Movable Type 4 Plugin released

This weekend, Kevin Shay, the developer behind several of Movable Type's most popular plugins, release the first Movable Type 4 plugin.

Bookmarks プラグインは、管理ページの任意のページ(例えばテンプレートのインデックスページ編集画面)をブックマークすることで、ページにダイレクトに遷移できるようにするためのものです。

以下設定と操作方法です。

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

下記のサイトよりプラグインをダウンロード(スクリーンショット下の「here」をクリック)。

New Plugin for MT 4: Bookmarks

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

解凍した中にある Bookmarks フォルダを丸ごと plugins ディレクトリにアップロードします。下のような構成になっていればOKです(1.0b2 現在。プラグインのバージョンアップで構成が変わる可能性があります)。

/Bookmarks
 /lib
  /Bookmarks
   App.pm
   Util.pm
  /MT
   Bookmark.pm
 /tmpl
  /dialog
   edit_label.tmpl
   list_bookmark.tmpl
 Bookmarks.pl

3.インストール

管理ページにアクセスするとアップグレード開始画面になりますので、「アップグレード開始」をクリック。

アップグレード開始画面

サインインします。

サインイン画面

アップグレードが開始され、データベースに Bookmark プラグインに必要な情報が生成されます。完了したら「MOvable Type に戻る」をクリック。

アップグレード実行画面

管理画面に「Bookmarks」というメニューが追加されました。

アップグレード実行画面

4.利用方法

例として、インデックスページのテンプレート編集画面をブックマークします。
インデックスページのテンプレート編集画面に遷移したところで Bookmarks のメニューより「Bookmark "My First Blog: Edit Template 3"」を選択。この名称はブログ名+画面名です。

Bookmarkメニュー

ブックマーク画面が表示されるので「Done」をクリック。

アップグレード実行画面

これで Bookmarks メニューの一番下に「My First Blog: Edit Template 3」が追加されました。このメニューを選択すると、どのページにいても、インデックステンプレート編集画面に直接ジャンプすることができます。

Bookmarkメニュー

メニューの「Manage Bookmarks」を選択するとブックマーク管理画面に遷移します。

Bookmarkメニュー

タイトルをクリックするとタイトル名を変更することが出来ます。

Bookmarkメニュー

日本語も利用することができるので、ここでは「インデックスページ編集」に変更し、右下の「Save Changes」をクリック。

Bookmarkメニュー

ブックマークメニューが日本語になりました。

Bookmarkメニュー

カスタマイズされる方は下のように各テンプレート編集画面をブックマークしておくと便利でしょう。

Bookmarkメニュー

お分かりと思いますが、追加したブックマークに「My Firlst Blog」というブログ名を残しているのは、このブックマークがシステムでひとつだからです。
言い換えると、あるブログから他のブログの特定の画面に直接ジャンプすることもできます。

Comments [0] | Trackbacks [0]
2007年5月 8日

「このテンプレートにリンクするファイル」または「ファイルへのリンク」の使い方 for Movable Type

May 8,2007 1:50 AM
Tag:[, , ]
Permalink

Movable Type のテンプレート編集画面を開くと、MT3.x の場合、下に示すスクリーンショット赤枠の「このテンプレートにリンクするファイル」、MT4,x の場合、「ファイルへのリンク」がありますが、このフィールドについての利用方法をご存知ない方が少なくないのではないでしょうか。

Movable Type 3.x
「このテンプレートにリンクするファイル」

Movable Type 4.x
「このテンプレートにリンクするファイル」

このフィールドはオーサリング・ツールを利用する方、あるいはテンプレートをカスタマイズする方にとってはかなり役に立つ機能を有しています。
ということで、本エントリーではこの「このテンプレートにリンクするファイル」および「ファイルへのリンク」の使い方を紹介します。説明に使用しているスクリーンショットは Movable Type 3.x のものですが、Movable Type 4.x の動作も同じです。

1.外部ファイルを Movable Type と同期させる

このフィールドの本来的な使い方は、Dreamweaver、GoLive等のオーサリング・ツールで作成したテンプレートを Movable Type の再構築あるいはテンプレート編集と同期させることです。オーサリング・ツールで作成したテンプレートは編集画面のテキストエリアにペーストするのではなく、このフィールドに外部ファイル名として指定するだけで自動的に読み込ませることができます。
以下、「このテンプレートにリンクするファイル」を設定されたファイルを、便宜上「リンクファイル」と記します。

例えば、作成したテンプレートを下記のようにリンクファイルとして指定します。指定する時にファイルの実体はなくても構いませんが、後で「リンクファイル」となるファイルは指定したパスにアップロードします。

ファイルを同期させる

この状態で、Movable Type の管理画面から(いきなり)再構築を実行すると、リンクファイルの内容をHTMLページやCSSに反映することができます。

またテンプレート編集画面を開くと、リンクファイルの内容がテキストエリアに反映された状態で表示されます。もちろんデータベースにも反映されます(編集画面を表示した時にデータベースに設定されるようです)。

上記をまとめると、次のような振る舞いになります。

リンクファイル操作時に優先されるデータ
再構築編集画面
ありリンクファイルリンクファイル
あり(空)*1データベースデータベース
なしデータベースデータベース

*1:リンクファイルの実体があり、その内容が空(0 バイト)のファイル

つまり、データベースの内容とリンクファイルに差分がある場合は、リンクファイルの内容が空でない限り、リンクファイルが優先されます。

改めて図で示します。
リンクファイルがない場合のテンプレート編集や再構築時の動作は次の通りです。

リンクファイルがない場合

上図のように、テンプレート編集や再構築を実行すると、Movable Type のテンプレート情報は基本的にデータベースから取得し、そのデータを元に HTML や CSS ファイルを出力します。

これと異なり、リンクファイルが存在する場合は、リンクファイルの情報を先に取得してページを生成し、同時にリンクファイルの内容をデータベースに反映する、という訳です(下図)。

リンクファイルがある場合

リンクファイルは、インデックス/アーカイブ/システム/モジュール、すべてのテンプレートに設定することができます。またこのフィールドにはファイル名だけでなく、パスを設定することができます。Movable Type 配布元の Six Apart は、絶対パス("/"から開始)による指定を推奨しています。

この仕組みを理解しておけば、テンプレート編集画面を利用せずに、テンプレートの内容を効率的にHTMLやCSSの内容に反映させることができます。
オーサリング・ツールとの具体的な連携方法例については下記のサイトが参考になるでしょう。

2.テンプレートをバックアップする

本来の利用方法ではありませんが、このフィールドを利用してテンプレートをバックアップする方法がかなり有名です。他のサイトでこのフィールドをそのように利用する方法が多く紹介されてますし、私自身、当初はそういう使い方をするフィールドと思い込んでました。

設定方法は1項と同様、「このテンプレートにリンクするファイル」に任意のパスを設定するだけです。ファイル名はテンプレートと対応がとれるよう、分かりやすい名称にしておくと良いでしょう。まバックアップ用のパス(tmpl 等)を作っておき、そこに出力するようにしておくとサーバ上にファイルが煩雑にならずにすみます。

テンプレートをバックアップする

この設定をしておくことで、テンプレート編集画面上での修正内容がデータベース以外に、リンクファイル、つまり物理的なファイルをサーバ上に保存しておくことができます。
リンクファイルはテンプレート編集画面の「保存」または「保存および再構築」をクリックした時に更新されます。MTタグも変換されず、そのまま出力されます。

万が一、データベースが壊れて、Movable Type にアクセスできなくなってしまっても、テンプレートはファイルに残ってますので、Movable Type を改めてインストールした時に、リンクファイルの内容をテキストエリアにペーストするか、「このテンプレートにリンクするファイル」に保存されているリンクファイルのパスとして設定すれば、簡単に復活させることができます。

2009.05.02
Movable Type 4.x の説明を追加しました。

Comments [8] | Trackbacks [1]
2006年7月31日

インデックステンプレートにパスを設定する

July 31,2006 1:51 AM
Tag:[, ]
Permalink

意外に知られていない技で、Movable Type のインデックステンプレートにはパスを設定することができます。

アーカイブファイルは管理画面の「設定」→(3.3では詳細モードに切り替え)「公開」→「アーカイブマッピング」でパスが表示されているので、直感的にパスを設定することがイメージできますが、インデックステンプレートは「出力ファイル名」欄にファイル名しか記述されていないことと、そもそも「出力ファイル名」と書かれているので、パスの設定ができないように感じてしまいます。

以下、パスの設定方法です。

デフォルト状態テンプレート編集ページで「メインページ」のデフォルト状態は左のようになっています。
デフォルト状態メインページを hogehoge というディレクトリの下に作成したい場合は、左のように「出力ファイル名」欄の index.html の前に「hogehoge/」を追加します。記述したディレクトリは自動的に作成されます。
例は「相対パス」で記述していますが、「絶対パス」で記述することも可能です。
デフォルト状態ひとつ上のディレクトリに出力する場合は、「../」をファイル名の前に付与します。
Comments [0] | Trackbacks [0]
2006年6月24日

画像のポップアップウィンドウをカスタマイズする

June 24,2006 1:53 AM
Tag:[, , ]
Permalink

カスタマイズ前Movable Type の管理画面から画像をアップロードした後、次の画面のラジオボタンで「HTMLを表示」を選択し、「ポップアップ」をクリックすると、アップロードした画像をポップアップウィンドウで表示するためのHTMLコードが表示されます(スクリーンショット)。あとはこのコードをエントリーに貼り付ければOKです。

このHTMLコードによるポップアップウィンドウ、アップロードした画像のサイズにあわせてポップアップするのですが、ウィンドウのリサイズやスクロールが無効な状態で表示されるため、画像サイズがディスプレイサイズを超えている場合、(ポップアップウィンドウはディスプレイサイズより大きくならないため)画像を全て参照することができません。

このエントリーでは、ディスプレイより大きなサイズの画像を全部閲覧できるようにするためのカスタマイズを2つ紹介します。いずれかお好きな方をお選びください。これらは通常のポップアップのカスタマイズとしても利用することができます。

1.ポップアップウィンドウのスクロールやリサイズを有効にする方法

CMS.pm を任意のエディタで開き、「window.open」で検索すると下記の行がみつかります。
ちなみに、3.2 では3600行目あたり、3.3b2 では4700行目辺りです。

<a href="$url" onclick="window.open('$url','popup','width=$width,height=$height,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">$link</a>

この中の window.open? のカッコの部分がポップアップウィンドウの詳細設定になります。
赤色の部分を下記のように yes に修正します。

<a href="$url" onclick="window.open('$url','popup','width=$width,height=$height,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">$link</a>
scrollbars=yes

は、画面サイズにスクロールバーが表示する設定です。

resizable=yes

は、表示されたポップアップウィンドウのリサイズを可能にします。

なお、スクロールバーを表示する設定にした場合、スクロールバーが画像にやや被ってしまうので、下記のリストのように先程修正した行の少し上に青色の行を追加してください。

           :
        }
$width += 17;
        my $link = $thumb ? qq(<img src="$thumb" width="$thumb_width" height="$thumb_height" alt="" />) : q{<MT_TRANS phrase="View image">};
        return $app->translate_templatized(<<"HTML");
<a href="$url" onclick="window.open('$url','popup','width=$width,height=$height,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">$link</a>
           :

これでポップアップウィンドウの横幅がやや広くなります。17 という数値は場合は自分で試した結果ですので、修正してもらっても構いません。
高さをひろげたい場合は

$height += xx;

を同じように追加してください(xx には任意の値を設定します)。

カスタマイズ後修正したら元のディレクトリにアップロードしてください。これで画像の表示方法で「ポップアップウィンドウ」を指定した時にスクロールやリサイズが可能になったHTMLコードが表示されます。

2.ポップアップウィンドウに画像を縮小して表示する方法

画像サイズを自動的に縮小するカスタマイズが下記のサイトで紹介されています。

お気楽極楽ブログ画像のポップアップ表示でサイズ制限する

以上です。「見れればいい(というのは語弊がありますが)」という場合は2項、原寸で閲覧させたい場合は1項をお勧めします。

Comments [2] | Trackbacks [3]
2006年4月12日

MovableType のテンプレートを簡単にバックアップする Template Backup and Refresh プラグインの使い方

April 12,2006 1:30 AM
Tag:[, , ]
Permalink

Movable Type のデフォルトプラグインである Template Backup and Refresh の説明です。機能は名称の通り、テンプレートのバックアップおよびリフレッシュを行ってくれます。

1.操作方法

このプラグインで行う操作は下記の通りです。

設定1管理メニューより「テンプレート」をクリックしてテンプレート一覧画面に移動し、バックアップしたいテンプレートの左端にあるチェックボックスにチェックをして(1)、右上にあるプルダウンメニューから「テンプレートを初期化する(3.2 は「テンプレートを更新する」)」を選択して「Go」をクリックします(2)。
スクリーンショットはインデックステンプレートの「メインページ」を例にしています。

設定2「Go」をクリックすると次ページで実行対象となったテンプレートが表示されます。「戻る」をクリックすればバックアップされたテンプレート(下記のように日付と時間が追加されたテンプレート名)が一覧に追加されています。

メインページ (Backup from 2006-04-12 00:25:00)

2.プラグインの動作

上記の操作を行うことで、プラグインは下記の動作を実行します。
  1. チェックしたテンプレートをリフレッシュ、つまり原本であるデフォルトテンプレートで上書きされる(Refresh)
  2. 現在使っているテンプレートは別の名前のテンプレートで保存される(Backup)

要するに、プラグインを実行することで現在使用中のテンプレートが別の名前で保存され、使用中のテンプレートがデフォルトテンプレートで上書きされる、という仕組みになっています。

バックアップ機能だけであれば、カスタマイズをしている途中のテンプレートを別名で残しておき、使用中のテンプレートに対して次のカスタマイズ作業に進めるのですが、リフレッシュも同時に行われるため、使用中だったテンプレートを再度使用するためには元のテンプレート(の「テンプレートの内容」)に貼り付け直す必要があります。

3.原本について

リフレッシュの原本となるテンプレート(デフォルトテンプレート)は、default-templates ディレクトリ配下の下記の名称で配置されています。
atom_index.tmpl
category_archive.tmpl
comment_error_template.tmpl
comment_listing_template.tmpl
comment_pending_template.tmpl
comment_preview_template.tmpl
datebased_archive.tmpl
dynamic_pages_error_template.tmpl
dynamic_site_bootstrapper.tmpl
individual_entry_archive.tmpl
main_index.tmpl
master_archive_index.tmpl
rsd.tmpl
rss_20_index.tmpl
site_javascript.tmpl
stylesheet.tmpl
trackback_listing_template.tmpl
uploaded_image_popup_template.tmpl

4.利用方法

前述の通り、テンプレートを編集前の状態に戻す機能があるので、テンプレートの編集に失敗した時などに利用することができます。また、現在編集中のテンプレートをバックアップとして保存するために使うこともできます。ただし同じテンプレートを引き続き使う場合、テンプレートを貼り付け直す必要があります。

もうひとつ、新しいテンプレートを default_template に直接アップロードし、Template Backup and Refresh プラグインを利用してテンプレートを入れ替えるという利用方法があります。
ただしこの使い方ついては日本語の問題があり、登録されたテンプレートで使用する日本語は全て ja.pm に登録し直す必要があります。例えば、当サイトで配布しているテンプレートを default_template にアップロードしてプラグインを実行すると、テンプレートはきれいに差し替えられますが、テンプレートに記述された全ての日本語が文字化けします。
ということで、このような利用をする場合は注意が必要です。

5.その他・注意事項等

  • 「システム」テンプレートのバックアップは「モジュール」に作成されます
  • デフォルトテンプレートの「テンプレート名」を変更するとプラグインの実行対象となりません
  • インデックステンプレートの場合、出力ファイル名を変更しても問題なく動作します
  • 新たに作ったテンプレートはプラグインの対象になりません(テンプレート名をデフォルトテンプレート名と同一にすれば実行対象となります)
  • プラグインの操作を繰り返すとバックアップのテンプレートがどんどん増えていきます。つまりバックアップテンプレートが上書きされることはありません
  • デフォルトテンプレートを誤って削除した場合、同じテンプレート名を付与すればプラグイン実行対象となります

ということで、このプラグインをうっかり実行してしまってもテンプレートが消失することはありませんので、ご安心ください。

6.間違ってプラグインを実行してしまったら

Template Backup and Refresh プラグインにはアンドゥ(元に戻す)機能はありません。したがって間違ってプラグインを実行してしまった場合、初期化されたテンプレートに対し、バックアップされたテンプレートの内容を手作業でコピー&ペーストします。

例えば「メインページ」の場合、ブラウザを2つ開き、片方はテンプレート一覧画面で「メインページ」のテンプレート編集画面(A)、もう一方は、「メインページ(Backup from ?と書かれたもの)」のテンプレート編集画面(B)を表示させます。そしてBの「テンプレートの内容」をAの「テンプレートの内容」にコピーします。そのあと保存・再構築してください。
コピーする方向を間違えると取り返しのつかないことになりますので、自信のない方はそれぞれの「テンプレートの内容」を他のテキストエディタ等に貼り付ける等して保存しておきましょう。

「テンプレートの名前」は、元の名前と全く同じものを設定してください(上記の作業で余計なことをしなければ大丈夫です)。メインページは「メインページ」、エントリーアーカイブは「エントリー・アーカイブ」とします。

2006.06.19 追記
6項を追加しました。

2006.09.07 追記
3.3 用の記述を追加しました。

2007.04.26 追記
タイトルを変更しました。またシステムテンプレートのバックアップについて記述を追加しました。

Comments [0] | Trackbacks [1]
2006年3月 8日

TinyMCE Plugin for Movable Type Ja でエントリーを編集する

March 8,2006 1:50 AM
Tag:[, , ]
Permalink

TinyMCE Plugin for Movable Type Ja 世界中の1%の人々へTinyMCE Plugin for Movable Type Ja Beta4 で提供されているプラグインのご紹介です。

このプラグインはAjaxify/EnhancedEntryEditingに機能追加をして配布されていたAjaxify/EnhancedEntryEditing日本語版の後継システムで、エントリー編集画面をスクリーンショットのようなWYSIWYGエディターに変換します。
ちなみにTinyMCEとはJavaScriptによるHTML WYSIWYGエディター(オープンソースプラットフォーム)で、CMSと非常に親和性があります(というようなことが配布元サイトに書かれています)。

TinyMCE Plugin for Movable Type Ja の特徴は下記の通りです。

  • エントリー編集画面の「エントリーの内容」「追記」「概要」画面がWYSIWYGエディタになります。
  • WYSIWIGのON・OFFを切り替えられるので Movabl Type デフォルトの編集画面も使用可能です。
  • 編集画面の縦幅をドラッグ(または伸縮用アイコン)変更することができます。

ということで以下利用方法です。詳細については配布元に書かれておりますのでそちらを参照ください。

1.ダウンロード

TinyMCE Plugin for Movable Type Ja Beta4の「インストールについて」の説明文のリンクをクリック。ジャンプしたページのやや下にある「TinyMCE Plugin for Movable Type Ja」のリンクをクリックするとアーカイブをダウンロードできます。

2.インストール

ダウンロードしたアーカイブを解凍して、中にある ReadmeJa.txt 以外のディレクトリをそのまま mt.cgi のディレクトリにアップロードします。アップロード後、「メイン・メニュー」→「システム・メニュー」→「プラグイン」を順にクリックして、TinyMCEforMT バージョン Beta4 Ja が表示されていればOKです。

3.利用方法

管理画面の「新規エントリー」または「エントリー」→任意のエントリーをクリックして編集画面に進みます。タグ挿入ボタンの右側に新しいボタンが増えていますが、それをクリックする前に下方にある「改行設定」を「なし」に変更してください。
次に「WYSIWYG」をクリックするとスクリーンショットのようなWYSIWYG画面に切り替わります。そのボタンの左側にあるアイコンは編集画面の高さを変更するものです。またWYSIWYG画面でも編集画面右下をドラッグすると画面の高さを調節することができます。

4.InvalidateLinkOfInsertTag.pl をご利用の場合の修正

当サイトで公開している InvalidateLinkOfInsertTag.pl プラグイン(エントリー編集画面のHTMLタグ挿入ボタンクリックでバックスクロールする不具合を解消)をご利用の場合、TinyMCE Plugin for Movable Type Ja が正常に動作しませんので、InvalidateLinkOfInsertTag プラグインを無効にするか、ファイル自体を削除し、

plugins/TinyMCEforMT/TinyMCEforMT.pl

を任意のエディタで開き、青色部分を追加してください。

HTML
    chop ($old); $old = quotemeta ($old);
    chop ($add1);
    chop ($add2);
    $$template =~ s/($old)/$add1$1$add2/;
    $$template =~ s/href="#"/href="javascript:void(0);"/g;
}
 
1;
__END__

修正後、同じディレクトリにアップロードしてください。

大丈夫と思いますが TinyMCE Plugin for Movable Type Ja の動作を完全に保証するものではありませんので予めご了承ください。

Comments [16] | Trackbacks [6]
2006年3月 3日

エントリー編集画面に文字列選択なしでHTMLタグを挿入できるようにする

非選択状態でタグを挿入エントリー編集画面でテキストエリアの右上にある 太字イタリックアンダーライン引用については、マウス等で文字列を選択状態にしておかないとタグが挿入できない仕様(というほどではありませんが)になっています。

先日「HTMLタグが挿入できません」というご質問を頂き、文字列を選択してくださいという回答を致しましたが、よく考えてみると選択状態でなくてもタグを挿入したい場合(タグを入力してからコンテンツを後で書き込む等)もあるのではないかと思います。

ということで、スクリーンショットのように非選択状態でもこれらのタグを挿入できるようにするカスタマイズです(例は blockquote タグを挿入)。

1.mt_ja.js の変更

HTMLタグの挿入は JavaScript で行っていますので、該当のスクリプトが書かれているファイル(mt_ja.js)の一部を修正します。
mt_ja.js はアップロードしている Movable Type のディレクトリ mt-static (index.html と同じパスにあると思います)の配下にありますので、それをダウンロード(ローカルに同じファイルがあればそれを利用)し、下記のパッチをあててください。

--- mt-static/mt_ja.js.bak Thu Mar 02 23:50:16 2006
+++ mt-static/mt_ja.js     Thu Mar 02 23:51:11 2006
@@ -236,7 +236,6 @@
 function formatStr (e, v) {
     if (!canFormat) return;
     var str = getSelected(e);
-    if (!str) return;
     setSelection(e, '<' + v + '>' + str + '</' + v + '>');
     return false;
 }

パッチがよくわからない、または面倒という方は、mt_ja.js を任意のエディタで開き、240 行目辺りを探して

function formatStr (e, v) {
    if (!canFormat) return;
    var str = getSelected(e);
//    if (!str) return;
    setSelection(e, '<' + v + '>' + str + '</' + v + '>');
    return false;
}

と赤色のコメント用の文字を追加するか、その行を丸ごと削除して

function formatStr (e, v) {
    if (!canFormat) return;
    var str = getSelected(e);
    setSelection(e, '<' + v + '>' + str + '</' + v + '>');
    return false;
}

としてください。
どちらの方法も、修正が終わったら元のディレクトリにアップロードしてください。

2.ページのスクロールバックを防止する

3.2-ja-2 ではタグ挿入ボタンをクリックした後、ページの先頭に戻ってしまう(スクロールバック)という問題があります。それを避けるためにはエントリー編集画面のHTMLタグ挿入ボタンの不具合を解消するプラグインを併用ください。

以上です。

Comments [7] | Trackbacks [1]
2006年2月13日

アップロード方法を指定するプラグイン

Movable Type のファイルのアップロード先等の指定は手入力で行っていたのですが、Better File Uploader というプラグインを導入しました。BigPAPI を利用したプラグインですので、バージョンアップによる修正は(多分)不要です。

以下設定方法です。

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

Plugin: Better File Uploader のサイトより Installation の1項にある BetterFileUploader.zip のリンクをクリックして、アーカイブをダウンロードします(2/12付で Photo Gallery 関連のバグが改修されています)。

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

アーカイブを解凍して、中にある BetterFileUploader というフォルダを丸ごと plugins ディレクトリ配下にアップロードします。

plugins/BetterFileUploader/BetterFileUploader.cgi
plugins/BetterFileUploader/BetterFileUploader.pl
plugins/BetterFileUploader/BetterFileUploader.pm

となればOKです。BigPAPI.pl が plugins ディレクトリにない場合、つまり BigPAPI を使ったことがない場合は、このファイルを plugins ディレクトリにアップロードします。

plugins/BigPAPI.pl

また、BetterFileUploader.cgi のファイル属性を 755 等に変更します。

3.設定

アップロード先を指定するプラグイン管理画面の「メイン・メニュー」→「プラグイン」(またはブログ別の「設定」→「プラグイン」)をクリックして、次ページのBetter File Uploader の右側にある「設定を表示」をクリックするとスクリーンショットの画面が表示されます。
  • Override weblog-specific settings with the settings below:チェックすることでここでの設定がデフォルトの設定に上書きします。
  • Default upload directory:アップロード先のディレクトリを指定します(アップロード画面の「アップロード先」に対応)。
  • Append:チェックボックスにチェックすると、現在の年月のディレクトリが追加されます。
  • By default, upload to:でアップロード先をアーカイブ・パス/サイト・パスのいずれかを選択します(アップロード画面の「アップロード先を指定」に対応します)。
  • By default, publish as:のCreate a new entry using this uploaded file.がアップロード後画面の「エントリーを投稿」、Show me the HTML.が「HTMLを表示」に対応します。
  • After uploading an image, a thumbnail can be built. How should the thumbnail size be calculated? はアップロード画像のサムネイルサイズを指定します(アップロード後画面の「サムネイル」部分に対応します)。The longest side should be pixels long:はピクセル指定した値が画像の長い方に適用されます。The thumbnail should be a fixed size:は画像の高さ・幅いずれかのサイズを指定します。
  • Photo Gallery Creation Options:については同サイトで公開されている Basic Photo Gallery Templates との連携のための設定です。利用する場合は Enable easier photo gallery creation mode. にチェックします。Place the photo path in the Entry Body field. はエントリーフィールドに画像パスを設定、Place the photo path in the Extended Entry field. は追記フィールドに画像パスを設定します。

全て設定したら「変更を保存」をクリックします。ファイルのアップロード画面で設定が反映されていればOKです。

このプラグインや Photo Gallery Templates についての詳細は Movable Type 4989Photo Gallery Templates で詳しく解説されていますのでそちらを参照されると良いでしょう。

Comments [9] | Trackbacks [2]
2006年1月29日

管理画面のエントリーリストにパーマリンクを表示する

管理画面のエントリーリストにパーマリンクを表示する管理画面でエントリーリストを表示した時にそのエントリーのパーマリンク(エントリーアーカイブページのURL)も同時に表示するカスタマイズです。
これを作った理由は、管理画面のエントリー一覧からあるエントリーのURLを取得するためには、そのエントリー編集画面の右上にある「エントリーを確認」のリンクからしか取得できず、エントリー一覧から直接取得(あるいは表示)できるようにしたいと思ったからです。

完成画面はスクリーンショットでお分かりのように、リンク画像をエントリータイトルの後方に表示するようにしています。これをクリックすることで該当のエントリーを表示することができます(URLを取得するだけであれば、IEの場合、リンクを右クリックして「ショートカットのコピー」を選択することでコピーできます)。
またツールチップにURLを表示するようにしてします。

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

1.CMS.pm の修正

エントリー一覧ではパーマリンク情報を取得していないため、これを取得できるよう、lib/MT/App/CMS.pm をダウンロードし、下記のパッチをあてます。パッチのあて方についてはパッチをあてる(その1:適用方法)をご覧ください。パッチがよく分からない&面倒という方はパッチをあてる(その1:適用方法)の4項をご覧ください。

--- CMS.pm.bak  Thu Jan 29 23:24:40 2006
+++ CMS.pm      Thu Jan 29 23:26:58 2006
@@ -5038,6 +5038,7 @@
         $row->{author_name} = $author ? $author->name : $app->translate('(author deleted)');
         $row->{category_name} = $obj->category ? $obj->category->label : '';
         $row->{title_short} = $obj->title;
+        $row->{entry_permalink} = $obj->permalink;
         if (!defined($row->{title_short}) || $row->{title_short} eq '') {
             my $title = remove_html($obj->text);
             $row->{title_short} = MT::I18N::substr_text($title||"", 0, MT::I18N::const('DISPLAY_LENGTH_EDIT_ENTRY_TITLE')) . '...';

パッチをあてた後はアップロードして元の CMS.pm に上書きしてください。

2.エントリーリスト表示用テンプレートを修正する

BigPAPI用プラグインを利用する方法と、テンプレートを直接修正する方法の2通りを紹介します。2.1項または2.2項のいずれかお好きな方を選んでカスタマイズしてください。

2.1 BigPAPI用プラグインを利用する

2.1.1 BigPAPI プラグインのダウンロード

注:すでに BigPAPI プラグインをお使いの方は、2.1.1項および2.1.2項の作業をスキップして2.1.3項に進んでください。
下記のサイトより BigPAPI のプラグインをダウンロードします。Download のリンクまたは、Plugin Code のリンクをクリックしてください。

staggernation.comBigPAPI Plugin for Movable Type
2.1.2 BigPAPI プラグインのアップロード

Download のリンクをクリックした場合は、アーカイブを解凍した中にある BigPAPI.pl を、Plugin Code のリンクをクリックした場合は、保存した BigPAPI.pl をそのまま plugins ディレクトリにアップロードします。

2.1.3 リンク表示用プラグインのダウンロード

下記の DisplayEntryTitleAndPermalink.zip または DisplayEntryTitleAndPermalink.lzh をクリックしてアーカイブをダウンロードしてください。

DisplayEntryTitleAndPermalink.zip
DisplayEntryTitleAndPermalink.lzh
2.1.4 リンク表示用プラグインのアップロード

アーカイブを解凍して、中にある DisplayEntryTitleAndPermalink.pl を plugins ディレクトリにアップロードします。なおこのプラグインでは管理画面のエントリーリストのタイトルを全て表示するプラグインの機能も入っています。
注:管理画面のエントリーリストのタイトルを全て表示するプラグイン DisplayEntryTitle.pl をアップロードしている方は必ずこのプラグインに差し替えてください。

2.2 テンプレートを直接修正する

tmpl/cms/entry_table.tmpl をダウンロードし、任意のエディタで開き、77行目に青色部分を追加します。修正後、元のディレクトリにアップロードします。修正前に必ずバックアップをとっておきましょう。

<TMPL_IF NAME=VIEW_EXPANDED><strong><TMPL_VAR NAME=TITLE_LONG></strong>&nbsp;<a href="<TMPL_VAR NAME=ENTRY_PERMALINK>"><img src="<TMPL_VAR NAME=BLOG_URL>mt-static/images/status_icons/link.gif" alt="<TMPL_VAR NAME=ENTRY_PERMALINK>" width="16" height="9" /></a><TMPL_IF NAME=EXCERPT> &mdash; <TMPL_VAR NAME=EXCERPT></TMPL_IF><TMPL_ELSE><TMPL_IF NAME=HAS_EDIT_ACCESS><TMPL_IF NAME=IS_POWER_EDIT><input name="title_<TMPL_VAR NAME=ID>" value="<TMPL_VAR NAME=TITLE ESCAPE=HTML>" /><TMPL_ELSE><a href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&amp;_type=entry&amp;id=<TMPL_VAR NAME=ID>&amp;blog_id=<TMPL_VAR NAME=BLOG_ID>"><TMPL_VAR NAME=TITLE_SHORT></a>&nbsp;<a href="<TMPL_VAR NAME=ENTRY_PERMALINK>"><img src="<TMPL_VAR NAME=BLOG_URL>mt-static/images/status_icons/link.gif" alt="<TMPL_VAR NAME=ENTRY_PERMALINK>" width="16" height="9" /></a>

2ヶ所に同じものを追加しているのは、エントリー一覧の左下にある「画面の表示設定を変更」のカスタマイズで、「コンパクト」と「拡張」の両方に対応させているためです。

3.新しいウィンドウで開く場合

本カスタマイズでは同一ウィンドウでリンクを開く設定になっています。新しいウインドウで開く場合は下記の修正を行ってください。

2.1項ご利用の方はプラグイン DisplayEntryTitleAndPermalink.pl、2.2項ご利用の方は tmpl/cms/entry_table.tmpl の

<a href="<TMPL_VAR NAME=ENTRY_PERMALINK>">

を検索して、taret 属性(青色部分)

<a href="<TMPL_VAR NAME=ENTRY_PERMALINK>" target="_blank">

を追加してください(いずれも修正部分が2ヶ所あります)。
なお本設定を行わなくてもリンクを右クリックすることで新しいウィンドウに表示することは可能です。

4.リンク画像が表示されない場合

リンクの画像は

mt-static/images/status_icons/link.gif

を利用していますが、mt-static のパスは index.html があるディレクトリを起点としています。もし cgi-bin 等に mt-static を配置している場合は正常に表示されない可能性がありますので、下記の修正を行ってください。

2.1項ご利用の方はプラグイン DisplayEntryTitleAndPermalink.pl、2.2項ご利用の方は tmpl/cms/entry_table.tmpl の

src="<TMPL_VAR NAME=BLOG_URL>mt-static/images/status_icons/link.gif"

の赤色部分を

src="[mt-staticまでのURL]/mt-static/images/status_icons/link.gif"

に変更してください(いずれも修正部分が2ヶ所あります)。

Comments [14] | Trackbacks [1]
2006年1月 9日

管理画面のエントリーリストのタイトルを全て表示する(その2)

January 9,2006 11:55 PM
Tag:[, ]
Permalink

エントリーリスト変更イメージ管理画面のエントリーリストのタイトルを全て表示するのエントリーで、エントリーのタイトルを全て表示するカスタマイズ方法をご紹介した後、管理画面上の表示設定を変更することでスクリーンショット(中)のように、エントリータイトルの全表示が可能であることを知りました。
この場をお借りしてお詫び申し上げると同時に、本エントリーで変更方法をご紹介しておきます。

方法は、エントリーリスト(他の画面も同様)左下に「画面の表示設定を変更」というリンクがあり、このリンクをクリックするとスクリーンショット(下)のウィンドウが表示されます。この中にある「表示形式」について「拡張」を選択し、「保存」をクリックすることでエントリータイトルが bold で全て表示されるようになります。

画面の表示設定を変更するウィンドウただし本文の概要もタイトル横に表示されるため、情報量がやや多くなります。ということで個人的には前エントリーの方法で結果オーライなのですが、こちらを先に気がつかなかったのは悔やまれるところです。(笑)
同じ変更画面で、表示件数・ボタン表示位置・日付表示もカスタマイズできるのでお試しください。

Comments [0] | Trackbacks [0]
2006年1月 7日

Sidebar Manager plugin でサイドバーのレイアウトを変更する

January 7,2006 11:59 PM
Tag:[, , , ]
Permalink

Sidebar Manager pluginPlugins Directory を見に行くと、Sidebar Manager というプラグインが公開されていましたので、ご紹介したいと思います。

Sidebar Manager は説明によると、HTML や Movable Type のテンプレートに関する知識なしで、プラグインで用意された「サイドバーウィジェット(スクリーンショット)」を利用して、サイドバーのレイアウトを管理できるプラグインです。

以下、Sidebar Manager を利用したカスタマイズ方法です。なおこのプラグインはデフォルトテンプレートでの利用を前提に作られています。

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

Sidebar Manager のページ右上にある「Download」のリンクをクリックして、ジャンプした Donate and Download Sidebar Manager の右上にある Unix または Windows をクリックして、プラグインアーカイブをダウンロードします。

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

ダウンロードしたアーカイブを解凍し、mt-static ディレクトリの中にある plugins ディレクトリを Movable Type の mt-static ディレクトリに、plugins ディレクトリの中にある SidebarManager ディレクトリを Movable Type の plugins ディレクトリにアップロードします。
アップロード後は下記のようになります。

mt-static/plugins/sidebar/…
plugins/SidebarManager/…

アップロード後、管理画面のメインメニューから「プラグイン」をクリックして、次ページで「Sidebar Manager …」が表示されていればOKです。

3.テンプレートの修正

テンプレートにプラグイン用の MTSidebar というタグを設定します。この MTSidebar タグを設定した位置に、プラグインによってサイドメニューを挿入できるようになります。
ここではメインページを例に説明します。

メインページのテンプレート編集画面を開き、右サイドバー部分にあたる下記の赤色部分を全て削除します(プラグインの動作を確認するだけであれば削除する必要はありません)。

    :
<div id="beta">
   <div id="beta-inner" class="pkg">
 
      <div class="module-search module">
         <h2 class="module-header">検索</h2>
         <div class="module-content">
            <form method="get" action="<$MTCGIPath$><$MTSearchScript$>">
               <input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
               <label for="search" accesskey="4">ブログを検索: </label><br />
               <input id="search" name="search" size="20" />
               <input type="submit" value="検索" />
            </form>
         </div>
      </div>
      
      <MTIfArchiveTypeEnabled archive_type="Category"><div class="module-categories module">
         <h2 class="module-header">カテゴリー</h2>
         <div class="module-content">
         <MTTopLevelCategories>
         <MTSubCatIsFirst><ul class="module-list"></MTSubCatIsFirst>
            <MTIfNonZero tag="MTCategoryCount">
            <li class="module-list-item"><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a>
            <MTElse>
            <li class="module-list-item"><MTCategoryLabel>
            </MTElse>
            </MTIfNonZero>
               <MTSubCatsRecurse>
            </li>
         <MTSubCatIsLast></ul></MTSubCatIsLast>
         </MTTopLevelCategories>
         </div>
      </div>
      </MTIfArchiveTypeEnabled>
      
      <MTIfArchiveTypeEnabled archive_type="Monthly">
      <div class="module-archives module">
         <h2 class="module-header"><a href="<$MTBlogURL$>archives.html">アーカイブ</a></h2>
         <div class="module-content">
         <MTArchiveList archive_type="Monthly">
            <MTArchiveListHeader><ul class="module-list"></MTArchiveListHeader>
               <li class="module-list-item"><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a></li>
            <MTArchiveListFooter></ul></MTArchiveListFooter>
         </MTArchiveList>
         </div>
      </div>
      </MTIfArchiveTypeEnabled>
      
      <div class="module-archives module">
         <h2 class="module-header">最近のエントリー</h2>
         <div class="module-content">
            <ul class="module-list">
            <MTEntries lastn="10">
               <li class="module-list-item"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
            </MTEntries>
            </ul>
         </div>
      </div>
      
      <div class="module-syndicate module">
         <div class="module-content">
            <a href="<$MTBlogURL$>atom.xml">このブログのフィードを取得</a><br />
            [<a href="http://www.sixapart.com/about/feeds">フィードとは</a>]
         </div>
      </div>
      
      <MTBlogIfCCLicense>
      <div class="module-creative-commons module">
         <div class="module-content">
            <a href="<$MTBlogCCLicenseURL$>"><img alt="クリエイティブ・コモンズ・ライセンス" src="<$MTBlogCCLicenseImage$>" /></a><br />
            このブログは、次のライセンスで保護されています。 <a href="<$MTBlogCCLicenseURL$>">クリエイティブ・コモンズ・ライセンス</a>.
         </div>
      </div>
      </MTBlogIfCCLicense>
      
      <div class="module-powered module">
         <div class="module-content">
            Powered by<br /><a href="http://www.sixapart.jp/movabletype/">Movable Type <$MTVersion$></a>
         </div>
      </div>
   </div>
</div>
    :

削除した部分に下記のように青色の MTSidebar タグを設定してください。上記を削除していない場合は適当な位置に <$MTSidebar$> を挿入してください。

<div id="beta">
   <div id="beta-inner" class="pkg">
      <$MTSidebar$>
   </div>
</div>

4.サイドメニューの設定をする

3項の設定でお分かりの通り、MTSidebar タグの部分にプラグインでカスタマイズするサイドメニューが表示されます。

4.1 プラグインを起動する

プラグインを起動管理メニュー一番上にあるプルダウンメニューから設定したいブログを選択して「Go」をクリックし、ブログのスタートページにジャンプします。次ページ真ん中にプラグインの表示(スクリーンショット)がありますので、「Re-arrange My Sidebar」をクリックします。

4.2 表示するサイドメニューを選択する

サイドメニューを選択スクリーンショットのようなページが表示されますので、マウスドラッグでサイドメニューを選択します。Installed Widgets と書かれた左側のエリアにあるメニューが表示されますので、左右のエリアにあるメニューをドラッグして表示するメニューをカスタマイズしてください。表示順序も配置された通りになります。

設定が完了したら、フォーム下の Save Changes をクリックします。

4.3 再構築

再構築クリック後、再構築のメッセージが表示されますので、通常の再構築を行ってください。ページを表示して追加したメニューが表示されていることを確認してください(英語ですが)。

5.name 属性による表示制御

3項で設定した

<$MTSidebar$>

ですが、このタグに name 属性を与え、

<$MTSidebar name="hogehoge"$>

name 属性による表示制御とし、異なる name 属性値の MTSidebar タグを各サイドバーに設定することで、サイドバー単位にメニューをカスタマイズすることができます。例えば3カラムにカスタマイズしていて、左右で表示するメニューを変えたい場合や、他のアーカイブページで表示するメニューを変更する場合があると思いますので、そのような場合に name 属性が有効に利用できると思います。

…と思って試してみたのですが、α版では設定画面がうまく動作しないようです。なお name 属性を与える場合は、3項の画面にある Rename Sidebar: に、スクリーンショットのように任意の name 属性値を設定します。

Comments [2] | Trackbacks [0]
2006年1月 4日

管理画面のエントリーリストのタイトルを全て表示する

エントリーリスト変更イメージ管理画面から過去のエントリーを修正する時、デフォルトではエントリーリストのタイトル表示が一定文字数で切られるため、似たようなタイトルがいくつも存在する場合、編集したいエントリーがすぐに見つからないことがあります。
私はカスタマイズのエントリーを更新する機会が少なくなく、カテゴリー別にエントリーリストを表示をさせた時など、スクリーンショット上のように同じ単語で始まるタイトルがいくつもあり、選択に困る訳です。

このエントリーではエントリーリストにあるエントリータイトルを全て表示(スクリーンショット下)するカスタマイズおよびプラグインを紹介します。
カスタマイズ方法は、下記の1?3項のいずれかひとつを選んでください。

1.エントリータイトルを全て表示する

tmpl/cms/entry_table.tmpl をダウンロードして(またはPCに保存しているファイルでもOK)、任意のエディタで開き、77行目(そのファイルの中で一番長い行)の赤色部分を削除します。

<TMPL_IF NAME=VIEW_EXPANDED><strong><TMPL_VAR NAME=TITLE_LONG></strong><TMPL_IF NAME=EXCERPT> — <TMPL_VAR NAME=EXCERPT></TMPL_IF><TMPL_ELSE><TMPL_IF NAME=HAS_EDIT_ACCESS><TMPL_IF NAME=IS_POWER_EDIT><input name="title_<TMPL_VAR NAME=ID>" value="<TMPL_VAR NAME=TITLE ESCAPE=HTML>" /><TMPL_ELSE><a href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=entry&id=<TMPL_VAR NAME=ID>&blog_id=<TMPL_VAR NAME=BLOG_ID>" ><TMPL_VAR NAME=TITLE_SHORT></a>

修正したファイルを同じディレクトリにアップロードしてください。長いタイトルは自動的に折り返して表示されます。

2.エントリータイトルリンクのツールチップでタイトルを表示する

画面の表示自体は変更しませんが、ハイパーリンクになっているエントリータイトルのツールチップでエントリータイトルを全て表示します。
tmpl/cms/entry_table.tmpl をダウンロードして(またはPCに保存しているファイルでもOK)、任意のエディタで開き、77行目(そのファイルの中で一番長い行)に青色部分を追加します。

<TMPL_IF NAME=VIEW_EXPANDED><strong><TMPL_VAR NAME=TITLE_LONG></strong><TMPL_IF NAME=EXCERPT> — <TMPL_VAR NAME=EXCERPT></TMPL_IF><TMPL_ELSE><TMPL_IF NAME=HAS_EDIT_ACCESS><TMPL_IF NAME=IS_POWER_EDIT><input name="title_<TMPL_VAR NAME=ID>" value="<TMPL_VAR NAME=TITLE ESCAPE=HTML>" /><TMPL_ELSE><a href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=entry&id=<TMPL_VAR NAME=ID>&blog_id=<TMPL_VAR NAME=BLOG_ID>" title="<TMPL_VAR NAME=TITLE>"><TMPL_VAR NAME=TITLE_SHORT></a>

修正したファイルを同じディレクトリにアップロードしてください。

3.BigPAPI用プラグインを利用する

BigPAPI用のプラグインも用意しました(1項の動作と同じになります)。
下記の DisplayEntryTitle.zip または DisplayEntryTitle.lzh をクリックしてアーカイブをダウンロードしてください。

DisplayEntryTitle.zip
DisplayEntryTitle.lzh

アーカイブを解凍して、中にある DisplayEntryTitle.pl を plugins ディレクトリにアップロードしてください。
このプラグインはBigPAPIプラグインがインストールされている必要があります。BipPAPIのインストールは、下記のサイトへジャンプし、Download のリンクまたは、Plugin Code のリンクをクリックしてプラグインをダウンロードしてください。

staggernation.comBigPAPI Plugin for Movable Type

Download のリンクをクリックした場合は、アーカイブを解凍した中にある BigPAPI.pl を、Plugin Code のリンクをクリックした場合は、保存した BigPAPI.pl をそのまま plugins ディレクトリにアップロードします。

4.プラグインご利用の場合

エントリーリストが表示される仕組みは、ページ全体を表示する list_entry.tmpl から

<TMPL_INCLUDE NAME=entry_table.tmpl>

というインクルード用タグを用いて、実際のリスト表示部分である entry_table.tmpl を引き込み、エントリーリストを表示しています。このインクルード部分についてBigPAPIでは対応していないようなので(間違っていたらすいません)、本プラグインでは list_entry.tmpl にあるインクルード部分(上の1行)を entry_table.tmpl の中身(にちょっと修正を加えたもの)とごっそり置き換えています。
ということで、Movable Type のバージョンアップで entry_table.tmpl が変更になると、エントリーリストの表示に何らかの影響が発生する可能性があります。個人的にはしばらく変更されることはないと思ってますが、念のためお知らせしておきます。変更があればプラグインも適宜修正したいと思います。

Comments [6] | Trackbacks [4]
2005年11月28日

アーカイブ・マッピングについて

以前記したアーカイブの設定についての 3.2-ja 版で、管理画面の「設定」→「公開」→「アーカイブ・マッピング」の内容についての説明です。

以下、それぞれの項目について説明します。

マッピングを新規作成
これは右肩にあるリンクを指しています。マッピングとは「関連付け」や「対応」を意味します。
テンプレートを新しく作成する時、テンプレートは何らかのアーカイブの種類(エントリー/日別/週別/月別/カテゴリー)と関連付ける必要があります。テンプレートにアーカイブの種類を関連付けることで、その中で使用するMTタグの意味が決まります。

例えば新しく作ったテンプレートの中で <$MTArchiveTitle$> というタグを使用している場合、「カテゴリー」というアーカイブに関連付けをすればカテゴリー名に、「エントリー」アーカイブに関連付けすればエントリーのタイトルに変換されます。

この項目(フォーム)で新たに作成したアーカイブ・マッピングは、その下にある一覧に追加されます。例えばカレンダー用テンプレート「カレンダー」を新たに作り、それを月別アーカイブとして関連付けを行えば、月別欄の「テンプレート」部分に「カレンダー」テンプレートが追加されます。

この設定項目をわざわざ隠しているのは、3.1x までこの項目は常に表示されており、誤って(追加)操作を行ってしまうことで、アーカイブ・マッピングに不要なテンプレートが追加されてしまい、それが元で再構築後のページ(のハイパーリンク)に不具合が発生したためと思われます。

アーカイブの種類
チェックボックスで使用するアーカイブを決定します。チェックされているアーカイブが再構築の対象になります。他のアーカイブページからリンクされているにもかかわらずチェックされていないと、再構築エラーになります。
アーカイブの種類を増減することはできません。

種類説明
エントリーエントリー別のページを作成します。デフォルトテンプレートや公開テンプレートではコメント入力フォームはこのアーカイブに属します。
日別日別のページを作成します。カレンダーからリンクされたページとして使われます。
週別ある週に属するエントリーを一括表示するページを作成します。
月別ある月に属するエントリーを一括表示するページを作成します。カレンダー自体はこのアーカイブを使用します。
カテゴリーあるカテゴリーに属するエントリーを一括表示するページを作成します。

テンプレート
アーカイブに関連付けられたテンプレートを表示します。

出力フォーマット
出力ファイルのフォーマットを決定します。3.1x 以前ではMTタグをここに設定していましたが、3.2-ja では新しいフォーマットが適用されています(MTタグも使えます)。
具体的なフォーマットについては下記のサイトで詳しく解説されています。

優先
前述の通り、一つのアーカイブは複数のテンプレートを持つことができます。その場合、それぞれのテンプレートを使ったアーカイブファイルが生成されますが、別のページからそのアーカイブファイルへリンクを生成する場合、archive_type 属性を使うことでリンクを簡単に作ることができます。
例えばメインページから月別アーカイブリストへのリンクを作る場合、

<MTArchiveList "archive_type="Monthly">
<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a><br />
</MTArchiveList>

と赤色の archive_type 属性を Monthly とすることで青色の部分には月別アーカイブのリンクが設定されるわけです。Monthly を Categoly に変更すればカテゴリーリストができ、Daily にすれば日別のリストができるという仕組みです。

ただし、月別アーカイブに二つ以上のテンプレートが関連付けされている?仮に日付アーカイブテンプレートと新しく作ったカレンダー用のテンプレートが存在する?場合、archive_type 属性ではどちらか一方のリンクしか作ることができません。
それを決定するのがこの「優先」です。デフォルトの状態では何も表示されていませんが、ひとつのアーカイブに複数のテンプレートを関連つけた場合、ここにラジオボタンが現れます。そしてラジオボタンで選択した方が archive_type 属性の対象となります。

ちなみに、1つのアーカイブに複数のテンプレートを関連付けた場合は、それぞれのテンプレートの出力フォーマッをは異なるものにする必要があります(同じフォーマットにした場合、後から再構築されたテンプレートのファイルで上書きされてしまいます)。

Comments [0] | Trackbacks [1]
2005年8月18日

エントリーのプレビューを行うプラグイン

August 18,2005 11:56 PM
Tag:[, , , , ]
Permalink

The blog of H.Fujimoto でお馴染みの壱さんが作られた「エントリーのプレビューを行うプラグイン」のカスタマイズをご紹介します。

Movable Type のエントリーのプレビューは「確認」をクリックすることで出来栄えを見ることができますが、管理用のCSSを用いているため、またHTMLの構造も公開ページと異なるため、実際に公開した時に予想しない表示になっていて慌てて修正することがしばしばありました。
このプラグインは、メインページや各アーカイブと同じテンプレートを使って、いわゆる「隠しページ」を生成し、それを参照することで公開前に表示を確認できるというものです。

ちょっと前から使わせて頂いているのですが、段落・リスト・表・画像等の確認がじっくり行えます。今まではある意味勘で作成・修正していたので、かなり重宝しています。

ということで以下、カスタマイズ方法です。内容は壱さんのページと同じですが、とりあえずメインページのプレビューに着目して書いてみました。

1.プラグインのダウンロード
The blog of H.Fujimotoエントリーのプレビューを行うプラグイン(その1)
より mt-rebuild-preview.zip のリンクをクリックしてプラグインアーカイブをダウンロードします。

2.ファイルのアップロード
アーカイブを解凍すると下記のファイルがあります。

mt-rebuild-preview.cgi
/extlib/FJ/RebuildPreview.pm
/plugins/TagsForPreview.pl
/tmpl/cms/rebuild_preview.tmpl

これらのファイルを、MTCGIPath をルートパスとして、同じ名称のディレクトリ配下にそれぞれアップロードします。例えば mt-rebuild-preview.cgi は mt.cgi と同じディレクトリに、TagsForPreview.pl は plugins ディレクトリ配下にアップロードします。存在しないディレクトリ(FJ)は新たに作成してください。mt-rebuild-preview.cgi のパーミッションは 755 等に変更してください。

3.メインページプレビュー用テンプレート作成
管理画面の「テンプレート」の右上にある「インデックステンプレートの作成」をクリックし、
次のページでそれぞれ以下のように設定します。

テンプレートの名前:メインページプレビュー(何でもいいです)
出力ファイル名:preview.html
再構築オプション:チェックを外す
テンプレートの中身:メインページの中身を丸ごとコピー

出力ファイル名はここでは preview.html としましたが、他の方に参照されない名称にしてください。またメインページが index.php の場合は preview.php としてください。

4.テンプレートの修正
プレビュー用テンプレートの下記の赤色部分 MTEntries を青色のように MTEntries WithDraft に変更します。

修正前

     :
<MTEntries lastn="5">
<$MTEntryTrackbackData$>
     :
</MTEntries>
     :

修正後

     :
<MTEntriesWithDraft lastn="5">
<$MTEntryTrackbackData$>
     :
</MTEntriesWithDraft>
     :

修正が終わったら、保存・再構築します。出力ファイル名を指定して表示されていればここまでの設定はOKです。

5.プレビュー用テンプレートの関連付け
3?4項で作成したテンプレートをプレビュー用テンプレートとして関連づける作業を行います。

Tags For Preview のリンクメインメニュー下にある「利用可能なプラグインの設定」で Tags For Preview のリンクをクリックします。
ブログ選択画面複数のブログを作っている場合は、画像のようにブログ選択画面が表示されます。プレビュー表示したいブログを選択して「送信」ボタンをクリックします。
インデックステンプレート一覧表示画面クリックするとインデックステンプレート一覧表示画面に遷移します。ここでプレビュー用のテンプレートを選択し、「保存」ボタンをクリックします。複数のプレビュー用テンプレートを作っている場合は、Windowsの場合は Ctrlキーを押しながらクリックすることで複数のテンプレートを選択することができますので、すべてを選択してください。

6.管理画面にプレビュー用の設定を追加
/tmpl/cms/edit_entry.tmpl を任意のエディタで開き、青色部分を追加します。各行数は追加した後の行数になっていますので、目安にしてください。2番目と3番目の追加は緑色の行で検索すると便利です。

5行目あたり

<script type="text/javascript">
<!--
 
function doRebuildPreview () {
    window.open('mt-rebuild-preview.cgi?__mode=start_rebuild&blog_id=<TMPL_VAR NAME=BLOG_ID>&entry_id=<TMPL_VAR NAME=ID>', 'doRebuildPreview', 'width=400,height=250,resizable=yes,scrollbars=yes');
}
 
function listPreviousPings () {
    window.open('<TMPL_VAR NAME=SCRIPT_URL>?__mode=pinged_urls&entry_id=<TMPL_VAR NAME=ID>&blog_id=<TMPL_VAR NAME=BLOG_ID>', 'urls', 'width=370,height=250,resizable=yes,scrollbars=yes');
}

130行目辺り

<TMPL_IF NAME=POSITION_BUTTONS_TOP>
<div id="button-bar">
<TMPL_UNLESS NAME=NEW_OBJECT>
<input class="button" onClick="doRebuildPreview()" type="button" value="<MT_TRANS phrase="Preview on Blog">">  
</TMPL_UNLESS>
<input type="submit" name="preview_entry" value="<MT_TRANS phrase="Preview">" />
<input type="submit" value="<MT_TRANS phrase="Save">" />
<TMPL_UNLESS NAME=NEW_OBJECT>
<input onclick="doRemoveItem('<TMPL_VAR NAME=ID>', 'entry&blog_id=<TMPL_VAR NAME=BLOG_ID>')" type="button" value="<MT_TRANS phrase="Delete Entry">" />
</TMPL_UNLESS>
</div>
</TMPL_IF>

330行目辺り

<TMPL_IF NAME=POSITION_BUTTONS_BOTTOM>
<div id="button-bar">
<TMPL_UNLESS NAME=NEW_OBJECT>
<input class="button" onClick="doRebuildPreview()" type="button" value="<MT_TRANS phrase="Preview on Blog">">  
</TMPL_UNLESS>
<input type="submit" name="preview_entry" value="<MT_TRANS phrase="Preview">" />
<input type="submit" tabindex="13" value="<MT_TRANS phrase="Save">" />
<TMPL_UNLESS NAME=NEW_OBJECT>
<input onclick="doRemoveItem('<TMPL_VAR NAME=ID>', 'entry&blog_id=<TMPL_VAR NAME=BLOG_ID>')" type="button" value="<MT_TRANS phrase="Delete Entry">" />
</TMPL_UNLESS>
</div>
</TMPL_IF>

ここまでの作業が終わればメインページのプレビューができる状態になります。

7.プレビューする

「Preview on Blog」ボタン プレビューの方法は、編集したエントリーに「Preview on Blog」というボタンが現れるので、これをクリックします。「確認」ボタンはエントリー保存前の状態でも可能ですが、「Preview on Blog」の場合は実行前に必ず「保存」をクリックしてください。
プレビュー用のリンク「Preview on Blog」をクリックするとウィンドウが開きます。そのウィンドウにプレビュー用ページの再構築状態とプレビューページのリンク(例はメインページのみ)が表示されます。リンクをクリックすると新しい画面が開いてそこにプレビュー画面が表示されます。 ここで表示されるウィンドウを消さずにそのままにしておけば、修正・プレビューを繰り返す毎に同じウィンドウに表示されます(タブブラウザでは新しいウィンドウが開くようです)。

8.ボタンを日本語化する
「Preview on Blog」を「プレビュー」等の日本語に変更したい場合は、lib/MT/L10N/ja.pm の任意の行に下記を追加します。

'Preview on Blog' => 'プレビュー',

9.他のアーカイブページをプレビューする場合
アーカイブページ(カテゴリーアーカイブ/日付アーカイブ/個別エントリーアーカイブ)のプレビューも行いたい場合は各アーカイブテンプレートを3項と同じ手順で作ります。アーカイブテンプレートではなくインデックステンプレートとして作りますのでご注意ください。
出力ファイル名はそれぞれ異なる名称にしてください。そしてそれぞれの「ファイルの中身」を下記のタグでテンプレート全体を括ってください。

カテゴリーアーカイブ

<MTPretendCategoryTemplate> ? </MTPretendCategoryTemplate> 

月別アーカイブ(日付アーカイブをコピー)

<MTPretendDateTemplate archive_type="Monthly"> ? </MTPretendDateTemplate>

週別アーカイブ(日付アーカイブをコピー)

<MTPretendDateTemplate archive_type="Weekly"> ? </MTPretendDateTemplate>

日別アーカイブ(日付アーカイブをコピー)

<MTPretendDateTemplate archive_type="Daily"> ? </MTPretendDateTemplate>

個別エントリーアーカイブ

<MTPretendIndividualTemplate> ? </MTPretendIndividualTemplate>

上記はデフォルトのアーカイブ設定状態を想定しています。例えば週別アーカイブテンプレートや・日別アーカイブテンプレートを月別アーカイブテンプレートと別に新しく作っている場合はそちらからコピーしてください。
設定後、5項の作業を行い、新しく作ったインデックステンプレートをプレビュー用としての関連付けを行います。

以上です。

2005.08.19 追記
8項にボタンの日本語化の項目を追加しました。

Comments [21] | Trackbacks [10]
2005年7月 8日

管理画面のコメント・トラックバック表示数を変更する

Movable Type のデフォルト管理画面でのコメント・トラックバック表示数は 5・25・75・125 と間隔が広く、丁度いい具合の件数を表示させることができません。
ということで表示数を選択するプルダウンメニューに他の表示数を追加(または変更)するカスタマイズです。

変更するファイルはそれぞれ下記の通りです。

コメント用:tmpl/cms/list_comment.tmpl トラックバック用:tmpl/cms/list_ping.tmpl

例えばプルダウンメニューに10件を表示するメニューを追加する場合は、下記の青色部分を追加します。

<option value="5"<TMPL_IF NAME=LIMIT_5> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,comment,comments]" params="5"></option>
<option value="10"<TMPL_IF NAME=LIMIT_10> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,comment,comments]" params="10"></option>
<option value="20"<TMPL_IF NAME=LIMIT_20> selected="selected"</TMPL_IF>><MT_TRANS phrase="[quant,_1,comment,comments]" params="20"></option>

追加した行の数字(10)を全て一致させるのがポイントです。追加方法はコメント・トラックバックいずれも同じです。サンプルでは1行のみ追加していますが複数行設定することも可能です。

Comments [2] | Trackbacks [1]
2005年6月29日

Movable Type の編集画面を横にひろげる

テンプレート編集画面のテキストエリアおよび、エントリーのテキストエリアの横幅をひろげるカスタマイズです。画像はテンプレート編集画面の変更前と変更後です。

幅をひろげる前
幅をひろげた後

変更方法は、styles.css (インストール時、mt.cgi と同じディレクトリにあります)の下記の部分を検索して赤色から青色の値にそれぞれ変更してください。例は 150px ひろげる場合です。

.body-wrap {
    width: 750px900px;
    }
    :
#edit-template textarea.wide {
    width: 618px768px;
    }
    :
#edit-entry textarea.full-width {
    width: 577px727px;
    }

.body-wrap はエントリー・テンプレートいずれにも適用される最大幅です。#edit-template textarea.wide はテンプレートのテキストエリア用の幅を設定します。.body-wrap で増加した分を超えるとカラムが折り返してしまうのでご注意ください。#edit-entry textarea.full-width はエントリーのテキストエリア用の幅を設定します。

縦幅をひろげる場合はMovable Type の編集画面をひろげるをご覧ください。

Comments [2] | Trackbacks [4]
2005年6月21日

Movable Type のディレクトリ

カスタマイズする際の外部ファイル(JavaScript等)のアップロードで配置するディレクトリに戸惑う方が少なくありません。「どこにアップロードすればよいのでしょうか」という質問も時々頂きます。
その問題が解消されるかどうか定かではありませんが、改めてディレクトリについてまとめてみました。文中でパスディレクトリの表現が混在していますがあまり気にしないでください。厳密にはファイル名を含むのが「パス」のようですが、Movable Type の画面ではディレクトリを「パス」と表現しているようです。

CGIPath
適切な名称がありませんので mt.cfg の名称を使います(記事の中でも好んで用いています)。端的に言うと、各CGIスクリプトを配置するディレクトリです。レンタルサーバでは cgi-bin というディレクトリ名が付与されています。
このディレクトリには cgi ファイル(mt.cgi/mt-comment.cgi/mt-tb.cgi 等)と、CGIスクリプトを実行するために必要なライブラリのディレクトリ(下記)が配置されます。

extlib/
lib/
php/
plugins/
schemas/
search_templates/
tmpl/
tools/

ブラウザから閲覧できるファイルはここには存在しません。JavaScript 等の外部ファイルをここに配置することはありません。また CGIPath は Typekeyの登録URLとしても使われます。index.html があるURLを Typekey登録画面で登録されても Typekey は正常に動作しませんのでご注意ください。
このディレクトリはMT変数タグで

<$MTCGIPath$>

と表現されます。

ローカル・サイト・パス
index.html が配置されるディレクトリです。「ローカル・サイト・パス」は管理画面の基本設定の項目名で使われているので、当サイトではこの名称を好んで使っています。各インデックス・テンプレートを再構築した際に生成されるファイル(index.html/styles-site.css 等)がこのディレクトリに配置されます。カスタマイズ等で外部ファイルをアップロードする際には必ずこのディレクトリにアップロードしてください(プラグインファイルは除外)。
このディレクトリはMT変数タグで

<$MTBlogSitePath$>

と表現されます。これをURLにしたものが

<$MTBlogURL$>

です。

レンタルサーバではCGIスクリプトを特定のディレクトリでしか実行できないように制限していますが、そのような環境設定でない場合、例えば自宅サーバ等ではこのディレクトリにCGIスクリプトを配置して動作させることも可能です。とういか私は当初そのような使い方をしていたため、レンタルサーバご利用者の方に随分わかりにくい説明をしていました。

アーカイブ・パス
管理画面で「ローカル・アーカイブ・パス」と書かれているディレクトリです。再構築されたアーカイブ・テンプレート(カテゴリー・アーカイブ/日付アーカイブ/個別エントリーアーカイブ等)がここに生成されます。デフォルト設定では、ローカル・サイト・パスに archives というディレクトリを作るように仕組まれています。
このディレクトリのURLはMT変数タグで

<$MTBlogArchiveURL$>

と表現されます。

StaticWebPath
これもいい名称がありませんので mt.cfg の名称を使います。これは管理画面の表示に使われる

styles.css
mt.js
images/
docs/

を配置するためのディレクトリです。mt.cfg で設定する際はドキュメントルートからの指定になります(かつ前後を "/" で括る)のでご注意ください。
このディレクトリが必要な理由ですが、そもそも CGIPath は Apache の ScriptAlias で設定されたディレクトリで、このディレクトリに配置されたファイルは常にCGIスクリプトとして認識されるため、他のファイルやディレクトリを配置しても正常に振舞うことができないためです。ローカル・サイト・パスに配置しても構わないのですが、本来の使用目的から考えると専用のディレクトリに置いた方が好ましいでしょう。
このディレクトリはMT変数タグで

<$MTStaticWebPath$>

と表現されます。

Comments [2] | Trackbacks [0]
2005年6月 8日

Movable Type のバックアップ方法

June 8,2005 11:58 PM
Tag:[, , ]
Permalink

基本的な話題ですが、これまで記事にとりあげていなかったので書きます。ご近所さんで下記のサイトを参考にさせて頂きました。ありがとうございました。

.Daily-note.o●Blogお引越しメモ

注:この記事は Movable Type 3.x の内容です。Movable Type 4.x をご利用の場合は「Movable Type 4 のバックアップ機能」を参照してください。

Movable Type にはデフォルトで用意されているバックアップ機能があります。バックアップ対象は、

  • エントリー(投稿者・投稿の状態・投稿時間・カテゴリー等含む)
  • コメント(投稿者・投稿日・メールアドレス・URL)
  • トラックバック(ブログサイト名・タイトル・送信日時・IPアドレス・概要)

です。
バックアップデータの保存は後述するとおり、手動で行う必要があります。バックアップを周期的に保存することで、運用中のブログが正常に動作しなくなった場合やサーバ移転しの時等に以前の履歴を復旧させることができます。
以下、Windowsでのバックアップ方法を記します。

1.バックアップデータ取得(書き出し)
管理メニューの左メニューにある「読み込み/書き出し」をクリックし、次のページで一番下にある「?からエントリーを書き出す」をクリックします。これでブラウザにバックアップデータが表示されます。ただしWindows・IEでは、バックアップするサイズによっては書き出しにかなりの時間がかかります。また下記のバグがあります。

Internet Explorerではすべてのバージョンに、プレーン・テキストとしてマークされたデータがHTMLとして解釈されるバグがあります。このバグがあると、書き出したデータはすべて1つの行につながってしまいます(「Movable Typeユーザー・マニュアル: エントリーの読み込み」より引用)。

このため、Windows では Mozilla 系のブラウザで書き出すことをお勧めします。

表示が完了したら、ブラウザの「ファイル」→「名前をつけて保存」で任意のファイル名(import.txt 等)で保存します。または「編集」→「すべて選択」で選択状態で「編集」→「コピー」し、任意のエディタを開いてペーストします。文字コードはブログの文字コードで保存します。

2.バックアップデータによる復旧(読み込み)
新しく作った Movable Type のブログに先ほどのバックアップデータを読み込ませます。

2.1 ディレクトリ作成
CGIPath(mt.cgi がインストール直後に置かれたディレクトリ)に import ディレクトリを作成します。なお、import パスおよびディレクトリ名は mt.cfg の下記の設定で変更が可能です。

# The filesystem path to the 'import' directory, which is used when importing
# entries and comments into the system--'import' is the directory where the
# files to be imported are placed. This setting defaults to './import', which
# means that the 'import' directory is in the same directory as the 'mt.cgi'
# file; you probably don't need to change this setting.
#
# ImportPath ./import

2.2 バックアップデータアップロード
先ほど作った import ディレクトリ配下に、1項で作ったバックアップデータをアップロードします。

2.3 ブログへバックアップデータ読み込み
管理メニューの左メニューにある「読み込み/書き出し」をクリックし、「エントリーの読み込」欄の「エントリーの投稿者を自分にする」にチェックをします。 他にごちゃごちゃある項目の設定はとりあえず不要です。設定が完了したら「エントリーの読み込み」をクリックします。
バックアップが開始すると、ブラウザに読み込み状況が下記のように表示されます。

Importing entries into blog 'hogehoge'
Importing entries as author 'Melody'
 
Importing entries from file 'import.txt'
Creating new category ('日記')...ok
Saving entry ('1日の出来事')... ok (ID 1)
Saving entry ('2日の出来事')... ok (ID 2)
Creating new comment ('taro')... ok (ID 1)
Creating new ping ('トラックバック')... ok (ID 1)
          :

サンプルでは上から順に、ブログ名、投稿者名、インポートファイル、カテゴリー作成、エントリー1読み込み、エントリー2読み込み、コメント読み込み、トラックバック読み込み...となります。なおDBがBerkeleyDBの場合、読み込みにかなり時間がかかります。

読み込みが完了すると、

          :
All data imported successfully! Make sure that you remove
the files that you imported from the 'import' folder, so that
if/when you run the import process again, those files will not
be re-imported.

というメッセージが表示されます。これで正常に読み込まれました。ブラウザはこの状態からこれ以上遷移しませんので、ブラウザのページをひとつ戻る等して管理メニューに戻ります。またこの状態ではDBに書き込まれただけですので、バックアップデータをページに反映させるには再構築します。

2.4 バックアップファイルの削除
import ディレクトリからバックアップファイルを削除します(再実行しないため)。ちなみに重複してバックアップを実行すると同じデータが2つずつ生成されます(前回のデータへは上書きしない模様)。

3.注意事項
読み込み時、上記のような表示になっていない場合、正常に読み込まれていない可能性があります。原因はアップロード時の転送モードがあります。また最後に「All data imported successfully! ...」が表示されてもエントリーやコメントの読み込みで "... ok" が表示されない場合もあります。

さらに、記事やコメントにバックアップデータと同じ形式のデータ、例えば

--------
AUTHOR: Melody
TITLE: 1日の日記
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: __default__
ALLOW PINGS: 1
PRIMARY CATEGORY: 日記
 
DATE: 06/08/2005 12:33:43 AM

という記述があると、読み込み時にエラーになります。このようなケースは稀と思いますが、以前「バックアップがうまくできない」という方からのコメントでバックアップデータがコメント欄に書かれておりまして、正常に読み込めないという事象がありました。

またサブカテゴリーの構成は思い切り崩れます(全てのカテゴリーがトップレベルになります)ので、前の設定をメモしておきましょう。

4.その他
エントリー・コメント・トラックバック以外のデータはバックアップの対象になりません。例えばエントリーで使用した画像は個別に転送してください。またテンプレートやJavaScript外部ファイル、プラグインファイルも別に用意する必要があります。

以上です。

Comments [34] | Trackbacks [7]
2005年2月18日

ファイルのアップロードで上書きを有効にする

February 18,2005 11:59 PM
Tag:[]
Permalink

Movable Type ではFTPツールを利用せずに、管理メニューの「ファイルのアップロード」からファイルをアップロードすることができです。ただしデフォルト状態で /tmp が存在しない環境ではファイルの上書きができない(アップロード画面でエラーとなります)ため、やや不便に感じます。
上書き可能にするためには /tmp ディレクトリを作成するか、あるいは mt.cfg の TempDir を有効にし、アップロードしたファイルを一時保存するためのディレクトリを設定します。後者の場合の設定方法は下記の通りです。

変更前

# When processing uploaded files, if Movable Type notices that the file you
# uploaded already exists, it will allow you to overwrite the original file,
# by first asking for your confirmation. To do this, MT needs to write the
# uploaded data to a temporary file. That temporary file is stored in the
# directory specified by the TempDir setting; the value defaults to /tmp.
#
# TempDir /tmp/
#

変更後

# When processing uploaded files, if Movable Type notices that the file you
# uploaded already exists, it will allow you to overwrite the original file,
# by first asking for your confirmation. To do this, MT needs to write the
# uploaded data to a temporary file. That temporary file is stored in the
# directory specified by the TempDir setting; the value defaults to /tmp.
#
TempDir /~/tmp/
#

"~"の部分にはファイルを一時保存するtmp ディレクトリまでの絶対パスを記述します(試していませんが相対パスも有効かもしれません)。また配置するための tmp ディレクトリも予め作成しておきます。例えばローカル・サイト・パス配下に tmp というディレクトリを作成し、そこを参照するようにするのが良いのではないでしょうか。

なお上書きされる場合は「上書きしますか」という確認画面が表示されるので、そこで「いいえ」を選択すれば誤って上書きされることはありません。

2005.02.19 追記
Linux や UNIX のレンタルサーバの場合、システムデフォルトで /tmp が存在するので、本設定は不要と思われます。

Comments [4] | Trackbacks [0]
2005年2月16日

テンプレートの保存・再構築を同時に行うボタンを追加

February 16,2005 11:50 AM
Tag:[]
Permalink
保存&再構築ボタンの追加デフォルトの管理画面で修正したテンプレートを表示に反映させるには、一旦保存した後「再構築」ボタンをクリックしなければならないのですが、このボタンを追加することでテンプレートの保存・再構築を同時に行えるようになります。*1
これで再構築した結果が素早く確認できるようになります。精神衛生的にも良いでしょう。

参考サイトは下記です。ありがとうございました。

Magic WhiteMTでSaveとRebuildを同時に行うボタンを追加 MovalogSave & Rebuild(オリジナル)

ここでは上記のカスタマイズ内容からの差分のみを掲載しておきます。差分は「保存&再構築」ボタンを画像のように一番左へ配置したことと、フォームボタンおよびメッセージの日本語表示です。下記に示す該当のファイルに赤字部分を削除し、青字部分をそれぞれ追加してください。
なお対象となるテンプレートは「インデックス・テンプレート(メインページ・スタイルシート等)」です。

lib/MT/App/CMS.pm

764行目付近

       :
    $param{rebuild_me} = defined $obj->rebuild_me ?
        $obj->rebuild_me : 1;
    $param{sr} = 1 if($q->param('sr')) ;
} elsif ($type eq 'blog') {
       :

1177行目付近

sub save_object {
    my $sr = 0;
    my $app = shift;
    my $q = $app->{query};
    my $type = $q->param('_type');
    my $id = $q->param('id');
       :

1340行目付近

       :
    $obj->text($text);
    ## Save and Rebuild
    if($q->param('sr')){
        $sr = 1;
        $app->rebuild_indexes( BlogID => $obj->blog_id, Template => $obj, Force => 1 )
        or return;
    } 
} elsif ($type eq 'blog') {
    if ($q->param('cfg_screen')) {
       :

1550行目付近

       :
    } else {
        return $app->redirect($app->uri .
            '?__mode=view&_type=' . $type . '&id=' . $obj->id .
            '&blog_id=' . $blog_id . '&saved=1');
        if($sr == 1){
            return $app->redirect($app->uri .
                '?__mode=view&_type=' . $type . '&id=' . $obj->id .
                '&blog_id=' . $blog_id . '&sr=1');
            $sr = 0;
        } else {
            return $app->redirect($app->uri .
                '?__mode=view&_type=' . $type . '&id=' . $obj->id .
                '&blog_id=' . $blog_id . '&saved=1');
        }
    }
}
 
sub list_objects {
       :

tmpl/cms/edit_template.tmpl

45行目付近

<TMPL_IF NAME=SR>
<div class="message">
<MT_TRANS phrase="Your template changes have been saved and your template has been rebuilt.">
</div>
</TMPL_IF>
<form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>">
<input type="hidden" name="id" value="<TMPL_VAR NAME=ID>" />
<input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>" />
<input type="hidden" name="type" value="<TMPL_VAR NAME=TYPE>" />
<input type="hidden" name="__mode" value="save" />
<input type="hidden" name="_type" value="template" />

tmpl/cms/edit_template.tmpl(フォームボタンの配置場所変更)

130行目付近

<TMPL_UNLESS NAME=NEW_OBJECT>
<TMPL_UNLESS NAME=BUILD_DYNAMIC>
<TMPL_IF NAME=HAS_REBUILD>
<input type="submit" name="sr" value="<MT_TRANS phrase="Save & Rebuild">" />
</TMPL_IF>
</TMPL_UNLESS>
</TMPL_UNLESS>
<input type="submit" value="<MT_TRANS phrase="Save">" />
<TMPL_UNLESS NAME=NEW_OBJECT>
<TMPL_UNLESS NAME=BUILD_DYNAMIC>
<TMPL_IF NAME=HAS_REBUILD>
<input type="button" onclick="doRebuildOne(<TMPL_VAR NAME=ID>)" value="<MT_TRANS phrase="Rebuild">" />
</TMPL_IF>
</TMPL_UNLESS>
</TMPL_UNLESS>

lib/MT/L10N/ja.pm(フォームボタン・メッセージの日本語化)

523行目付近


'Your template changes have been saved.' => '変更したテンプレートを保存しました。',
'Your template changes have been saved and your template has been rebuilt.' => '変更したテンプレートを保存・再構築しました。',

541行目付近

'Rebuild' => '再構築',
'Save & Rebuild' => '保存&再構築',

*1:スタイルシートについては再構築不要なカスタマイズが公開されています(下記)が、本カスタマイズで同様の効果が得られます。

Magic Whiteスタイルシートの変更簡単に
ARTIFACT ―人工事実―MTでのスタイルシート変更を楽に
the girlie matterslink that stylesheet(オリジナル)

2005.02.17 追記
インデックステンプレート以外のテンプレート編集画面で「保存&再構築」ボタンが表示される不具合を修正、および typo修正(いずれも tmpl/cms/edit_template.tmpl)。

2005.08.11 追記
元記事のカスタマイズ内容を追加しました。本記事のみで全てのカスタマイズを行うことができます。

Comments [26] | Trackbacks [12]
2004年12月11日

ShrinkFinfo Plugin 0.04公開

December 11,2004 12:10 PM
Tag:[]
Permalink
ShrinkFinfo Plugin 0.04

ShrinkFInfo Plugin で fileinfo.db サイズを表示するでサイズ表示を付与しましたが Ogawa::Memoranda さんよりファイルサイズ表示を盛り込んだ ShrinkFInfo Plugin 0.04 が公開されました。ファイルサイズ表示以外に、ウェルカム画面にもファイル縮小を促す表示(イメージ下)機能が追加されています。また表示する閾(しきい)値となるファイルサイズも適宜変更できるようになっています。デフォルトは1MBに設定されています。

ということで 0.04 へバージョンアップしました。

Comments [8] | Trackbacks [2]
2004年10月 6日

アーカイブの設定について

October 6,2004 12:55 PM
Tag:[]
Permalink

注:本エントリーは 3.1x までの情報です。
管理メニューにある「アーカイブの設定」の意味がよく分かってないので調べてみました(だから分かったという訳でもありませんが…)。
以下、既知の分も含めてメニュー項目別に調査結果を記してみました。

新しく、テンプレートとアーカイブを関連付ける。
テンプレートを新しく作成する時、テンプレートはアーカイブと関連付ける必要があります。
テンプレートにアーカイブの種類を与えることでその中で使用するMovable Typeタグの意味が決まります。例えば<$MTArchiveTitle$>というタグを使っている場合、「カテゴリー」に属していればカテゴリー名、「個別」に属していればエントリーのタイトルに変換されます。つまり、Movable Typeで使用するタグ(のほとんど)の意味はアーカイブの種類に依存するということです。
このフォームで新たに作成した関連付けは次の「アーカイブ」欄に反映されます。例えばカレンダー用テンプレート「Calendar」を新たに作った場合、それを月別アーカイブとして関連付ける場合にこのフォームを使用します。その結果「アーカイブ」の月別欄の「テンプレート」部分に「Calendar」が追加されます。

アーカイブ
おおざっぱに言うとここでアーカイブ(=HTMLページ)生成方法を設定します。

アーカイブの種類
アーカイブの種類(そのままか…)を表示しており、チェックボックスで使用する・しないを設定します。チェックされているアーカイブは再構築の対象になります。他のアーカイブページからリンクされていてチェックされていないと 404 File Not Found エラーになります。

個別エントリー別のページを作成します。コメント入力フォームはこのアーカイブに属します(と思います)。
日別日別のページを作成します。カレンダーからのリンクで使う時に便利です。
週別ある週に属するエントリーを一括表示するページを作成します。(作ったことありません…)
月別ある月に属するエントリーを一括表示するページを作成します。
カテゴリーあるカテゴリーに属するエントリーを一括表示するページを作成します。

テンプレート
アーカイブを生成(再構築)する際に用いられるテンプレートを表示しています。

アーカイブ・ファイルのテンプレート
意味がわかりにくいのですが、「アーカイブファイル名(のため)のテンプレート」です。Movable Typeタグを利用して、テキストエリアに設定する(=テンプレートとなる)ことでアーカイブファイルに任意のディレクトリやファイル名を与えることができます。
現状の私の設定は下記のようになっています。

個別
<$MTArchiveDate format="%Y/%m/%d-%H%M%S"$>.php
 
日別
<$MTArchiveDate format="%Y/%m/%d"$>-index.php
 
月別
<$MTArchiveDate format="%Y/%m/"$>index.php
 
カテゴリー
cat_<$MTCategoryID$>.php

優先
前述の通り、一つのアーカイブは複数のテンプレートを持つことができます。その場合、それぞれのテンプレートを使ったアーカイブファイルが生成されますが、例えばそのアーカイブへリンクを生成する場合、リンク先を一つに決めなければいけないため、この「優先」を用いてどのテンプレートを使用したアーカイブファイルへリンクを生成するかを決定します。

以上です。なおアーカイブに複数のテンプレートを与えて優先動作の確認をしてみたのですが、思ったような振る舞いが行われませんでした。設定方法自体良くなかったのかどうかは?です。

Comments [9] | Trackbacks [2]
2004年9月16日

Movable Type の編集画面をひろげる

September 16,2004 1:03 AM
Tag:[]
Permalink

ディスプレイの解像度やブラウザ、フォントの設定等に依存する話かも知れませんが、以前よりテンプレート編集画面のテキストエリアが狭く感じてまして(IE使ってます)、ふと思い出して広げてみました。ついでにエントリー投稿画面の方もひろげました。
3.0Dから3.01D-jaに移行した時、特にテンプレート編集画面のテキストエリアは狭く感じました。実は3.0Dのテキストエリアは3.01D-jaのそれより横に広かったんです。といっても文字コードの関係で広く見えただけで1行の表示文字数は同じなんですが、精神衛生上はそちらの方が良かった感じがします。
以下、手順メモです。

まずテンプレート編集画面ですが、テキストエリアサイズ変更で編集するファイルは mt.cgi を配置したディレクトリから辿って、

/tmpl/cms/edit_template.tmpl

です。変更行は86行目128行目のrows属性およびcols属性(赤字部分)です。

<p>・・・<textarea name="text" id="text" rows="20" cols="72">・・・</p>

とりあえず縦40・横120に広げました。横はその値を超えると表示が崩れるみたいです。折り返しが減り、表示される情報量も増えたのでかなりスッキリしました。

次にエントリー投稿画面です。編集するファイルは

/tmpl/cms/edit_entry.tmpl

です。変更行は182行目200行目のrows属性(赤字部分)です。

<textarea class="full-width" ・・・ rows="<TMPL_IF NAME=DISP_PREFS_SHOW_EXTENDED>10<TMPL_ELSE>20</TMPL_IF>"> ・・・

追記(extend)をひろげる場合は同ファイルの231行目のrows属性(赤字部分)を変更します。

<textarea class="full-width" name="text_more" id="text_more" tabindex="4" rows="15"><TMPL_VAR NAME=TEXT_MORE ESCAPE=HTML></textarea>

ちなみに横幅はmt.cgiと同じディレクトリにある管理画面用スタイルシート styles.css の

#edit-entry textarea.full-width {
    width: 577px;
}

で制御されているようです。エントリー編集画面の横幅は特に不便に感じていないのと、スタイルシート修正による影響範囲が不明なので変更していません。横幅を変更する場合は、「Movable Type の編集画面を横にひろげる」を参照ください。

2005.05.04 追記
追記部分の変更方法を追加しました。また3.1x用に行番号を修正しました。

2005.08.11 追記
横幅を広げる記事へのリンクを追加しました。また本文を一部修正しました。

Comments [8] | Trackbacks [6]
Now loading...
Introduction
List of "管理画面"
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