投稿数が
Movable Type の Captcha の表示を変更する
Movable Type のコメントでは Captcha を利用できます。本エントリーでは Captcha の表示のカスタマイズをいくつか紹介します。
1.基礎知識
Captcha の表示をカスタマイズするには、lib/MT/Util/Captcha.pm を編集します。
また、デフォルトでは、Captcha で表示される文字は以下のようです。数字の0 と 1、アルファベットの l と o は含まれていません(z が2つあるのが謎ですが...)。
23456789abcdefghjkmnzpqrstuvwxyz
2.表示文字を変更する
次の行を変更します。
sub READABLECHARS { '23456789abcdefghjkmnzpqrstuvwxyz' };
以下の部分も変更しないと反映されないようです。
...前略...
sub _generate_code {
...中略...
foreach my $i (0..($len-1)) {
my $byte = ord(pack('H2', substr($genval, $i*2, 2)));
my $x = ($byte & 31);
$code .= substr(READABLECHARS(), $byte & 31, 1);
}
...後略...
試しに「31」の部分を「1」にすると、次のようになりました。

3.表示文字数を変更する
次のLENGTH を変更します。
sub LENGTH { 6 };
値を「8」にすると次のようになります。

単純に値を変更するだけではきれいに表示されないようですが色々試してみるとよいでしょう。
Movable Type のアーカイブページへのリンクを相対パス(ホストからの相対URL)で表示する
Movable Type のアーカイブページ(ブログ記事ページ・月別アーカイブページ・カテゴリアーカイブページ)へのパーマリンクを、相対パス(ホストからの相対URL)で表示するカスタマイズです。以下、ブログ記事ページを例に説明します。
通常、ブログ記事ページのパーマリンクは MTEntryPermalink タグを利用します。
<a href="<mt:EntryPermalink />"><mt:EntryTitle /></a>
このブログ記事ページへのアーカイブパスが
yyyy/mm/entry-basename.html
となっている場合、URLの代わりに相対パスで出力するには、次のようにします。
<a href="<mt:BlogRelativeURL /><$mt:EntryDate format="%Y/%m/"$><mt:EntryBasename separator="-" /><mt:BlogFileExtension />"><mt:EntryTitle /></a>
MTBlogRelativeURL タグは、ホストからの相対URLを出力するタグです。MTEntryDate タグはブログ記事の公開日時を出力し、format モディファイアを適用することで任意のフォーマットで出力できます。
MTEntryBasename タグはファイル名を出力します。separator モディファイアは、ファイルに含まれる「_」を「-」に変換するものです。MTBlogFileExtension タグはアーカイブの拡張子をピリオド付きで出力します。
このようにテンプレートタグを書き換えることで、
http://user-domain/2009/11/07/post.html
という URL を、
/2009/11/07/post.html
で出力することができるようになります。
アーカイブパスによって設定内容は異なりますが、以下のページを参考にすれば、すべてのアーカイブページの相対パスが出力できると思います。
Movable Type 5.0 ベータ 4 におけるテンプレートのインクルードの入れ子について
先日、「Movable Type(MT)5 テーマ:ウェブサイト用」でウェブサイト向けのテーマを公開しましたが、ベータ4で以下の事象が発生しているため、テンプレートを一部修正しています。
1.事象
テンプレートのインクルードが入れ子になっていると、再構築時エラーになる(入れ子にしているテンプレートモジュールがみつからないというエラー)。
現在発生しているのは以下の2テンプレートモジュールです。
- ブログ記事のメタデータ
- タグ
いずれも、以下のようなインクルード関係になっています。
- メインページ→ブログ記事の概要→ブログ記事のメタデータ
- メインページ→ブログ記事の概要→タグ
2.対処
配布している「ブログ記事の概要」テンプレートに、青色部分を追加しています。
...前略...
<div class="entry">
<h2 id="a<mt:entryID pad="1" />" class="entry-header"><a href="<mt:entryPermalink />"><mt:entryTitle encode_html="1" /></a> - <mt:if name="display_blog_name"><a href="<mt:entryBlogURL />"><mt:entryBlogName /></a></mt:if></h2>
<mt:BlogParentWebsite><mt:blogID setvar="id" /></mt:BlogParentWebsite>
<div class="entry-content clearfix">
<mt:if tag="EntryBody">
<mt:EntryBody />
</mt:if>
<mt:if tag="EntryMore">
<p class="entry-more"><a href="<mt:entryPermalink />#more">続きを読む "<mt:entryTitle encode_html="1" />"</a></p>
</mt:if>
<mt:entryIfTagged>
<mt:include blog_id="$id" module="タグ" />
</mt:entryIfTagged>
</div>
<mt:include blog_id="$id" module="ブログ記事のメタデータ" />
</div>
livedoor ブログテンプレート修正(カテゴリアーカイブの前後ページのリンク追加)
現在配布中の livedoor ブログテンプレートを修正しました。
1.修正内容
- カテゴリアーカイブでページ分割を行なった場合に前後ページへのリンクが表示されない不具合を修正
修正後は、カテゴリアーカイブページで下のように前後ページへのリンクが表示されます。

2.対処方法
利用中のテンプレートを直接修正する場合は、カテゴリアーカイブテンプレートに、以下の位置に青色の内容を追加してください。
...前略...
<div class="content-nav"><a href="<$BlogUrl$>">Top</a> > <$CategoryName$> アーカイブ</div>
<div class="page-nav"><IfPrevPage><a href="<$CurrentUrl$>?p=<$PrevPage$>">< 前のページへ</a></IfPrevPage><IfPrevPage><IfNextPage> | </IfNextPage></IfPrevPage><IfNextPage><a href="<$CurrentUrl$>?p=<$NextPage$>">次のページへ ></a></IfNextPage></div>
<!-- Loop Start -->
...後略...
3.ダウンロード
livedoor ブログテンプレートは以下のリンクからダウンロードできます。
Movable Type(MT)5 テーマ:ウェブサイト用
Movable Type 5(MT5)用のテーマ(テンプレート)の配布を開始します。このエントリーで配布するのはウェブサイト用のテーマです。ブログ用のテーマは「Movable Type(MT)5 テーマ:ブログ用」を参照ください。

Movable Type 5 で追加されたテーマ機能を用いれば、テーマを簡単に入れ替えることができます。
1.Movable Type 5(MT5) テーマのダウンロード
Movable Type 5(MT5)テーマのアーカイブを下記のページからダウンロードしてください。
以下、Movable Type(MT) テーマの利用方法です。
2.Movable Type 5(MT5)テーマのインストール
ダウンロードしたテーマアーカイブを解凍し、themes フォルダにある koikikukan_website フォルダを、Movable Type の themes ディレクトリに丸ごとアップロードしてください。
ウェブサイト管理画面の「デザイン」→「テーマ」で「小粋空間テーマ(ウェブサイト用) 5.0」が表示されていればインストールOKです。

テーマのカラムレイアウトを変更したい場合は、mt-static/plugins フォルダにある KoikikukanTemplateSet フォルダを、スタティックディレクトリ(mt-static)の plugins ディレクトリに丸ごとアップロードしてください。カラムレイアウトを変更する必要がない場合はこの作業は不要です。「デザイン」→「スタイル」でスタイル選択画面に移動し、「Koikikukan Styles」を選択してください。
3.Movable Type 5(MT5)テーマの入れ替え
2項で表示されている「小粋空間テーマ(ウェブサイト用) 5.0」の右上にある「適用」をクリックします。

少し待つと、次のように現在のテーマの表示が切り替わります。

あとは全体を再構築し、冒頭のようなデザインで表示されればテーマの入れ替えは完了です。
2010.04.14
スタイルに関する記述を変更しました。
CSS で table に斜線を引く方法
CSS で table に斜線を引いてみました。下の表の左上の斜線に CSS を使ってます。
Windows XP + IE6 / IE7 / Firefox3 / Safri3 / Google Chrome で確認しています。
ポイントは以下です。
- th 要素に position: relative; 斜線を引く要素(ここでは span)に position: absolute; を設定。
- 斜線(border)を適用する要素の前に を設定。 がなかったり、要素の後方に があると、th のスタイルが隠れてしまう。
- クロスブラウザにするため、font-size や line-height など、いくつかのプロパティを設定。
HTML
<table summary="data">
<thead>
<tr><th> <span class="arrow"></span></th><th class="column">a</th><th class="column">b</th><th class="column">c</th></tr>
</thead>
<tbody>
<tr><th class="record">x</th><td>1</td><td>2</td><td>3</td></tr>
<tr><th class="record">y</th><td>4</td><td>5</td><td>6</td></tr>
<tr><th class="record">z</th><td>7</td><td>8</td><td>9</td></tr>
</tbody>
</table>
CSS
* {
margin: 0;
padding: 0;
font-family:Verdana,Arial,sans-serif;
}
table {
font-size:16px;
margin: 30px 0 0 30px;
border: 1px solid #ccc;
border-spacing: 1px;
line-height: 2;
}
th {
width: 50px;
color: #444;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
position: relative;
}
td {
padding: 2px 5px;
text-align: center;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
background-color: #fff;
}
.column {
background-color: #ccffcc;
}
.record {
background-color: #ffcccc;
}
.arrow {
width: 0;
height: 0;
line-height: 0;
border-top: 32px solid #ccffcc;
border-left: 50px solid #ffcccc;
border-right: none;
position: absolute;
/* ie6 */
top: 0px;
left: 0px;
}
html>body .arrow {
top: 32px;
left: 32px;
}
*:first-child+html .arrow { /* ie7 */
top: 0;
left: 0;
}
以前、border プロパティを使ってふきだしを表現する方法が紹介されていましたが、ふきだしの三角形以外に使い道がないかと思ったのがきっかけです。
なお、サンプルでは span 要素の内容に何も入ってないので valid な XHTML ではありません。Another HTML-lint gateway では減点されます。あしからず。
2009.10.27
はてぶで指摘がありましたので最後の一文を修正しました。ご指摘ありがとうございます。
「第1回MT5勉強会」のお知らせ
「第1回MT5勉強会」が今月28日に行なわれ、申し込みがスタートしたようですので、当サイトでも紹介致します(が、すでにキャンセル待ちの模様...)。
- 期日:2009年11月28日(土) 13:00~18:00(開場12:30)
- 場所:【ファースト貸会議室】新橋・銀座会議室(東京都港区新橋1-17-14 新幸ビル4階)JR新橋駅銀座口 徒歩2分
- 参加費:4,000円
- 定員:33名(一般公募は20名・参加者多数の場合はキャンセル待ちでお願いします。
- ゲスト:シックス・アパート株式会社 代表取締役 関 信浩氏・執行役員(製品企画担当) 金子 順氏
- 主催:蒲生トシヒロ氏(有限会社ITプロフェッショナル)
協力:シックス・アパート株式会社、WebSig24/7
協賛:技術評論社(Web Site Expert・gihyo.jp) - 特典:シックス・アパート社より全員にオリジナルトートバッグプレゼント、技術評論社よりWeb Site Expert 5冊(抽選)
■タイムテーブル (予定)
- 12:30 受付開始
- 13:00 開演
- 13:00~18:00 勉強会
- 18:30 閉会
- 19:00~21:00 場所を変えて懇談会を開催します。
勉強会は以下のようなスケジュールになっています。
第1部:セミナー
- 基調講演:関 信浩氏
- MT5の新機能ご紹介:金子 順氏
第2部:ワークショップ
- Movable Type 5.0テーマの作り方(中級・技術者向け)
テーブルリーダー 金子順氏 - プラグイン作成(中級・技術者向け)
テーブルリーダー 藤本壱氏・サブリーダー 奥脇知宏氏 - 管理画面のカスタマイズ(中級・技術者向け)
テーブルリーダー 野田純生氏 - MT5の構造を知り使い道を考える(企画・管理者向け)
テーブルリーダー 蒲生トシヒロ氏
第3部:発表会(45分予定)
ということで、希望される方はお申し込みください。私は演奏会の前日で残念ながら参加できませんが、ご盛会を期待しています!
トピックに
Movable Type 5.0 ベータ4リリース
Movable Type 5.0 ベータ4がリリースされました。
以下のリンクからダウンロードページに進めます。
改善点や不具合の修正はリリースノートを参照ください。
以下、管理画面で目についたところを紹介します。
ブログテーマに「プロフェッショナルブログ」が追加されました。これでウェブサイトの「プロフェッショナルウェブサイト」と統一されたデザインのブログ作成が可能になります。

MultiBlog の再構築トリガー設定の対象に、「ウェブサイト内のすべてのブログでトリガーを有効にする」が追加されました。

MultiBlogのトリガー設定の項目に、ウェブページの保存および公開時に再構築をおこなうオプションが追加されました。

更新履歴の一覧に「更新状態」が表示されるようになりました。
管理画面以外では、主に以下の変更があります。
- mt:WebsiteLabel タグが mt:WebsiteName タグになりました。
- コメントのページ送りがすべてのテーマに実装されました。
- カスタムフィールドの説明欄に入力した内容はサニタイズされなくなりました(管理画面は対象外)。
- "include_blogs" モディファイアに "children(ウェブサイト内のブログ)" または "siblings(ブログが属するウェブサイト内のブログ)" が指定できるようになりました。
- Movable Type に同梱している一部のCPANモジュールのバージョンが上がりました。
- ブログ記事やウェブページの保存ボタンが動作しない場合がある不具合を修正しました。
include_with_website モディファイア
Category:[5.0, テンプレートタグ]
Tag:[exclude_websites, include_websites, include_with_website, MovableType, site_ids]
Permalink
Movable Type 5 では include_with_website モディファイアが追加されています。
このモディファイアは、自ウェブサイトのIDを include_blogs="site" というモディファイアの値に加えるものです。次のように設定すれば、ウェブサイト配下のブログ名と自ウェブサイト名を出力します。
<mt:Blogs include_blogs="site" include_with_website="1">
<mt:BlogName />
</mt:Blogs>
include_with_website モディファイアは、include_blogs モディファイアが使える以下のテンプレートタグで使えると思います(他にも使えるかもしれません)。
- MTAssets
- MTAuthors
- MTBlogs
- MTCategories
- MTBlogCategoryCount
- MTComments
- MTBlogCommentCount
- MTEntries
- MTAuthorEntryCount
- MTBlogEntryCount
- MTPings
- MTBlogPingCount
- MTTags
- MTTagSearchLink
- MTTagRank
- MTWebsites
また、以下のモディファイアも追加されています(上記のテンプレートタグで利用可能)。
- site_ids
- include_websites
- exclude_websites
ちなみに、デフォルトテンプレートの「最近のコメント(下)」を見ると、MTIf タグ(厳密には、MTIf タグの tag モディファイアに上記のテンプレートタグを使用した場合)にも include_with_website モディファイアを(つまり include_blogs="site" も)適用できるようです。
<mt:If tag="BlogCommentCount" include_blogs="site" include_with_website="1">
<mt:Comments lastn="10" sort_order="descend" include_blogs="site" include_with_website="1">
<mt:CommentsHeader>
<div class="widget-recent-comments widget">
<h3 class="widget-header">最近のコメント</h3>
<div class="widget-content">
<ul>
</mt:CommentsHeader>
<li><strong><$mt:CommentAuthor$>:</strong> <$mt:CommentBody remove_html="1" words="10"$> <a href="<$mt:CommentLink$>" title="<mt:CommentEntry><$mt:EntryTitle$></mt:CommentEntry>へのコメント">続きを読む</a></li>
<mt:CommentsFooter>
</ul>
</div>
</div>
</mt:CommentsFooter>
</mt:Comments>
</mt:If>
このサブテンプレートは、自ウェブサイトの(ウェブページへの)コメントも含めて、コメントが1件以上投稿(公開)されていれば、MTIf タグブロック内を実行するようになっています。MTIf タグの条件と整合するよう、中にある MTComments タグにも同じモディファイアを適用しています。
ということで、MTIf タグに設定できるモディファイアがさらに増えました。
Movable Type(MT)5 テーマ:ブログ用
Movable Type 5(MT5)用のテーマ(テンプレート)の配布を開始します。このエントリーで配布するのはブログ用のテーマです。ウェブサイト用のテーマは「Movable Type(MT)5 テーマ:ウェブサイト用」を参照ください。

Movable Type 5 で追加されたテーマ機能を用いれば、テーマを簡単に入れ替えることができます。
1.Movable Type 5(MT5) テーマのダウンロード
Movable Type 5(MT5)テーマのアーカイブを下記のページからダウンロードしてください。
以下、Movable Type(MT) テーマの利用方法です。
2.Movable Type 5(MT5)テーマのインストール
ダウンロードしたテーマアーカイブを解凍し、themes フォルダにある koikikukan_blog フォルダを、Movable Type の themes ディレクトリに丸ごとアップロードしてください。
ブログ管理画面の「デザイン」→「テーマ」で「小粋空間テーマ(ブログ用) 5.0」が表示されていればインストールOKです。

テーマのカラムレイアウトを変更したい場合は、mt-static/plugins フォルダにある KoikikukanTemplateSet フォルダを、スタティックディレクトリ(mt-static)の plugins ディレクトリに丸ごとアップロードしてください。カラムレイアウトを変更する必要がない場合はこの作業は不要です。「デザイン」→「スタイル」でスタイル選択画面に移動し、「Koikikukan Styles」を選択してください。
3.Movable Type 5(MT5)テーマの入れ替え
2項で表示されている「小粋空間テーマ(ブログ用) 5.0」の右上にある「適用」をクリックします。

少し待つと、次のように現在のテーマの表示が切り替わります。

あとは全体を再構築し、冒頭のようなデザインで表示されればテーマの入れ替えは完了です。
2010.04.14
スタイルに関する記述を変更しました。
メール紛失とお問い合わせメール再送のお願い
昨晩、メインで使っている自宅の PC を立ち上げた後、Thunderbird を起動しても無応答状態になってしまい、仕方がないので PC を再起動して再び Thunderbird を起動したところ、受信トレイ(Inbox)のメールがすべて消えてしまいました。
他のフォルダに振り分けをしていたメールは残っているのですが、それ以外のメールがすべてなくなってしまいました。以前バックアップをとっていたのは1年ほど前のものなので、それ以降から昨晩までのメールは残念ながら復旧できなくなりました。
その中に、当サイトへのお問い合わせメールがいくつか返信していないものがありましたので、もしこの記事をご覧になって、まだ返信されていないようでしたら、お手数ですが再度ご連絡いただけますでしょうか。「Movable Type 4.2 パーフェクトガイド」のサポートサイトからのフィードバックメールについても同様です。
ちなみに、これまでも受信トレイのメールが何回か紛失する事件があり、さすがに学習して、受信トレイには一切メールを残さず、すべてフォルダに振り分けることにしました。
それではよろしくお願い致します。
Movable Type でカテゴリ別にブログ記事の背景画像を切り替える
Movable Type 4 以降のバージョンで、カテゴリ別にブログ記事の背景画像を切り替えるカスタマイズを紹介します。
この記事は、Twitter 上で immovabletype さんのつぶやきに対してお伝えした内容をまとめたものです。
まず、カテゴリ別に背景画像を適用するイメージを図に示します。

図の説明ですが、まずカテゴリ別の背景画像を用意します。ここでは「日記」「旅行」「趣味」の3つのカテゴリの背景画像を想定します。次に各背景画像を、カテゴリ別のセレクタとしてスタイルシートに設定します。そして、各ページのブログ記事の背景画像として適用します。例えば、「日記」カテゴリに属するブログ記事Aには、緑色の背景画像を適用します。
また、カテゴリの増減に対応できるよう、スタイルシートや各テンプレートにはテンプレートタグを利用して、再構築するだけで自動的に背景画像を適用できるようにします。手動で用意するのは背景画像のみです。
背景画像の設定にはカテゴリのカスタムフィールドを利用する手もありますが、ここでは MTOS でも利用可能な設定方法を紹介します。カスタムフィールドを用いた方法は別途エントリーしたいと思います。
1.背景画像のアップロード
背景画像にしたいカテゴリ別の画像を、メインページと同じディレクトリにアップロードします。
2.「カテゴリの説明」の設定
各カテゴリの「カテゴリの説明」欄に、背景画像のファイル名を設定します(拡張子は除く)。冒頭の例では、次のような設定になります。
| カテゴリ | カテゴリの説明 |
|---|---|
| 日記 | diary |
| 旅行 | travel |
| 趣味 | hobby |
カテゴリ名を背景画像のファイル名に使ってもよいのですが、カテゴリ名に全角を使っているとCSSのセレクタに使用できないので、「カテゴリの説明」欄を使用しています。
3.スタイルシートの修正
スタイルシートに以下の内容を追加します。
<mt:Categories>
.img_<$MTCategoryDescription$> {
background: url(<$MTBlogURL$><$MTCategoryDescription$>.jpg) no-repeat left top;
}
</mt:Categories>
追加後、スタイルシートの再構築を行ないます。これでカテゴリ別の背景画像用のセレクタが出来上がります。冒頭の例では次のようになります。
.img_diary {
background: url(http://user-domain/diary.jpg) no-repeat left top;
}
.img_travel {
background: url(http://user-domain/travel.jpg) no-repeat left top;
}
.img_hobby {
background: url(http://user-domain/hobby.jpg) no-repeat left top;
}
4.テンプレートの修正
3項で設定した背景画像用のセレクタを、各テンプレートのブログ記事部分に出力する設定を行ないます。設定内容はテンプレートによって微妙に異なるため、やや分かりにくいかもしれませんが次の表を参考にしてください。
| メインページ | カテゴリ アーカイブ | 月別 アーカイブ | ブログ記事 アーカイブ | |
|---|---|---|---|---|
| デフォルトテンプレート | ① | ① | ① | ② |
| 小粋空間テンプレート | ① | ① | ① | ③ |
| その他 (テンプレート別に設定) | ④ | ⑤ | ⑥ | ⑦ |
- ①「ブログ記事の概要」テンプレートモジュールを修正
- ②「ブログ記事」アーカイブテンンプレートを修正
- ③「ブログ記事の詳細」テンプレートモジュールを修正
- ④「メインページ」インデックステンプレートを修正
- ⑤カテゴリアーカイブテンプレートを修正
- ⑥月別アーカイブテンプレートを修正
- ⑦ブログ記事アーカイブテンプレートを修正
表の見方は、例えば、「既定のブログ」を使っていて、メインページ・カテゴリアーカイブ・月別アーカイブのブログ記事の背景画像を変更したい場合は、「ブログ記事の概要」テンプレートモジュールを修正する(=①の修正を行う)、という具合になります。
以下、①~⑦の番号別に修正内容を示します。
①:「ブログ記事の概要」テンプレートモジュールの修正
メインページ・カテゴリアーカイブ・月別アーカイブで、ブログ記事の表示に「ブログ記事の概要」テンプレートモジュールを利用している場合、ページによって処理を振り分ける必要があるため、次のサブテンプレートを使用します。このサブテンプレートは「ブログ記事の概要」テンプレートモジュールの背景画像を表示したい div 要素の開始タグに適用してください(改行はすべて除去してください)。
<div
<mt:if name="category_archive">
<mt:if tag="CategoryDescription">
class="img_<mt:CategoryDescription />"
</mt:if>
<mt:else>
<mt:setVar name="flag" value="0" />
<mt:EntryCategories><mt:unless name="flag">
<mt:if tag="CategoryDescription"> class="img_<$MTCategoryDescription$>"</mt:if>
<mt:setVar name="flag" value="1" />
</mt:unless>
</mt:EntryCategories>
</mt:if>>
最初の MTIf タグブロック内でカテゴリアーカイブの場合の処理を記述し、MTElse タグブロック内でカテゴリアーカイブ以外の処理を記述しています。
MTIf タグブロック内、つまりカテゴリアーカイブでは、表示するカテゴリが決まっているので、MTCategoryDescription タグをそのまま class 属性値に適用しています。なお、2つめのMTIf タグは tag モディファイアで MTCategoryDescription を判定し、カテゴリの説明が設定されている場合のみ、MTCategoryDescription タグを出力するようにしています。
MTElse タグブロック内、つまりメインページや月別アーカイブ・ブログ記事アーカイブでは、まず MTEntryCategories タグでブログ記事のカテゴリ一覧を処理し、一番最初に処理されるカテゴリ(メインカテゴリ)について MTCategoryDescription タグを class 属性値に適用しています。
なお、ブログ記事に複数のカテゴリを設定していると、class 属性値に複数のMTCategoryDescription タグの内容を設定してしまうため、変数 flag を使用し、変数flag の値が0のときだけ、MTCategoryDescription タグを出力するようにしています。
①で div 要素に既存の class 属性値を設定している場合
①で、適用したい div 要素に他の class 属性(ここでは hoge)をすでに設定している場合は、次の内容に書き換えます。hoge の部分は設定している値に書き換えてください。
<div class="hoge
<mt:if name="category_archive">
<mt:if tag="CategoryDescription">
img_<mt:CategoryDescription />
</mt:if>
<mt:else>
<mt:setVar name="flag" value="0" />
<mt:EntryCategories><mt:unless name="flag">
<mt:if tag="CategoryDescription"> img_<$MTCategoryDescription$></mt:if>
<mt:setVar name="flag" value="1" />
</mt:unless>
</mt:EntryCategories>
</mt:if>">
②③④⑥⑦の場合の修正
②③④⑥⑦は、①のように処理を振り分ける必要がないケースです。表に示したテンプレートにある div 要素の開始タグを、次の内容に入れ替えてください。改行はすべて除去してください。
<mt:setVar name="flag" value="0" />
<div
<mt:EntryCategories>
<mt:unless name="flag">
<mt:if tag="CategoryDescription"> class="img_<mt:CategoryDescription />"</mt:if>
<mt:setVar name="flag" value="1" />
</mt:unless>
</mt:EntryCategories>>
処理の内容は、①の MTElse タグブロックと同じです。
②③④⑥⑦で div 要素に既存の class 属性値を設定している場合
②③④⑥⑦で、適用したい div 要素に他の class 属性(ここでは hoge)をすでに設定している場合は、次の内容に書き換えます。hoge の部分は設定している値に書き換えてください。
<mt:setVar name="flag" value="0" />
<div class="hoge
<mt:EntryCategories>
<mt:unless name="flag">
<mt:if tag="CategoryDescription"> img_<mt:CategoryDescription /></mt:if>
<mt:setVar name="flag" value="1" />
</mt:unless>
</mt:EntryCategories>">
⑤:カテゴリアーカイブテンプレートの修正
カテゴリアーカイブテンプレートを直接修正する場合、選ばれるカテゴリが一意に決まっているので、修正内容は一番シンプルです。
<div<mt:if tag="CategoryDescription"> class="img_<mt:CategoryDescription />"</mt:if>>
</div>
処理の内容は、①の MTIf タグブロックと同じです。
⑤で div 要素に既存の class 属性値を設定している場合
適用したい div 要素に他の class 属性(ここでは hoge)をすでに設定している場合は、次の内容に書き換えます。hoge の部分は設定している値に書き換えてください。
<div class="hoge<mt:if tag="CategoryDescription"> img_<mt:CategoryDescription /></mt:if>">
</div>
5.設定例
4項までで、カスタマイズは完了ですが、「一体どの div 要素に設定すればいいの?」という疑問があると思うので、「既定のブログ」のメインページを例に、具体的な設定位置と、設定前後のキャプチャを掲載します。
ブログ記事の概要(変更前)
<$mt:EntryTrackbackData$>
<div id="entry-<$mt:EntryID$>" class="entry-asset asset hentry">
<div class="asset-header">
...後略...
ブログ記事の概要(変更後:青色が追加部分)
<$mt:EntryTrackbackData$>
<div id="entry-<$mt:EntryID$>" class="entry-asset asset hentry<mt:if name="category_archive"><mt:if tag="CategoryDescription"> img_<mt:CategoryDescription /></mt:if><mt:else><mt:setVar name="flag" value="0" /><mt:EntryCategories><mt:unless name="flag"><mt:if tag="CategoryDescription"> img_<$MTCategoryDescription$></mt:if><mt:setVar name="flag" value="1" /></mt:unless></mt:EntryCategories></mt:if>">
<div class="asset-header">
...後略...
メインページ(変更前)
![]()
メインページ(変更後)
![]()
以上です。元々の設定内容は immovabletype さんのブログでまとめられています。
2009.11.18
ファイル名およびクラス名の対応が誤っていたので修正しました。
ELECOM 44メディア対応メモリリーダライタ ケーブル収納 SD+MS+XD対応 ブラック MR-C16BK
xD ピクチャーカードに対応したカードリーダーを持っていなかったので購入しました。
![]() | ELECOM 44メディア対応メモリリーダライタ ケーブル収納 SD+MS+XD対応 ブラック MR-C16BK エレコム 2009-05-25 売り上げランキング : 47585 Amazonで詳しく見る by G-Tools |
この機種を購入した理由は、コンパクト(100円ライターくらいの大きさ)であるということと、「USBケーブルが収納できる」という点です。
とりあえず、当初の目的は無事に果たせました。
Movable Type で「~」が「?」に文字化けする事象や日本語のタグが合算できない不具合を解消する
Category:[トラブルシューティング]
Tag:[MovableType, MySQL, phpMyAdmin, TroubleShooting]
Permalink
Movable Type で MySQL 5を利用している際に、
- ブログ本文などに含まれる「~」という文字などが「?」に文字化けする
- 日本語のタグが合算できない(Aブログ記事とBブログ記事に同じ日本語のタグを付与した場合、タグ一覧などで2件とならず、それぞれ1件として表示される)
といった不具合を解消する方法を紹介します。
すでに多くのサイトで紹介されているので目新しい情報ではありませんがとりあえず。
1.原因
タイトルの不具合が生じる原因は、対象テーブルのカラムの照合順序が「ujis_japanese_ci」になっているためのようです。この照合順序を「utf8_general_ci」にすることで解消しているようです。
ちなみに、「照合順序」とはデータベースから select する際のルールを示すもののようで、
- ujis/utf8:文字コード
- japanese/general:照合形式
- ci/cs:大文字・小文字を区別する・しない
という意味があります。
また、「大文字・小文字の区別」は英文字だけでなく、全角・半角や日本語の濁音・清音も含まれるようです(どのように区別されるかは、japanese/general の設定に依存)。
2.対策
以下、phpMyAdmin を使って「ujis_japanese_ci」を「utf8_general_ci」にする設定を紹介します。phpMyAdmin ログインした状態から説明します。
2.1 ブログ記事の文字化けを解消する場合
左メニューより mt_entry テーブルをクリック。

次の画面で「構造」のタブが選択されていることを確認し、mt_entry テーブルのフィールド一覧が表示されるので、一番下の「すべてチェックする」をクリック。これですべてのテーブルのチェックボックスがチェックされます。

「すべてチェックする」の右側にある鉛筆マークのアイコンをクリック。

照合順序に「ujis_japanese_ci」が表示されているものについて「utf8_general_ci」に変更し、「保存」をクリック。照合順序が選択されていないものは変更しないでください。

以上です。なお、一度文字化けしてしまったものについては手作業で修正が必要なようです。
2.2 日本語の連結ができない不具合を解消する場合
mt_tag テーブルについて、2.1と同様の変更を行います。

こちらも、変更後に追加したタグについては合算されますが、既存のタグは合算されないようです。
2.3 その他
コメントの文字化けを変更する場合は mt_comment、トラックバックは mt_tbping / mt_trackback ですが、一通りやっておくとよいでしょう。
3.参考サイト
以下です。ありがとうございました。
2011.02.04
本文を一部修正しました。
テクノラティジャパン・サービス終了
日本のブログ界に貢献してきたテクノラティジャパンのサービスが2009年10月23日12:00 を持って終了することになりました。
ブログを始めてからテクノラティには色々とお世話になりました。サービス終了については大変残念に思いますが、これも世の流れでしょうか。
なお、テクノラティUSのサービスは継続されるので、テクノラティジャパンのアカウントをテクノラティUSへ移行したい場合は、アカウント移行の期間中(10月14日~12月31日)に、テクノラティUSにサインインを行なえば移行が完了します。
今のところ、テクノラティUSでは日本語サイトの検索には対応していないようです。また、7月から「Twittorati」というサービスが始まっています。
最後に、テクノラティジャパンについての役割がどのようなものであったかを記念に残す意味で、「テクノラティジャパンとは」の文言を全文引用させて頂きます。
テクノラティジャパンは、ブログ界で今何が起きているのかを最もよく知っています。そのデータを利用して現在ブログ検索機能の提供を通じて、ブログそして記事を可視化するお手伝いをしています。
ブログとは何かでしょうか? Weblog(ウェブログ)もしくはblog(ブログ)とは、ウェブ上の日記を指します。ブログでは、ブログを書く人の数だけたくさんのテーマや意見が表現されています。 ブログには影響力の高いものや膨大な読者数を誇るものもあれば家族や友人のような小さな集団に向けたものもあります。
ブログのよいところは、何百万人もの人が簡単に自分の考えを公開することができ、また何百万人もの人がそれらにコメントをつけることができることです。ブログは変化に富み、ダイナミックで中立的で、今までウェブが「図書館」のようであると言われていたのに対し、「会話」に近いものです。ブログの読者やブログを書く人、ブログにコメントを書く人が増えるにつれて、ウェブの利用方法は根本的に変わってきています。インターネット利用者は、情報に対して受動的な消費者からアクティブに働きかける参加者へとどんどん変わってきています。ブログが誰でも意見を発信できるようにしたのです。
これがブログ現象をはじめとするウェブ上で自由な表現を行うことが「参加型エコノミー」と呼ばれるゆえんです。
数年前、ウェブ検索でシンプルながら大きな革命が起きました。サイトをリンクされているサイトの数で評価し、「リンク数が重要」としたことです。ブログ界ではこの「リンク」はもっと重要と考えられています。それは、ブロガーが非常によく他のブログにリンクをはったりコメントをつけたりして、会話でもつようなスピード感とつながり感が醸成されているためです。だからこそテクノラティはリンクの数、ブログの妥当性、ブログの即時性をトラッキングするのです。 テクノラティはブログが更新されると、瞬時かつ自動的に通知を受け取るため、ブログ界の膨大な更新情報をトラッキングすることがで、そしてこれらの会話の下地となるコミュニティ(誰が誰にリンクを貼っているのか)を知ることができるのです。
テクノラティのデータによると、一日に7万5000個の新しいブログが生まれています。ブロガーは定期的にブログを更新するため、一日に120万個の記事がかかれており、これは一時間に5万個のブログが更新されている計算になります。
加えて、テクノラティではビデオブログ(vlog)やポッドキャスト、動画等の新しいUGC(User Generated Contentユーザが作り出すコンテンツ)をリアルタイムにトラッキングし、投稿された数分後にはインデックスしています。テクノラティではウェブで行われている会話をライブで可視化し、自分が興味を持っているものや面白いものなどができるたびにそれを見つけることができるようにしています。
テクノラティジャパンをご利用頂くと、たった今、誰が、どんなことを言っているのかがわかるのです。是非ご利用ください。
Movabel Type の検索結果フィードを利用する
当サイトのブログ検索(またはタグ検索)結果画面に、検索結果フィードのリンクを追加しました。
このリンクの利用方法は次の通りです。
- ブログの検索フォームから検索、またはタグ検索
- 検索結果の右上に表示された「<検索文字列>の検索結果を購読する」のリンクをコピー
- コピーしたリンクをフィードに登録
上記の設定を行なうことで、そのブログで検索文字列に関連した記事が投稿されると、フィードからその記事だけを購読することができるようになります(下は設定後の購読例)。特定の話題に関する記事だけを読みたいときに大変便利です。

検索結果フィードのリンクはデフォルトテンプレートで用意されているので改めて設定する必要はないと思いますが、当サイトの公開テンプレートでは提供していないので、以下に掲載しておきます。
<mt:If name="search_results">
<mt:If tag="SearchString">
<div class="side">
<img src="<$mt:StaticWebPath$>images/status_icons/feed.gif" alt="購読する" width="9" height="9" /> <a href="<$mt:CGIPath$><$mt:SearchScript$>?<mt:IfTagSearch>tag<mt:else>search</mt:IfTagSearch>=<$mt:SearchString encode_url="1"$>&Template=feed&IncludeBlogs=<$mt:SearchIncludeBlogs$>&limit=<$mt:SearchMaxResults$>" title="<mt:IfTagSearch>「<$mt:SearchString$>」の検索結果を購読<mt:Else>タグ「<$mt:SearchString$>」を購読</mt:IfTagSearch>"><mt:IfTagSearch>タグ「<$mt:SearchString$>」の検索結果を購読する<mt:Else>「<$mt:SearchString$>」の検索結果を購読する</mt:IfTagSearch></a>
</div>
</mt:If>
</mt:If>
ニコニコ動画が未来をつくる ドワンゴ物語
巷ではコグレさん・いしたにさん執筆の Twitter 本でにぎわってますが、佐々木俊尚さんの新書も出ています。
![]() | ニコニコ動画が未来をつくる ドワンゴ物語 (アスキー新書 125) アスキー・メディアワークス 2009-10-09 売り上げランキング : 489 Amazonで詳しく見る by G-Tools |
この本は、佐々木さんが2008年秋から2009年夏にかけてドワンゴ社員へインタビュー取材を元に記されたもので、ドワンゴの創世記からニコニコ動画を作るまでの歴史が語られています。
- 第1章 Bio_100%の強者たち
- Super Depth
- パソコン通信の時代
- STUDIO☆FEMYからBio_100%へ
- Windows出現
- 第2章 ドワンゴ創世
- 出会い
- 自作パソコン文化の誕生
- DWANGO
- Lase5
- アクシデンタルな企業
- ドワンゴ誕生
- 天才プログラマー
- 第3章 デスマーチの日々
- 「廃人」たちの総帥
- もう一人の「廃人」
- 思い切った賭け
- 死の行進
- SEGA RALLY2
- 弟子募集!
- 艱難辛苦の末の奇跡
- 行進の爪跡
- 第4章 ケータイの世界へ
- iモードという可能性
- ドコモとの接近
- 超大作RPG
- 社長招聘
- 着メロという発想
- 最後発として
- 秘策
- いろメロミックス
- 音質で勝負
- 絶対音感の子供たち
- 着メロ事業、離陸
- 先達たちに導かれ
- テレビCMへの進出
- 独走状態
- 新しいメディア-着ラップと着ボイス
- 敗北の中の希望
- 第5章 同期と非同期の狭間に
- 手詰まりの状態で
- 赤字決算
- 不思議なサービス
- 同期と非同期の問題
- バーチャルライブ
- 動画配信の模索
- 残された時間
- これだ!
- ひろゆきのアドバイス
- ニコニコ動画、発進
- 第6章 ニコニコ動画が作り出す未来
- YouTubeからの強硬措置
- プラットフォームとしての展開
- 無数に生まれ続ける伝説
- 新しいコンテンツの世界
Movable Type 5.0 のカスタムフィールドをカテゴリで振り分ける
Category:[5.0, カスタムフィールド]
Tag:[Category, CustomField, MovableType]
Permalink
Movable Type 5.0 では、ブログ記事投稿画面に表示するカスタムフィールドを、カテゴリで振り分けることができるようになりました。
一言で説明するのは難しいので、まず概要を図で説明します。
まず、ブログ記事用のカスタムフィールドをいくつか作成したと仮定します。カスタムフィールド作成後、カスタムフィールドとカテゴリをひもづけます。この図では、次のようにひもづけます。
- カスタムフィールドA:趣味、日記
- カスタムフィールドB:趣味、日記
- カスタムフィールドC:趣味、旅行

このひもづけを行うことで、ブログ記事投稿画面でカテゴリを選択した際、カテゴリごとに表示するカスタムフィールドを切り替えることができます。
- カテゴリから「趣味」を選択:カスタムフィールドA~Cを表示
- カテゴリから「日記」を選択:カスタムフィールドCを表示
- カテゴリから「旅行」を選択:カスタムフィールドA、Bを表示

実際の画面では次のようになります。
「趣味」選択時のカスタムフィールド
「旅行」選択時のカスタムフィールド
「日記」選択時のカスタムフィールド
複数選択しても適正に動作するようです。
2009.11.02 追記
ブログ記事のカスタムフィールドを追加すると、カテゴリ編集画面に「カスタムフィールド」というフィールドが追加され、追加したカスタムフィールドがすべて表示されます。
カスタムフィールド編集画面でひもづけたいカテゴリにチェックをすると、カテゴリ編集画面の「カスタムフィールド」に表示されたカスタムフィールドがチェックされた状態になります。
この状態であれば、本エントリーの動作になりますが、カテゴリ編集画面の「カスタムフィールド」に表示されたカスタムフィールドのチェックを外すと、ブログ記事編集画面で該当のカテゴリを選択しても、フィールドは表示されません。
ただし、上記の操作に関係なく、ブログ記事の「表示オプション」を使った表示・非表示の制御も行なえます。
Movable Type 5 ユーザーコミュニティ「MTQ」
告知が遅れましたが、Movable Type 5 のベータ版リリースに伴って、先日より「Movable Type 5 ユーザーコミュニティ」サイト、通称「MTQ」が立ち上がっています。
このサイトはユーザ参加型で、現在100人余りのメンバーが参加しています。サイトに登録することでトピックを投稿することができるようになります。また、ベータ版のダウンロードサイトへのリンクやフィードバックへのリンクもあります。
Movable Type 5 の情報をいち早くキャッチしたい方にお勧めです。
金賞よりも大切なこと~コンクール常勝校 市立柏高等学校吹奏楽部 強さの秘密
柏市立柏高等学校(市柏:イチカシ)吹奏楽部の物語です。「音楽コンクールで勝つ3つの方法 」のコメントでこの本の存在を知り、購入しました。新刊です。
![]() | 金賞よりも大切なこと~コンクール常勝校 市立柏高等学校吹奏楽部 強さの秘密 スタイルノート 2009-09-28 売り上げランキング : 365 Amazonで詳しく見る by G-Tools |
柏市立柏高等学校(イチカシ)は1978年4月に開校。当時14名の部員から始まった吹奏楽部は、顧問の石田修一先生の指導のもと、わずか3ヶ月(しかも1年生だけ)で、千葉県吹奏楽コンクールで準優勝。翌年は優勝。3年目(全学年が揃う)には、全日本吹奏楽コンクールの地区予選で優勝。4年目には全日本吹奏楽コンクールの関東大会で金賞を受賞。そして紆余曲折を経たのち、7年目には全国大会で金賞を受賞するに至っています。
その後、毎年数々のコンクールで優勝・金賞を受賞し、約200名余りの部員で構成される吹奏楽部は現在も高い評価を得ています。柏市民文化会館で毎年12月に5日間にわたって行なわれるチャリティコンサートは、宣伝をしたりチラシを使うわけでもないのに即日完売らしく、非常に多くのファンがいるようです。
この本は、著者の山崎正彦氏(現武蔵野音楽大学講師)がイチカシを密着取材し、イチカシの強さの秘密が、単に厳しい指導や演奏技術の向上ではなく、顧問の石田先生の「人を育てる力」にあることが切々と記されています。
書籍の中では、コンクールに向けた石田先生の指導、生徒達の努力、そして金賞までの道のりが物語的に記されており、ひたむきに演奏に取り組む、純粋で素直な高校生達がいることに感動を覚える場面もありました。
ということで、今年出合った書籍の中では一番面白かったです。また、機会があれば是非イチカシの生演奏も聴いてみたいところです。
Movable Type 5.0 ベータ3リリース
Movable Type 5.0 ベータ3がリリースされました。
以下のリンクからダウンロードページに進めます。
改善点や不具合の修正はリリースノートを参照ください。
以下、管理画面で目についたところを紹介します。
ブログのドメインやブログのアーカイブのドメインをウェブサイトのサブドメインとして指定できるようになりました。
ウェブページやブログの新規作成画面へのメニューが追加されました。

管理画面右上の検索ボックスのレイアウトが変わりました。

記事作成画面のレイアウトが若干変わりました。
ベータ2のレイアウト

ベータ3のレイアウト

ユーザーダッシュボードへのメニューが追加されました(ベータ2にあった画面左上の「ダッシュボード」が移動)。

テーマをエクスポートしたときにダウンロードを選択できるようになりました。

カスタムフィールドでカテゴリとの対応をとる場合、サブカテゴリがインデント表示されるようになりました。
ベータ2の表示

ベータ3の表示

テンプレートモジュールやウィジェットにSSIの表示が追加されました。

管理画面以外では、主に以下の変更があります。
- Generic Website が廃止され、通常のウェブサイトとしてブログを管理できます。
- ウェブサイトやブログを作成したときに、サンプルのページを作らないようになりました。
- Motion と Action Stream の、テンプレートおよびプラグインは、MT 5.0 には含まないことになりました。
Movable Type 5.0 情報(テンプレートタグ Tips)
Movable Type 5.0 のテンプレートタグの操作に関する Tips です(ベータ2現在の情報)。以前の記事と若干重複しているかもしれませんがあしからず。
また、情報の一部は「Movable Type 5 BETA ドキュメント」からの引用です。
1.親ウェブサイトのコンテキストに移動する
<mt:BlogParentWebsite>
:
</mt:BlogParentWebsite>
2.親ウェブサイトのモジュールをインクルードする
<mt:BlogParentWebsite><mt:WebsiteID setvar="website_id"></mt:BlogParentWebsite>
<mt:Include module="Test" blog_id="$website_id">
3.ウェブサイトに属するブログのコンテキストに移動する
<mt:Blogs include_blogs="site">
:
</mt:Blogs>
4.コメントのカスタムフィールドをコメント投稿フォームに表示する
<input type="hidden" name="blog_id" value="<MTBlogID>" />
<input type="hidden" name="customfield_beacon" value="1" id="customfield_beacon" />
<mt:CommentCustomFields>
<mt:SetVarBlock name="custom_field_name"><$mt:CustomFieldName$></mt:SetVarBlock>
<mt:SetVarBlock name="field-content"><$mt:CustomFieldHTML$></mt:SetVarBlock>
<mt:SetVarBlock name="custom_field_id">profile_<$mt:CustomFieldName dirify="1"$></mt:SetVarBlock>
<$mt:Include module="フォームフィールド" id="$custom_field_id" class="" label="$custom_field_name"$>
</mt:CommentCustomFields>
5.カスタムフィールドの埋め込みオブジェクトを表示する際の注意点
Movable Typeの標準テンプレートでは、プロフィールやコメントのカスタムフィールド項目をブログで表示する際、安全のためにHTMLタグを除去するグローバルモディファイア sanitize="1" を指定しています。
このため、カスタムフィールドの『埋め込みオブジェクト』で入力される<embed>や<object>タグは、標準の設定では除去されます。
タグを除去せずに、カスタムフィールドの値を表示したい場合は、 sanitize="0" とすることでHTMLをそのまま表示できます。ただし、これによりウェブサイト上で任意のHTMLを表示したり、JavaScriptを実行することが可能になります。ウェブサイトのセキュリティ確保のために、信頼されたユーザーだけがその項目を編集できるよう、コメント認証やユーザーの権限を厳しく設定してください。
WordPressで学ぶPHPとMySQL
WordPress 向けのカスタマイズ本「WordPressで学ぶPHPとMySQL」を紹介します。
この書籍は、著書の藤本壱さんが配布する PDF 本の(多分)第2弾です。ちなみに第1弾は「Movable Type Developer's Guide Volume 1」です。
書籍の前半は、PHPの基礎とWordPressを使った制御文の説明など。後半はGETデータ、POSTデータの受け渡し方、Cookie の利用、関数や正規表現の利用方法、さらにオブジェクト指向プログラミングやデータベースへの直接アクセスや、wpdbオブジェクトを利用したデータの取得方法、カスタムフィールドを使った検索など、サイト制作に役立つと思われる実用的なノウハウが満載です。
また、書籍では開発ツールのEclipse PDT(PHP向けの開発環境)を必要に応じて用いており、手順通りに行なえば、作成したソースコードのデバグを効率よく行なえるようになっています。書籍内で紹介しているソースコードのサンプルもダウンロードできます。
約470ページで2500円ですが、ご自身のブログで書籍の紹介などを行なえば、最大で500円割引で購入する特典もあるので、かなりお買い得ではないでしょうか。
目次をクリックすれば目的のページに素早く移動できるのもPDFの強みです。また、紙媒体に印刷したときに綴じやすいよう、PDFは3種類セットで用意されています。
詳しくは「WordPressで学ぶPHPとMySQLの特設ページ」をご覧ください。
以下、目次です。
第1章 学習用環境の作成
- PHPとMySQLの学習に必要な環境
- ローカルサーバー
- 統合開発環境
- テキストエディタ
- パソコンの設定等
- XAMPP for Windowsのインストール
- XAMPP for Windowsの概要
- XAMPP for Windowsのダウンロード
- XAMPP for Windowsのインストール
- XAMPP for Windowsのコントロールパネルを起動する
- XAMPP for Windowsの動作確認
- MySQLにパスワードを設定する
- PHPの設定
- XAMPP for MacOS Xのインストール
- XAMPP for MacOS Xのダウンロード
- XAMPP for MacOS Xのインストール
- php.iniの書き換え
- XAMPP for MacOS Xの起動
- XAMPP for MacOS Xの動作確認
- XAMPP for MacOS Xが自動で起動するようにする
- セキュリティの設定を行う
- phpMyAdminの設定の書き換え
- Eclipse PDTのインストール
- JRE(Java実行環境)のインストール
- Eclipse PDTのダウン
- Eclipse PDTのインストール
- Eclipse PDTの初期設定
- WordPressのインストール
- データベースの作成
- WordPressをインストールする
第2章 PHP初めの第一歩
- PHPの概要
- 静的なWebページが表示される仕組み
- プログラムの処理結果を表示する
- インタープリタ型の言語
- HTMLファイルの中に直接にスクリプトを書ける
- Webページ向けの便利な機能
- データベースアクセス機能が充実
- 初めてのPHPスクリプト
- スクリプトの入力
- ファイルの保存
- ファイルのアップロード
- ファイルのパーミッションについて
- ファイルを表示する
- 変数を使う
- 「変数」とは?
- 変数の名前
- 変数に値を代入する
- 変数や値の計算
- 型の変換
- 値を表示する
- echo命令で文字を表示する
- 連続した文字列を一度に出力する
- 投稿のタイトルの前に連番を振る
- この節で行うこと
- トップページの出力に使われるテンプレート
- 投稿を繰り返し出力する「WordPressループ」
- カスタマイズを行う
- Eclipse PDTでプログラムの動作を追ってみる
- プロジェクトの新規作成
- デバッグの設定を行う
- デバッグ対象のファイルを開く
- ブレークポイントを設定する
- デバッグを始める
- プログラムを1ステップずつ実行する
- ステップ・オーバーを進める
- 次のブレークポイントまで一度に実行する
- デバッグを終了する
- その他の基本的な構文
- 定数の定義
- スクリプトにコメントを入れる
- 長い行を分割する
- 1つのHTMLファイルにPHPの部分を複数入れる
- WordPressの機能を利用したスクリプトを作る
- 出力の例
- スクリプトの書き方
- スクリプトの例
第3章 条件判断と繰り返し
- 条件によって処理を変える---if文
- if文の基本型
- if文の例
- Eclipse PDTでif文の流れを追ってみる
- 条件式とtrue/falseの値
- 「true」と「false」について
- WordPressの「条件タグ」で処理を分ける
- 複数の条件を判断する
- 複数の条件を順に判断する
- 条件を組み合わせる
- if文のネスト
- その他の条件判断
- switch文
- 三項演算子
- 一定回数の繰り返し
- for文の基本
- お勧め度を「☆」で表示する
- for文の一般形
- for文の一般形
- for文のネスト
- for文の一般形/for文のネストの例
- for文の動作をEclipse PDTで追ってみる
- デバッグの設定を行う
- ブレークポイントを設定する
- 「式」のビューを追加
- 外側の繰り返しに入る
- 内側の繰り返しに入る
- 最初のカラーコードを出力する
- 内側の繰り返しを終える
- 外側の繰り返しを抜ける
- デバッグの終了
- while文/do~while文による繰り返し
- while文とdo~while文の書き方
- WordPressループとwhile文
- 繰り返しの制御(break文とcontinue文)
- 繰り返しを途中で抜ける---break
- 次の繰り返しに進む---continue
第4章 配列変数で多数のデータを効率よく扱う
- 配列変数の基本
- 普通の変数では一連のデータを処理しにくい
- 配列変数で一連のデータを効率よく処理する
- 配列変数への代入方法
- 配列変数にWordPressの投稿を読み込む
- Eclipse PDTで配列変数の状態を見る
- サンプルファイルの準備
- デバッグの設定
- 配列変数を監視するための準備
- ブレークポイントの設定
- 配列変数の状態を調べる
- 連想配列と二次元配列
- 連想配列
- 二次元配列
- 配列関連の各種の処理
- 配列の各要素を順に取り出して処理する
- 連想配列からキーと要素を取り出す
- 配列の要素を変数に一度に代入する
- 配列の要素数を数える
- 配列の要素を逆順にする
- 配列の要素を並べ替える
- 投稿内の単語を出現回数の多い順に表示する
- 要素の追加と削除
- 配列の連結
- 配列の一部を取り出す
第5章 ページ間でデータをやり取りする
- フォームの基本
- フォームの作成
- 入力欄を作る
- ボタンを作る
- 「送信」ボタンが押されたときの動作を決める
- フォームの例
- 外部からのデータを受け入れる際の注意
- URLを使ってページ間でデータを受け渡す(GET)
- URLでのデータのやり取りの仕組み
- PHPでのデータのやりとりの方法
- URLに指定された値でヘッダーの背景画像を切り替える
- フォームのデータをGETプロトコルで送信する
- 英数字以外のデータを受け渡しする
- POSTプロトコルでデータを渡す
- POSTプロトコルの概要
- フォームの書き方
- データの受け取り方
- POSTプロトコルを使った例
- サンプルファイルとデバッグ
- Cookieでデータを受け渡しする
- Cookieの概要
- Cookieを保存する
- setcookie関数の例
- Cookieの値を読む
- Cookieを使った例
- データ受け渡しの際のPHP特有の機能
- 複数選択可能なセレクト
- magic_quotesについて
第6章 関数の利用と作成
- 関数の基本
- 関数とは?
- 組み込み関数とユーザー定義関数
- よく使う組み込み関数
- 日付/時刻を処理する関数
- 数学関数
- 変数関係の関数
- 文字列を処理する関数
- 文字列の長さを調べる
- 文字列の一部分を取り出す
- 大文字/小文字の変換
- ホワイトスペースの削除
- 値を書式付けて文字列に変換する
- 文字列の位置の検索
- 文字列中のHTMLやPHPを無効化する
- HTMLのタグをすべて取り除く
- 日本語対応の文字列関数
- 日本語対応文字列関数の特徴
- PHP標準文字列関数との対応
- 文字コードの変換
- 全角/半角やひらがな/カタカナの変換
- 正規表現を使った検索と置換
- 正規表現とは?
- 正規表現を使って文字列を検索する
- 検索された文字列を配列に取り出す
- 文字列を置換する
- 文字列を分割する
- 正規表現を使った例
- ユーザー定義関数を作る
- ユーザー定義関数の基本
- ユーザー定義関数の例
- ユーザー定義関数のデバッグ
- サンプルファイル
- ユーザー定義関数のライブラリ化
- ユーザー定義関数を別ファイルから読み込む
- functions.phpに関数等を書く
- functions.phpを使った例
- ユーザー定義関数関係の各種のトピック
- 変数のスコープ
- 値渡しと参照渡し
- 引数のデフォルト値を指定する
- 静的変数
第7章 オブジェクト指向の基本
- オブジェクトの基本
- オブジェクトとは
- オブジェクトを使ってみる
- クラスを作る
- クラスとメンバー/メソッドの定義
- オブジェクトの初期化
- オブジェクトが消える際の後始末をする
- オブジェクトへのアクセス
- クラス定義の例
- 既存のクラスを拡張する(継承)
- 既存のクラスを継承して新しいクラスを作る
- 継承の書き方
- 派生クラスのプロパティとメソッド
- クラス作成の事例---WordPress 2.8のウィジェット
- この節で取り上げる内容
- WP_Widgetクラスを継承する
- コンストラクタを作る
- widgetメソッドを上書きする
- サンプルファイルとデバッグ
第8章 MySQLの基本
- RDBMSとMySQLの概要
- RDBMSの概要
- RDBMSとSQL
- MySQLでデータを管理する
- phpMyAdminの基本操作
- phpMyAdminの概要
- phpMyAdminにログインする
- データベースを選ぶ
- SQLの入力と結果の表示
- 基本的なデータの取り出し方
- すべてのレコードを取り出す
- フィールドを限定する(射影)
- レコードを限定する(選択)
- さまざまなデータの取り出し方
- レコードを並べ替える
- レコードの数を制限する
- フィールドどうしを計算する
- 関数を使う
- フィールドに別名を付ける
- 重複する値を取り除く
- 集計とグループ化
- 集計を行う関数
- グループ化して集計する
- 集計結果に条件を設定する
- テーブルを結合する
- 「正規化」について
- 結合を行うSELECT文の書き方
- 投稿を書いたユーザーの名前を得る
- カテゴリ毎の投稿の数を調べる
- 自己結合と外部結合
- 自己結合
- 外部結合
- サブクエリーで複雑な条件のデータを取り出す
- サブクエリーとは
- 「テーマ」「プラグイン」の両方のタグを付けた投稿を取り出す
- 「『テーマ』『プラグイン』の両方のタグを付けた投稿を取り出す」処理を別の方法で行う
- テーブルに別名を付ける場合
- データの書き換え等の操作
- データ書き換え関係のSQLを実行する際の注意
- レコードを追加する---INSERT命令
- レコードを書き換える---UPDATE命令
- レコードを削除する---DELETE命令
- WordPressのコアの関数を利用する
第9章 WordPressからMySQLにアクセスする
- wpdbオブジェクトを介してデータベースにアクセスする
- wpdbオブジェクトの概要
- SQLの実行結果を得る---get_resultsメソッド
- 結果が1行になる場合---get_rowメソッド
- 結果が1つの値になる場合---get_varメソッド
- INSERT文等の実行---queryメソッド
- SQLインジェクションの防止---prepareメソッド
- SQL実行時のエラーを表示する
- HP本来のMySQL関係の関数
- 特定カテゴリだけのアーカイブを作る
- この節で作る例
- 「ニュースリリース」カテゴリだけの月別アーカイブリストを出力する
- 月別のニュースリリースを表示する
- サンプルファイルとデバッグ
- 複数のカスタムフィールドを組み合わせた検索
- この節で取り上げる例
- サンプルの動作テスト
- カスタムフィールドのデータの構造
- SELECT文の作り方
- 検索のフォームを作る
- 検索結果を出力するスクリプトを作る
- searchresult.phpの動作をEclipse PDTで見る
Amazon 2009年9月の注文ランキング
2009 年 9 月の Amazon 注文ランキングです。藤本壱さんのMTOSカスタムフィールド本の売れ行きが好調です。
1位:MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現!
![]() | MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現! 藤本 壱 ラトルズ 2009-02 売り上げランキング : 8891 Amazonで詳しく見る by G-Tools |
2位:GriffinTechnology iTalk Pro GRI-IP-000063
![]() | GriffinTechnology iTalk Pro GRI-IP-000063 Griffin Technology 2006-11-10 売り上げランキング : 13181 Amazonで詳しく見る by G-Tools |
2位:即戦プロ技 Movable Typeデザインテンプレートコレクション
![]() | 即戦プロ技 Movable Typeデザインテンプレートコレクション 毎日コミュニケーションズ 2009-05-13 売り上げランキング : 29157 Amazonで詳しく見る by G-Tools |
2位:基本からしっかりわかる Movable Type 4.2 カスタマイズブック
![]() | 基本からしっかりわかる Movable Type 4.2 カスタマイズブック(Web Designing Books) 毎日コミュニケーションズ 2008-09-20 売り上げランキング : 10097 Amazonで詳しく見る by G-Tools |
5位:Movable Type逆引きデザイン事典[4.2/4.1対応]
![]() | Movable Type逆引きデザイン事典[4.2/4.1対応] 翔泳社 2009-04-21 売り上げランキング : 85710 Amazonで詳しく見る by G-Tools |
5位:グーグルに依存し、アマゾンを真似るバカ企業
![]() | グーグルに依存し、アマゾンを真似るバカ企業 (幻冬舎新書) 幻冬舎 2009-07 売り上げランキング : 2656 Amazonで詳しく見る by G-Tools |
5位:誰とでも15分以上 会話がとぎれない!話し方66のルール
![]() | 誰とでも15分以上 会話がとぎれない!話し方66のルール すばる舎 2009-07-24 売り上げランキング : 24 Amazonで詳しく見る by G-Tools |
5位:Logitec iPod/iPhone専用 HiFi ICレコーダーアダプタ LIC-IREC03P
![]() | Logitec iPod/iPhone専用 HiFi ICレコーダーアダプタ LIC-IREC03P ロジテック 2009-08-11 売り上げランキング : 891 Amazonで詳しく見る by G-Tools |
朝5分で
phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法
phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する具体的な方法です。ここでは XAMPP 環境(Windows XP + MySQL 5.0 + phpMyAdmin 2.11.4)で試したもので紹介します。
このエントリーは以下の記事に触発されて書いたものです。
1.my.cnf を変更する
ストレージエンジンを MyISAM から InnoDB に変更するには、テーブル単位で変更します。phpMyAdmin の GUI によるストレージエンジンの変更方法は、
- 変更したいテーブル名をクリック
- 上部タブの「操作」をクリック
- 「テーブルオプション」の「ストレージエンジン」から「InnoDB」を選択
となりますが、XAMPP のデフォルトの MySQL の設定では、phpMyAdmin から InnoDB を選択することができません。

したがって、まず最初に、C:¥xampp¥mysql¥bin¥my.cnf(my と表示されたファイル)を編集します。
my.cnf を任意のエディタで開き、
# Comment the following if you are using InnoDB tables
skip-innodb
#innodb_data_home_dir = "C:/xampp/mysql/"
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = "C:/xampp/mysql/"
#innodb_log_arch_dir = "C:/xampp/mysql/"
## You can set .._buffer_pool_size up to 50 - 80 %
## of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
## Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
の部分を探し、以下のように「skip-innodb」をコメントアウトし、以降のすべてのコメントアウトを解除します。
# Comment the following if you are using InnoDB tables
#skip-innodb
innodb_data_home_dir = "C:/xampp/mysql/"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/"
innodb_log_arch_dir = "C:/xampp/mysql/"
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
編集が終わったら保存します。
2.MySQL を再起動する
my.cnf を編集しただけでは実際の動作に反映されないので、XAMPP コントロールパネルを使って MySQL を再起動します。

3.ストレージエンジンを MyISAM から InnoDB に変更する
phpMyAdmin で該当のDBを選択したあと、InnoDB に変更したいテーブルをクリック。

上部のタブから「操作」をクリック。

「テーブルオプション」の「ストレージエンジン」から「InnoDB」を選択

または、テーブル選択前の状態の上部タブの「SQL」をクリックして、以下のSQL を実行します(まとめて実行するとエラーになりましたが...)。この SQL は Movable Type 4.261 のものです。
ALTER TABLE `mt_asset` ENGINE = 'InnoDB';
ALTER TABLE `mt_asset_meta` ENGINE = InnoDB;
ALTER TABLE `mt_association` ENGINE = InnoDB;
ALTER TABLE `mt_as_ua_cache` ENGINE = InnoDB;
ALTER TABLE `mt_author` ENGINE = InnoDB;
ALTER TABLE `mt_author_meta` ENGINE = InnoDB;
ALTER TABLE `mt_backgroundrebuild` ENGINE = InnoDB;
ALTER TABLE `mt_blog` ENGINE = InnoDB;
ALTER TABLE `mt_blog_meta` ENGINE = InnoDB;
ALTER TABLE `mt_category` ENGINE = InnoDB;
ALTER TABLE `mt_category_meta` ENGINE = InnoDB;
ALTER TABLE `mt_comment` ENGINE = InnoDB;
ALTER TABLE `mt_comment_meta` ENGINE = InnoDB;
ALTER TABLE `mt_config` ENGINE = InnoDB;
ALTER TABLE `mt_entry` ENGINE = InnoDB;
ALTER TABLE `mt_entry_meta` ENGINE = InnoDB;
ALTER TABLE `mt_field` ENGINE = InnoDB;
ALTER TABLE `mt_fileinfo` ENGINE = InnoDB;
ALTER TABLE `mt_ipbanlist` ENGINE = InnoDB;
ALTER TABLE `mt_log` ENGINE = InnoDB;
ALTER TABLE `mt_notification` ENGINE = InnoDB;
ALTER TABLE `mt_objectasset` ENGINE = InnoDB;
ALTER TABLE `mt_objectscore` ENGINE = InnoDB;
ALTER TABLE `mt_objecttag` ENGINE = InnoDB;
ALTER TABLE `mt_permission` ENGINE = InnoDB;
ALTER TABLE `mt_placement` ENGINE = InnoDB;
ALTER TABLE `mt_plugindata` ENGINE = InnoDB;
ALTER TABLE `mt_profileevent` ENGINE = InnoDB;
ALTER TABLE `mt_profileevent_meta` ENGINE = InnoDB;
ALTER TABLE `mt_role` ENGINE = InnoDB;
ALTER TABLE `mt_session` ENGINE = InnoDB;
ALTER TABLE `mt_tag` ENGINE = InnoDB;
ALTER TABLE `mt_tbping` ENGINE = InnoDB;
ALTER TABLE `mt_tbping_meta` ENGINE = InnoDB;
ALTER TABLE `mt_template` ENGINE = InnoDB;
ALTER TABLE `mt_templatemap` ENGINE = InnoDB;
ALTER TABLE `mt_template_meta` ENGINE = InnoDB;
ALTER TABLE `mt_touch` ENGINE = InnoDB;
ALTER TABLE `mt_trackback` ENGINE = InnoDB;
ALTER TABLE `mt_ts_error` ENGINE = InnoDB;
ALTER TABLE `mt_ts_exitstatus` ENGINE = InnoDB;
ALTER TABLE `mt_ts_funcmap` ENGINE = InnoDB;
ALTER TABLE `mt_ts_job` ENGINE = InnoDB;
なお、すべてのテーブルを InnoDB にする必要はないかもしれませんが「混在しない方が良い」と言う記事もあります。
4.MyISAM と InnoDB の計測結果
Movable Type 4.261 の MyISAM と InnoDB の再構築時間の計測結果です。
ブログ記事数は約30で、ブログ記事の再構築と全体の再構築をそれぞれ5回ずつ行いました。ちなみにかなり非力な Windows マシンです(Pentium4 2.8GHz メモリ1.5GB)。InnoDB のチューニングは行なっていません。
| MyISAM | InnoDB | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ブログ記事 | 15s | 13s | 14s | 16s | 13s | 13s | 12s | 12s | 11s | 12s |
| 全体 | 53s | 51s | 48s | 52s | 55s | 43s | 41s | 43s | 42s | 39s |
ということで、若干 InnoDB の方が早くなりました。
CommentCustomField プラグイン v0.04(ラジオボタン・チェックボックス・プルダウンメニュー対応)
Category:[コメント, 拡張テンプレートタグ, 自作プラグイン]
Tag:[Comment, CommentCustomField, MovableType, Plugin]
Permalink
配布中の CommentCustomField プラグインをバージョンアップしました。
1.追加機能
追加した機能は次の通りです。
- コメント投稿フィールドに、ラジオボタン/チェックボックス/プルダウンメニューの項目選択用テンプレートタグの提供
- コメントプレビュー画面に、ラジオボタン/チェックボックス/プルダウンメニューのユーザ選択状態を表示するテンプレートタグの提供
- コメント表示フィールドへの投稿データ表示用テンプレートタグの提供
- ブログ管理画面に各フォームデータの初期値を設定可能
- 設定した初期値に選択状態(checked/selected)の設定が可能
- コメント編集画面で各入力値の編集が可能
この機能追加によって、コメント投稿者がラジオボタン/チェックボックス/プルダウンメニューから項目を選択したり、選択した項目をコメント一覧に表示できるようになります。
ラジオボタンの完成例

チェックボックスの完成例

プルダウンメニューの完成例

投稿コメントの表示例

また、ブログ管理画面では、各項目のデータ設定が可能です。

データを選択状態(checked/selected)にしたい場合は、各項目の直後にアスタリスク(*)を入力しておきます。

上記の選択状態を反映させたフォームの初期表示状態は次のようになります。

また、コメント編集画面で、入力されたデータの編集が可能です。

また、画像はアイテムとしての管理対象になり、本プラグインで追加した画像情報表示のためのブロックタグ MTCommentCustomFieldAsset で MTAsset 関連タグを組み合わせれば画像情報を自由に表示することができます。
2.ダウンロード
ダウンロードは下記のリンクからどうぞ。
Movable Type 4.32 リリース
Movable Type 4.32 がリリースされました。
Movable Type 4.32 Bug-fix Release + Zemanta plugin

以下のような修正が行なわれています。
- ユーザ登録が無効となるとき、キャッシュされた登録ページからのユーザ登録を許容します。
- Zemanta プラグイン(記事の内容に関連した画像を自動検索して表示・記事への挿入が可能)が追加されました。
- ダイナミックパブリッシングで MTIfArchiveTypeEnabled タグが正常に動作しない不具合を修正しました。
- 公開日フィールドの DatePicker(カレンダー)が壊れる不具合を修正しました。
今回は日本語版もリリースされています。ダウンロードリンクの一番右にある「other languages」からダウンロードできます。

Zemanta プラグインはプラグインの設定が必要なようですが、ブログ記事作成画面に移動すれば、未設定の状態でも動作します。















![Movable Type逆引きデザイン事典[4.2/4.1対応]](http://ecx.images-amazon.com/images/I/51p0cmzoLLL._SL160_.jpg)



