かたつむりくんのWWW

Movable Type のシステムログをpre要素で出力する(デバッグに便利)

Movable Type のプラグインを作っているとき、変数の内容などをシステムログに書き出して確認することが多々あります。

システムログに書き出すには、プラグインのファイル(.pmなど)に以下のコードを書きます。実際はログに書き出すコードをサブルーチンにまとめておいて利用します(それについては省略します)。

require MT::Log;
my $msg01 = 'システムログに書き出します。';
my $log = MT::Log->new;
$log->message($msg01);
$log->save;

こうすると、[システムメニュー > ツール > ログ] に書き出されます。

syslog2pre01.png

続きを読む

「MTDDC Meetup Tokyo 2011」でお話しさせて頂きます!

2011年6月25日(土)に、毎日コミュニケーションズ主催の「MTDDC Meetup Tokyo 2011」が開催されます。

mtddc2.gif

今回の MTDDC は、MT5.1 のリリースと、先日ご紹介した書籍『Movable Type 5.1 プロの現場の仕事術』の発売を記念したイベントとなります。

このイベントで、なんと僕もお話させて頂くことになりました!なんだかもう、他のメンバーが豪華なので恐縮です。

続きを読む

WordPressの自動アップグレードがうまくいかなかったときの対処法

このブログとは別に、個人の日記を WordPress で書いてるんですけど、さくらのVPS に移転してから初めてその WordPress の自動アップグレードをやろうとしたらうまくいきませんでした。

エラーメッセージは、

エラー: サーバー接続中にエラーが発生しました。設定を確認してください。

とのこと。

たぶんパーミッションがらみのお話かなということで、WordPress をインストールしているディレクトリの所有権を apache に変更したらうまくいきました。

sudo chown -R apache:apache wp/

やっぱり、自動アップグレードは楽でいいや。

MTAppjQuery 0.15.1 リリース - IEのバグを1つつぶしました

このバージョンは、MT5.1 向けのリリースではありません。MT5.1 向けは現在作成中です。

MTAppjQuery 0.15.1 では、$.MTAppMultiCheckbox() をタグフィールドで利用した際に、保存した値がチェック状態にならないバグをつぶしました(今度こそ大丈夫かと)。

MTAppjQuery 0.15 をお使いの方は、MTAppjQuery.js だけ置換すればOKです。

『Movable Type 5.1 プロの現場の仕事術』の執筆に参加します!

5月中旬の正式出荷を目指して、鋭意開発が進められている Movable Type 5.1 に対応した書籍『Movable Type 5.1 プロの現場の仕事術』が6月25日に先行発売される予定です。

この書籍は、タイトルの通り、Web制作の現場を強く意識した本です。執筆に参加される方々もそうそうたる顔ぶれですが、なんと僕も執筆に参加させて頂くこととなりました!

本書の内容は以下のようになっています。僕は、このブログで公開している「MTAppjQueryプラグイン」を利用した管理画面のカスタマイズについて書かせて頂きます。

続きを読む

Custom Field GUI Utility 3.1 リリース

WordPress のカスタムフィールドを使いやすくするプラグイン「Custom Field GUI Utility 3.1」をリリースしました。

主な変更点は以下の通りです。

  • 「投稿」「ページ」「カスタム投稿タイプ」ごとに表示制御が可能となりました。
  • 「投稿」においては、カテゴリーごとに表示制御が可能となりました。
  • 画像やファイルを扱う「 imagefield 」「 filefield 」の仕様を大きく変更しました。

詳細は以下のページをご確認ください。

なお、今後は一部有料化を検討しています。たぶん 3,000円くらいですが、「有料化すると会社の手続き的に使いにくくなるな−」という声もあるので、それも含めて検討したいと思います。

コメントスパム対策を行いました

最近、というか少し前からですが、このブログに対するコメントスパムが多くて参っていました。

そこで、今日、コメントスパム対策を施してみました。

しばらく経って、効果があったら記事にしてみようと思います。

ブログ記事本文中の最初のimgのURLを取得する

Movable Type のブログ記事の本文中で、最初に出てくる画像の URL(つまり img タグの src 属性)を、regex_replace モディファイアを使って取得する方法です。

regex_replace モディファイアは、MT タグが出力する結果に対して、実際に出力する前に正規表現での置換を行うことができるモディファイアです。どの MT タグにも利用できるグローバルモディファイアですね。

このモディファイアを利用して次のように書けばOKです。

続きを読む

東北地方太平洋沖地震災害義援金 - みんなができることをコツコツと。

はじめに、3月11日(金) に発生しました東北地方太平洋沖地震により被災された皆さまに、心よりお見舞い申し上げます。

東京にいる僕にできることは何かないか、まずは募金しました。節電もします。

ひとりひとりが、自分に何ができるかを考え、それを行動に移すことが大切だと思います。僕にできることで被災地の皆様にとってベストなことは募金だと思います。

Power CMS for MT で有名なアルファサードさんもすばらしい活動をされています。

みんなができることをコツコツと。

一人でも多くの方の安全が確認されますように、一日でも早く、被災地が、日本が復興しますように、被災地の方の心の傷が少しでも癒えますように、心からお祈りいたします。

複数ファイルを高速でアップロードできる Movable Type プラグイン「Multi Uploader」を使ってみた

alfasado さんの GitHubで公開されている「Multi Uploader」というプラグインを試してみました。

この「Multi Uploader」プラグインは、「jQuery File Upload」という jQuery プラグインを Movable Type のアイテムのアップロード機能に適用させたプラグインのようです。

この記事を書くときにさっそく使わせていただきましたが、これは必須のプラグインになると思いました!

使い方を簡単にご紹介します。

続きを読む

Git コマンドのヘルプをテキストファイルに出力する方法

Git において、コマンドの使い方などは git help で見ることができます。例えば「branch」コマンドについて知りたいときは、

git help branch

とすればOKです。これでターミナルにヘルプが表示されます(qで終了)。

そして、このヘルプをテキストファイルで出力することもできます。branch.txt というファイルで出力したいときは、

git help branch > branch.txt

とすればOKです。

しかし、このままだと、ターミナルでヘルプを表示したときにアンダーラインが引いてあるものや太字の大文字になっているものなどは、その装飾の情報も含まれて表示されてしまうため、おかしな状態になってしまいます。

SSYYNNOOPPSSIISS
       _g_i_t _b_r_a_n_c_h [--color[=<when>] | --no-color] [-r | -a]
               [-v [--abbrev=<length> | --no-abbrev]]
               [(--merged | --no-merged | --contains) [<commit>]]
       _g_i_t _b_r_a_n_c_h [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
       _g_i_t _b_r_a_n_c_h (-m | -M) [<oldbranch>] <newbranch>
       _g_i_t _b_r_a_n_c_h (-d | -D) [-r] <branchname>...
(抜粋)

そこで、colcrt や col という UNIX のコマンドを合わせて使えば良いみたいです。

git help branch | colcrt | col > branch.txt

以下のように、先ほどおかしなことになっていた装飾部分は、アンダーラインが引かれたきれいなテキストになって出力されます。

SYNOPSIS
       git branch [--color[=<when>] | --no-color] [-r | -a]
       --- ------
	       [-v [--abbrev=<length> | --no-abbrev]]
	       [(--merged | --no-merged | --contains) [<commit>]]
       git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
       --- ------
       git branch (-m | -M) [<oldbranch>] <newbranch>
       --- ------
       git branch (-d | -D) [-r] <branchname>...
       --- ------
(抜粋)

ちなみに「|」は、左のコマンド結果を右のコマンド結果に渡すという意味です。

以上、自分用メモでした(col はなくてもいいかも)。

参考
UNIXの部屋 コマンド検索:col (*BSD/Linux)

MT 5.1 Beta 1 のカテゴリ一覧の「編集」ってちょっと違和感があるからカスタマイズ

Movable Type 5.1 Beta 1 のカテゴリ一覧の「編集」ってちょっと違和感がありますよね。

list_category_edit-1.png

こちらの記事(MT5.1ベータ ちょっと触ってみたよ - Hello World)でも書かれていますが、確かに編集っていうと編集画面に飛んで欲しいイメージです。名前を変更するだけだったら、そのまんま「名前を編集」でいい気がします。

ということで、「編集」を「名前を編集」にするカスタマイズです。

続きを読む

Movable Type 5.1 Beta 1 の「タイトル」と「本文」も並べ替えられるようにするカスタマイズ

mt5.1_title_sortable.png

待ちに待った Movable Type 5.1 Beta 1 が出ましたね。毎回、バージョンアップしたものを触るのは軽く興奮します。

Movable Type 5.1 Beta 1 リリース直後に、著名な方々から MT 5.1 に関するレポートが上がっています。その早さや内容には頭が下がります。

さて、僕は少し視点を変えて、一歩踏み込んだ記事を書こうと思います。

MT 5.1 のブログ記事やウェブページの編集画面では、タグ・概要・キーワード・カスタムフィールドをドラッグ&ドロップで並べ替えられるようになりました。少し地味かもしれませんが、意外と重宝される機能だと思います。

しかし、残念なことに、「タイトル」や「本文」については、並べ替えの対象になっていません。

今回は、この二つのフィールドについてもドラッグ&ドロップで並べ替えられるようにするカスタマイズを紹介します。MT 5.1 の管理画面のカスタマイズ記事第一弾です!

続きを読む

Movable Type 5.1 Beta 1 にバージョンアップ

2月15日、予告通り Movable Type 5.1 Beta 1 がリリースされました。

リリース直後に、ローカル環境にインストールしてみましたが、oscarさんもいつものごとく早速切り替えていることだし、今回はこのブログも Beta 1 の段階から MT 5.1 Beta 1 にバージョンアップしてみました。

やっぱり本番環境で検証するのが一番かなとw

カテゴリIDから、カテゴリラベルとベースネームを出力するMovable Typeプラグイン - Category Util

カテゴリIDから、カテゴリラベルとベースネームを出力する「Category Util」というMovable Typeプラグインを作りました。日頃お世話になっている方から需要があったので。

プラグインをインストールすると、以下のファンクションタグが使えるようになります。特にコンテキストには依存しないので、どのテンプレートでも使えると思います。

<$mt:CategoryUtilLabel id="n"$>
<$mt:CategoryUtilBasename id="n"$>

id モディファイアに取り出したいカテゴリのIDを指定してください。IDは一つしか指定できません。パフォーマンス的にはあまり良くないプラグインですが、場合によっては便利かもしれませんね。

MTAppjQuery 0.15 リリース - バグフィックス

MTAppjQuery - Movable Type 5 の管理画面をjQueryでカスタマイズしやすくするプラグイン」の MTAppjQuery.js 内にバグが見つかりました。

$.MTAppMultiCheckbox() をブログ記事編集画面のタグ欄に適用させた場合、保存したタグが正しく反映されませんでした。

これは MT の仕様上、タグが「, 」(カンマ + 半角スペース)という状態で表示されるのに対し、当プラグインでは単純にカンマで区切ってしまっていたため、余分な半角スペースが残ってしまうためででした。

このバグと、先日の「MTAppjQuery 0.14 のバグフィックス用の差分ファイル」の記事にあるバグもつぶしてありますので、今後お使いになる方は最新版をお使いいただくか、バージョン 0.14 をお使いの方は、MTAppjQuery.js を差し替えてください。

いずれも以下のページからダウンロードしてください。

なお、このバグは、おそらく過去のすべてのバージョンに同様に発生します。過去のバージョンをお使いの方は、MTAppjQuery.js を以下のように修正してください。

193行目付近
checked = value.split(',');
この部分を次のように差し替える
checked = value.split(',').map(function(s) {
    return $.trim(s);
});
221行目付近
checks = title.split(',');
この部分を次のように差し替える
checks = title.split(',').map(function(s) {
    return $.trim(s);
});

お手数をおかけして申し訳ございませんが、よろしくお願いいたします。また、ご指摘いただいた@havanaclub_さん、ありがとうございました!

No hyphen v0.02 リリース - Movable Type のブログ記事のファイル名がハイフンで始まるのを防ぐプラグイン

先日公開した「Movable Type のブログ記事のファイル名がハイフンで始まるのを防ぐプラグイン - No hyphen」をアップデートしました。

なんかもう、ファイル名の頭にハイフンがあったりアンダースコアがあったりするとかっこわるいから、いっそのこと取っ払っちゃえばいいじゃん、というオプションを付けました。

「システム」>「プラグイン」>「No hyphen」>「設定」から次の設定が可能です。

  • 「Remove the first hyphen」にチェックを入れると、先頭のハイフンを削除
  • 「and underscore」にチェックを入れると、ハイフンとアンダースコアを削除
  • どちらにもチェックを入れない場合は「Prefix」欄に入力した文字列が先頭のハイフンの手前に挿入される

以上です。

jQuery の .end() メソッドが便利ですよ

たぶん jQuery を使い始めたばかりの人はあまり使わないであろう .end() メソッドですが、これ、かなり便利なんですよね。

僕も最初はあまり使っていませんでしたが、最近は積極的に使っています。ソースも短くかけるうえに、パフォーマンス的にも良いので是非使っていきたいメソッドです。

今回は、簡単な例で .end() を紹介してみます。

続きを読む

Movable Type のブログ記事のファイル名がハイフンで始まるのを防ぐプラグイン - No hyphen

昨日、ふと@mersyさんのこんなつぶやきと、

no_hyphen01.png

その先の記事を見て、Movable Type で自動的に振られるファイル名がハイフンで始まるとき、その頭にあらかじめ指定した接頭辞を付けてハイフンで始まるのを防いでくれるプラグインを作りました。

ブログ記事を保存するタイミングでファイル名をチェックする仕様になっています。

インストールは、mt の plugins ディレクトリに Nohyphen ディレクトリをアップロードすればOKです。接頭辞は「システム」>「プラグイン」>「No hyphen」>「設定」で設定します(初期値は mt です)。

最初は「mersy-」ってなるように決められていたやつでしたがw

微妙ですが一応アップしておきます。

以上です。

MTAppjQuery 0.14 のバグフィックス用の差分ファイル

MTAppjQuery - Movable Type 5 の管理画面をjQueryでカスタマイズしやすくするプラグイン」の MTAppjQuery.js 内にバグが見つかりました。

バグの内容は、$.MTAppCustomize() において、basename に assets を指定し、さらに show_field を 0 にした場合に JavaScript エラーが発生します。

バージョン 0.14 用の MTAppjQuery.js を用意しましたので、ご利用の方はこちらに差し替えてください。

なお、このバグは、おそらく過去のすべてのバージョンに同様に発生します。過去のバージョンをお使いの方は、MTAppjQuery.js を以下のように修正してください。

$.MTAppCustomize()を定義する関数の最後の方
$(fieldID).each(function(){
    $('h3.widget-label span',this).text(op.label);
    if (op.hint != '') $(this).showHint(op.hint);
});
// show_field
if (op.show_field == 0) {
    $(this).addClass('hidden');
}
この部分を次のように差し替える
$(fieldID).each(function(){
    if (op.label != '') $('h3.widget-label span',this).text(op.label);
    if (op.hint != '') $(this).showHint(op.hint);
    if (op.show_field == 0) $(this).addClass('hidden');
});

お手数をおかけして申し訳ございませんが、よろしくお願いいたします。