MovableTypeの最近のブログ記事


ブログのphp化をする際に、それぞれの個別記事やアーカイブなどのアドレスが変わってしまう(xxx.html -> xxx.php)ために、自動的に移動するようにURLのリダイレクションを行いました。

また、MT4.1にアップデートしたときに、何故か以前のMT3.3のバージョンのものが検索サイトからのリンクで表示されることがあり、よく見てみると"_(アンダーバー)"が"-(ハイフン)"に置き換わっていることが解りました。このバグ(?)も今回一緒にURLリダイレクションで解決しようと思います。

具体的な方法

URLリダイレクションを実際には、.htaccessを用いて設定します。この詳しい解説は、

でされていますが、Redirect permanent によりHTTP ステータス 404(Not Found)のデットリンクにならないように、httpステータス301(MovedPermanently)を返すようにしようとしています。
実際の記述としては、

Redirect permanent /weblog/photo/archives/2007/09/post_8.html http://www.tetra-blue.net/weblog/photo/2007/09/post-8.php

Redirect permanentの後に、転送させたいファイルを.htaccessを置くディレクトリからのリンクを記述し、その後に転送させたいURLを書きました。今回は"_"+"html" or "-"+"html" -> "-"+"php" の組み合わせになるように整形しました。

転送するファイルは一つでは無いので、効率的に記述したいところで、いろいろなサイトで工夫がされていますが、今回は見直しが出来るように、自動的に設定させるよりも.htaccessのファイルに全部を記述したもの用意しました。一つ一つ記述するのはとても大変なので、一度MTタグで以下のように、

Redirect permanent x<$MTEntryPermalink$>y <$MTEntryPermalink$>

表示させてから、検索置換などでx,yを含めて整形しました。一つ一つの記事のアドレスごと書かれて出力しているので、異なるブログに移動・統合させたときに細かい整形が出来ました。

これで.htaccessをアップロード、再起動して、古いアドレスを打ち込んでみるとしっかりと移動してくれました。

movabletypeで動かしているサイトのPHP化はいろいろな所でみかけられますが、今までは特にかえるほどのことも無いかな、と感じていました。しかし、エントリー記事も多くなり再構築時にかなり重くなってしまい、その解消の一つとしてサイトをPHP化が挙げられていました。

PHP化については、MovableTypeをPHP化する - Movable Type 備忘録さんで詳しく説明されていて、まさにその"PHP化するメリット"で一番に挙げられています。また、デメリットについても影響は無さそうなので、サーバー移動と一緒にやってみることにしました。

手順

  1. サーバーでphpが動いているか確認。今回xreaのレンタルサーバーなので、問題なし。
  2. ブログの管理画面 -> 設定 -> ブログの設定 -> 公開  にて、"アーカイブの拡張子"を"php"にする。保存。
  3. ブログの管理画面 -> デザイン -> テンプレート -> メインページ にて、"出力ファイル名 "を"index.php"にする。保存。
  4. ブログの管理画面 -> デザイン -> テンプレート -> アーカイブインデックス にて、"出力ファイル名"を"archives.php"にする。保存。
  5. リダイレクションの設定(次のエントリーにて)。
  6. サイト全体を再構築。

あと、古いhtmlファイルの削除や共通部分の外部ファイル化などもありますが、とりあえず、この手順で動くようになりました。

あと、リダイレクションの設定をすることによって、xxx.html でアクセスしてきても、 xxx.php に自動的に移動するようになるはずです。

前回のエントリー(MTのシステムや再構築が重いなどの問題に対処)のやってみたことにあるように、同じレンタルサーバー内の新しいサーバーに移行してみました。メモしておこう。

xreaのレンタルサーバーを使用していますが、2年程前に登録したサーバーではCPUであったり、PHPなどインストールされているもののバージョンが古くなっていたり、ということで新しいサーバーは速いのだろうなと思っていました。そこで、"サーバーを引っ越してみた - blog.aklaswad.com"という記事を見つけ、移行可能なんだなということがわかり、これに沿って移行してみました。

手順

手順としては、先ほどのblog.aklaswad.comさんのエントリーのほぼ沿いましたが、一応メモします。

  1. xreaのドメイン総合サービスvalue-domain.comでドメインを取っているため、無料サーバーアカウントをもらえるので、新しいサーバーについて取得。
  2. 取得済み無料サーバーアカウントについて、自分のアカウント名をサブドメインにして、データベースに登録。
  3. 前のサーバーより、データベースをバックアップ。新しい日付のmysql.dumpが出来ていることを確認。
  4. 前のサーバーより、ファイルをディレクトリごとバックアップ。wgetやlftpなど使うと便利だった。
  5. 一応MTをバックアップ。一応なので、エクスポートを利用した。
  6. 無料サーバーは50MBなので、内容の移行をするために、XREA+(PLUS)のサービス権を新しいサーバーに移動する。
  7. 新しいサーバーにMTをインストール。
  8. 以前のサーバーにあったMTのブログディレクトリなどを、新しいサーバーのMTの適切なディレクトリにアップロード。
  9. 保存した以前のサーバーのデータベースmysql.dumpを新しいサーバーのユーザーのホームディレクトリにアップし、復元。
  10. mt.cgiを動かし、パスを設定。
  11. 取得ドメインtetra-blue.netのDNSをvalue-domain.comで、新しいサーバーに向ける。(メール関連も同時の行った)
  12. 新しいサーバーのサーバー設定:ウェブより、ドメイン名を設定する。(main : www.tetra-blue.net, sub1 : tetra-blue.net -> http://www.tetra-blue.net/ -- No.dir)
  13. 動作確認。OK。

プラグインの設定、カスタムフィールドの設定、画像のアイテム登録などはこの移行に含まれていないので、個別に編集しました。

少し更新が久しぶりになってしまいました。いろいろと忙しかったのと、システムを幾つか変更するのに手間取ってしまい、やっと新しい記事を書こうという気持ちになりました。幾つかやってみたことをメモしておこう。

問題点

MTを使い始めて2年弱なのですが、借りているサーバーのマシンを古く感じてしまったり、バージョンが新しくなり少し整合性がなくなったりと、幾つか感じるところがありました。具体的には、

  • 記事が多いblogの再構築がとても遅くなった
  • MTの古いバージョン(3.3)と新しいバージョン(4.1)とで、個別ページのサイトのURLが違っている("_"が"-"になっている)
  • 編集画面で重い、リッチテキストがなぜかうまく使えない

というようなところでした。

やってみたこと

それを解決するためにやってみたことは、

です。レンタルサーバーはxreaを使っているのですが、新しいサーバーが空いていたら移動出来そうなので移動してみました。そのことによりプロセッサが2つになって、少し速くなったような感じがする。

またシステムをPHP化することにより再構築がとても速くなり、以前は古いデザインのまま表示されていた個別サイトも新しい形で表示するように移行ができました。

あとは、記事の整理などしようと思ったのですが、なかなかやり切れていない状態でした。画像データの整理やカテゴリ、タグなど再考したほうが良い感じがします。(が、なかなか面倒であります)

それぞれについて、おいおいエントリーをアップしていくことにします。

サムネイル画像を拡大する時のエフェクトを入れてみました。小粋空間さんのLightbox JS で画像を表示するを参考に、"Lightbox 2"を入れてみることにしました。

1.Lightbox 2より最新のLightbox (v2.03.3)これをダウンロード。解凍。

2.ファイルの修正。
lightbox.jsの65,66行目付近にあるfileLoadingImageとfileBottomNavCloseImageの値を、画像ファイルの位置をダイレクトリンクで書き込む。(3.でアップロードする場所にする)

var fileLoadingImage = "http://www.xxx.xxx/lightbox/images/loading.gif";
var fileBottomNavCloseImage = "http://www.xxx.xxx/lightbox/images/closelabel.gif";

3.Lightboxをアップロード。
$MTBlogURL$の位置、つまりindex.htmlのある位置にフォルダごとアップロード。

4. デザイン>テンプレート>テンプレートモジュール
のヘッダーを開き、headタグ間に、

<script type="text/javascript" src="<$MTBlogURL$>lightbox/js/prototype.js"></script>
<script type="text/javascript" src="<$MTBlogURL$>lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="<$MTBlogURL$>lightbox/js/lightbox.js"></script>

を追加(インクルード)。保存。

5.CSSに以下のものを追加するが、blank.gif、prevlabel.gif、nextlabel.gifのアドレスついて、画像ファイルの位置をダイレクトリンク(3.でアップロードした場所)の位置に書き換える。

・http://www.xxx.xxx/lightbox/images/blank.gif
・http://www.xxx.xxx/lightbox/images/prevlabel.gif
・http://www.xxx.xxx/lightbox/images/nextlabel.gif

/* Lightbox 2.0 */

#lightbox{
position: absolute;
left: 0;
width: 100%;
z-index: 100;
text-align: center;
line-height: 0;
}

#lightbox a img{ border: none; }

#outerImageContainer{
position: relative;
background-color: #fff;
width: 250px;
height: 250px;
margin: 0 auto;
}

#imageContainer{
padding: 10px;
}

#loading{
position: absolute;
top: 40%;
left: 0%;
height: 25%;
width: 100%;
text-align: center;
line-height: 0;
}
#hoverNav{
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 10;
}
#imageContainer>#hoverNav{ left: 0;}
#hoverNav a{ outline: none;}

#prevLink, #nextLink{
width: 49%;
height: 100%;
background: transparent url(http://www.xxx.xxx/lightbox/images/blank.gif) no-repeat; /* Trick IE into showing hover */
display: block;
}
#prevLink { left: 0; float: left;}
#nextLink { right: 0; float: right;}
#prevLink:hover, #prevLink:visited:hover { background: url(http://www.xxx.xxx/lightbox/images/prevlabel.gif) left 15% no-repeat; }
#nextLink:hover, #nextLink:visited:hover { background: url(http://www.xxx.xxx/lightbox/images/nextlabel.gif) right 15% no-repeat; }


#imageDataContainer{
font: 10px Verdana, Helvetica, sans-serif;
background-color: #fff;
margin: 0 auto;
line-height: 1.4em;
overflow: auto;
width: 100%
}

#imageData{ padding:0 10px; color: #666; }
#imageData #imageDetails{ width: 70%; float: left; text-align: left; }
#imageData #caption{ font-weight: bold; }
#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; }
#imageData #bottomNavClose{ width: 66px; float: right; padding-bottom: 0.7em; }

#overlay{
position: absolute;
top: 0;
left: 0;
z-index: 90;
width: 100%;
height: 500px;
background-color: #000;
}
/* Lightbox 2.0(終わり) */

7.body タグの属性としてついている、onload="individualArchivesOnLoad(commenter_name) を削除。

8.</body> の直前に、以下のものを追加。

<script type="text/javascript"> <!-- individualArchivesOnLoad(commenter_name); //--> </script>

9.大きく表示させたい画像のリンク先に、rel="lightbox" の属性を加える。

10.再構築して、確認してみる。

IMG_19690_tokyoforum.JPG

クリックしてみると、効果が出るようになりました。なかなかかっこいいです。早速一部のものにですが植物blogの方にも入れてみています(二枚目の写真の方)。

(2008/04/26 加筆訂正)

本文を書いているうちに、長くなるものについてだらだらと書いているよりも、小さな見出しを付けてみたほうが見やすそうなので、サブ見出しを付けてみることにしました(というか、もうついていますが)。

MT4では本文中はasset-bodyで囲まれているので、この下に見出しタグとしてh4を、とりあえずcssファイルに書き込みました。

/* 本文中のサブ見出し */
.asset-body h4{
margin-top: 0;
padding: 0 0 0 10px;
font-size: 16px;
color: #666;
border-left: 5px solid #C1FFBE;
}
/* 本文中のサブ見出し(終わり) */

ということで、h4タグで囲むことにより、

サブ見出し

とすることができました。

前のエントリーHatena starを付けてみるで、はてなスターをつけてみたところ、更に良い方法があるということをはてなスターのお返事で教えてもらいました。

TREND SPOTTINGさんのMovable Type4にはてなスターを設置2なのですが、このとおりに設置してみると、あらま上手く行っています(こちらのサイトでテストしてみた)。

似たようなことをやったけれども、上手く行かなかった、、と思いましたが、"ブログ記事の詳細"と"ブログ記事の概要"両方にspanを付けなかったからかな。。前回方法では、二つのヘッダーのテンプレートを作るため、ヘッダーの内容を変える時に両方ともやらなければいけないので、こちらの方法に変えていこうと思います。

方法のメモ

1.はてなスターにアクセス。ログインして右上のBlogsをクリック。

2."外部のブログサイトを登録する"にblogのURLを入れ、追加する。

3.トークンが発行される。出てきたHTMLコードをコピーする。
MovableTypeの管理画面より、
 デザイン>テンプレート>クイックフィルタ テンプレートモジュール>ヘッダー
のheadタグの中に、コピーしたコードをペーストする。

4.トップページのタイトルの横に設置させるために、Hatena.Star.EntryLoader.header...以下の一行を加え、保存。以下のものがheadタグ内に加えられた。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>   <script type="text/javascript"> Hatena.Star.EntryLoader.headerTagAndClassName = ['span','star']; Hatena.Star.Token = 'your トークン';   </script>

5. デザイン>テンプレート>テンプレートモジュール>ブログ記事の詳細
の、"ブログ記事のメタデータ"のモジュールインクルードの上にある、

<h1 id="page-title" class="asset-name entry-title"><$MTEntryTitle$></h1>
を、
<h1 id="page-title" class="asset-name entry-title"><$MTEntryTitle$><span class="star"><a href="<$MTEntryPermalink$>" class="hidden">スター</a></span></h1>
に書き換え。保存。


6. デザイン>テンプレート>テンプレートモジュール>ブログ記事の概要
の、"ブログ記事のメタデータ"のモジュールインクルードの上にある、

<h2 class="asset-name entry-title"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h2>
を、
<h2 class="asset-name entry-title"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><span class="star"><a href="<$MTEntryPermalink$>" class="hidden">スター</a></span></h2>
に書き換え。保存。


7.再構築して、出てくるか確認。

TREND SPOTTINGさん、ありがとうございました。

Hatenaのサービスで、はてなスターというものがあります。はてなスターとは、

日々ブログを読んでいていいなと思っても、コメントを書いたりトラックバックを送るのは敷居が高く、気持ちが十分に書き手に伝わらずに終わってしまうことも多いでしょう。はてなスターは既存のブログにワンクリックで☆がつけられます。あなたのいいなと思った気持ちを☆に変えて、世界のブログに☆をつけよう! (はてなスターはじめてガイド - Hatena Star

というもので、ちょっと良かったなというエントリーに☆を付けてあげるというものです。このサービスを自分のblog内でも設置できるということなので、設置してみることにしました。


(追記)
改良版を、次のエントリー"Hatena starを付けてみる その2"にて行ってみています。そちらの方が変更点が少なく良いと思います。


方法は、MovableType4.1で設置しているTREND SPOTTINGさんのMovable Type4にはてなスターを設置を参考にしてみました。

1.はてなスターにアクセス。ログインして右上のBlogsをクリック。

2."外部のブログサイトを登録する"にblogのURLを入れ、追加する。

3.トークンが発行される。出てきたHTMLコードをコピーする。
MovableTypeの管理画面より、
 デザイン>テンプレート>メインページ>ヘッダー
のheadタグの中に、コピーしたコードをペーストする。

4.トップページのタイトルの横に設置させるために、Hatena.Star.EntryLoader.header...以下の一行を加え、保存。以下のものがheadタグ内に加えられた。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>   <script type="text/javascript"> Hatena.Star.EntryLoader.headerTagAndClassName = ['h2','asset-name']; Hatena.Star.Token = 'your トークン';   </script>

5.記事個別ページ用のヘッダーを作成する。まず、モジュールテンプレートにあるヘッダーの中身全てをコピーする。

6."モジュールテンプレート一覧"より"モジュールテンプレートの作成"して、上記をコピーする。

7.記事個別ページに合わせるように、下の行の'h2'を'h1'に書き換える。

Hatena.Star.EntryLoader.headerTagAndClassName = ['h1','asset-name'];

8."ヘッダー個別リンク用"などと任意の名前を付けて保存。

9.個別ページでの"ヘッダー"を作成した"ヘッダー個別リンク用"に変える。
 デザイン>テンプレート>アーカイブテンプレート>ブログ記事

<$MTInclude module="ヘッダー"$
を、
<$MTInclude module="ヘッダー個別リンク用"$>
に書き換え。保存。


10. デザイン>テンプレート>アーカイブテンプレート>ブログ記事>ブログ記事の詳細
の、"ブログ記事のメタデータ"のモジュールインクルードの上にある、

<h1 id="page-title" class="asset-name entry-title"><$MTEntryTitle$></h1>

を、
<h1 class="asset-name"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h1>

に書き換え。保存。


11.再構築して、出てくるか確認。

個別記事のタイトルを認識させるところが少しややこしい。はてなスターが必要とする情報は、タイトルとpermalinkのURLということですが、メインページと個別ページでタグとpermalinkが違っていて、それぞれに作る必要があった。メインページではタグがh2、個別ページではh1と異なり、また個別ページではタイトルにpermalinkされていないので、10.で追加させている。

Not quick a Nineさんのはてなスター付けましたでは、divタグでArticleTitleクラスを認識させているが、上手く行かなかった。。残念。そのため、ヘッダーのテンプレートを二つ作り、それぞれでタイトルを認識させようとしています。

ほとんど、TREND SPOTTINGさんのMovable Type4にはてなスターを設置のエントリーをなぞっただけですが、上手く行ったようです。良い記事がありましたら、☆を付けてもらえたらうれしいです。

引用するときに使用するblockquoteタグについて、少しcssをカスタマイズしてみようと思います。段が出来るだけで、あまり目立たないのでもう少し目立つようにしてみました。

blockquote {
margin: 10px 15px 10px 15px;
padding: 15px 25px 15px 25px;
line-height: 1.6;
font-size: 12px;
font-family: Verdana, Arial, sans-serif;
background-color: #E2BCFF;
border: #E2BCFF 1px solid;
}

これで、このように少し(結構?)目立つようになりました。
(blockquote内、少し整形しました)

サイドバーにトラックバックに関するものが表示されていなく、ウェジットを見てみてみてもどこにもありませんでしたので、"最近のトラックバック"のウェジットを作ってみようと思います。

最近のコメント一覧のツリー化もしているので、この"最近のトラックバック"でもツリー化してみようと思います。"最近のコメント"のウィジットを参考にしてみましたが、ポイントとして、

1.mt:IfNonZero tag="mt:BlogPingCount"
最近のコメントでは"mt:BlogCommentCount "だったところを、トラックバックの"mt:BlogPingCount"として、mt:IfNonZeroのトラックバックありの時だけ表示するようにしている。

2.トラックバックに使われているMTタグは、pingsという名前で使われている。

3.MTPings lastn="10"
MTPingsのモディファイアlastn="10"で10個の記事を表示することにした。

4.最近のコメント一覧のツリー化の時のようにjavascriptを入れる。引数を"trackbacklist"にした。

<mt:IfNonZero tag="mt:BlogPingCount"> <mt:PingsHeader> <div class="widget-recent-pings widget"> <h3 class="widget-header">最近のトラックバック</h3> <div class="widget-content" id="trackbacklist"> </mt:PingsHeader>


<ul>
<MTPings lastn="10">
<li><a href="<$MTPingURL$>" target="_blank"><$MTPingTitle$></a><br/>
from <$MTPingBlogName$> (<$MTPingDate format="%y/%m/%d"$>)</li>
</MTPings>
</ul>


</div>
</div>
<script type="text/javascript">
<!--
generateNormalTree("trackbacklist");
//-->
</script>

<mt:PingsFooter>
</mt:PingsFooter>
</mt:IfNonZero>

こんな感じで、ウィジットを作成してみました。そしてウィジットセットでサイドバーに入れてみると表示できました。(正確には、ホームページウィジェットの中に、mt:includeで最近のトラックバックのウィジットを入れました。)

Now reading...

ブログ進化論―なぜ人は日記を晒すのかAjaxとPHPによる MovableType高速&最強システム構築法Movable Typeでつくる!最強のブログサイト プラグイン&カスタマイズ編携帯ブログサイト構築ガイドブック

ウェブページ

リンクリスト

あわせて読みたい
Powered by Movable Type 4.1

tetra-blue.net
最近のエントリー

   
   

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMovableTypeカテゴリに属しているものが含まれています。

前のカテゴリはMailerです。

次のカテゴリはMovieです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Recent Activity