MT

マークアップエンジニアとかWEBディレクターとかをやってる僕が、自分が詰まって、解決したことをここに残しておきますよ。

MTIfで「AまたはB」で条件をつくる。OR条件。<Movabletype>

Movabletypeで、MTifタグを使って、一致する記事だけをひっぱってくるには以下のようにやるよね。

カスタムフィールドでつくったタグが
<mt:hogehoge>だとしたら

<mt:if name="hogehoge" eq="ホゲ">
</mt:if> 


 hogehogeというフィールドに入ってる内容が「ホゲ」だったときに表示する、みたいな分岐。

ここで、2つの文言にあうときの条件を作りたいとき、
例えば、「ホゲ」と「にゃん」どちらかが入力されている場合、というのを作りたいときはlikeをつかって以下のようにする。

<mt:if name="hogehoge" like="ホゲ|にゃん">
</mt:if>

 「|」←縦棒
で区切って likeであいまい検索をかける。




OKOK 

xamppでmovable type構築するときにイメージドライバーを設定する

windowsのローカル環境にMovable typeをインストールして使いたい。

となるとまず、XAMPPをインストールすることになる。
XAMPP

XAMPPだけだと簡易版のperlしか入っていなくてMTがちゃんと動かないらしいので、
Active perlというのを入れる。 

Active perl

windows環境で動くperlには、activeperlの他にstrawberry perlというのもあるのだけれど、入れてみたところ、環境パスが(strawbelly/)なんちゃらみたいになっちゃって困ったのでやめた。
MTのいろんなcgiファイルはデフォで、perlの環境パスが「usr/bin/perl」とかになってるから、それらを全部変更しないといけないのは壊れそうで怖い。

active perlはそのままインストールするだけでいつもの環境パスになった。

ここまででMTのインストール自体はできるけれど、ダッシュボードにエラーが出る。
「イメージドライバーが設定されていません」

ってやつ。

Image::Magickを入れろとか書いてある。

ここからが長い戦いになった。(結局は戦う必要なかったんだけど)

Image::Magickをダウンロードしてインストールしてみても、動かない。
どうやらperlとの相性問題というのがあるらしい。
調べてみると、最新のImage::Magickが動くperlのバージョンは、5.16.3というもの。

僕がインストールしたactive perlのバージョンは5.20だ。
active perlはなぜか旧バージョンのperlを有料で売っていて10万円を超えるから、すでに5.16.3を手に入れる事ができない。image::Magick使えない。。

詰んだ・・。

と思いきや詰んでいなかった。

なんと!Active perlの5.20にはすでにイメージドライバーが入っていたんだ!
「GD」というやつ。

Movable typeのダッシュボードのエラー表示をよーーーく見てみると、
イメージドライバーとして使えるもののリストに、
Image::Magickの他に、NetPBM、GD、ImagerでもOKとかいてある。

こんな簡単なことに気づかなかったなんて!

■解決策はimagedrierをgdにするだけ

mt-config.cgiをひらいて、適当なところに
以下の一文を入れよう。

ImageDriver GD

これでスッキリとエラー文は消えているし、
投稿画面でのサムネ機能も動いてる。

 僕の9時間はなんだったのか。

「XAMPPでMT構築するなら、イメージドライバーはGD!GD!GD!」 
 
3回は声に出して覚えよう。 

MTを組み込んだ時にチェックしたい11のリスト

MovableTypeの仕事を久々にやっていて、3年以上前につくったチェックリストが出て来たので共有。

1. トップページテンプレート側でのMultiBlogの再構築トリガーは設定してあるか。
2. 記事を削除してもトップに反映される、MTblogExtプラグインはいれてあるか。
3. ブログのエントリー画面で、不要なカラムは非表示にしてあるか。
4. 管理者とは別に記事投稿するためだけのユーザーアカウントは作ってあるか。
5. ユーザーアカウントではテンプレートなど余計なものが触れないように
 権限設定されているか。
6.  記事一覧ページではページ送り(pager)が適切に設定されているか。
7. エントリー画面でdivやpを入力されても、文字が変に崩れたりしないか?
  (line-heightなど)
8. エントリー詳細ページに行くと、サイドバーにあるカテゴリ一覧の数字が変化したりしないか。
9.  エディタプラグインは要望に応じて入れているか?
10. hタグがエントリーで使われた際に、適切な見出しになるようにcssが作ってあるか。
11. 共通で出てくる部分はモジュール化してあるか。 

こういうのってチェックリスト化しておかないと、属人化しちゃうんだよね。


 

さくらサーバーでMT(MovableType)引越しの手順

仕事でムーバブルタイプ(MT)の引越しをしました。
いろいろ壁にぶつかったので、それも含めて手順を書いておきます。 

■状況
・MT4の引越し(引越し先でもMT4を使う)
・さくらサーバーからさくらサーバー(別プラン)に引越し
・DBはMySQL

-------------------------------------------------------

①データ一式をローカルにダウンロード

旧サーバーにFTP接続し、全データをローカルにダウンロードします。
生成されたHTMLファイルやMTのファイルもすべてダウンロードで、僕の場合は、30000ファイルありました。
30分ほど時間がかかりました。



②新サーバーにアップ

引っ越し後の新サーバー にFTP接続し、全データをアップします。
また30分まちます。
アップが終わると、MTはまだ使えないものの、見た目は、新しいサーバーで見られるようになります。



③新サーバーでデータベースを作る

新サーバーのサーバー管理画面にログインし、データベースを作成します。
さくらなので、サイドメニューの「データベース」のところから、作成しました。
旧サーバーの管理画面にログインしてサーバーを見てみると、MySQL4というのを使っていたのですが、新サーバーではMySQL5.5しか作れないらしい。
でも、不具合はでませんでした。
データベース名、データベースユーザー、パスワード をメモっておく。



④ mt-config.cgiをひらいて新しいサーバー用に設定情報を変更

mt-config.cgiには、データベース情報やサーバーパスなどが設定してあるので、エディタでひらいて、あたらしく作った新サーバーのDBに書きなおす。
サーバーパスも書きなおして新サーバーにアップする。

FTPソフトでcgiファイルを一気に指定して、パーミッションを755とか705とかに変更する。



⑤xxx.com/mt/mt.cgiにアクセス

こっからインストールをするわけですが、僕はエラーが置きました。
505エラー。
cgiのパーミッションが正しく設定されていなかったり、perlへのパスが間違えていたりが原因、とあるが、なんど確認しても間違えていない。

新サーバーでperlが使えないはずがないと思いつつ、念のため、pcheck.cgiで試す。

pcheck.cgiをアップして、アクセスしたところ、mt.cgiには問題がないことを確認。

結局問題はhtaccessとhtpasswdの設定が旧サーバーのままになっていた、ということで、MT管理画面にベーシック認証をかけている方ははまらないように気をつけてください。

いったんhtaccessとhtpasswdを削除して、次へ進む。



⑥インストール

あらためて、mt.cgiにブラウザでアクセスして、インストールを進める。
ブログ名は適当でOK。(あとで消すので)。
僕はMy first blog のままインストールした。



⑦プロフィールを旧MTに合わせる。

ここから、旧MTから新MTへのいろいろな設定情報を引越しさせていく。
まず、管理者のプロフィールを旧MTから新MTにコピペする。



⑧旧MTのバックアップファイルを作成

旧MTにログインする。

システムメニュー>バックアップ
を選択する。(エクスポートよりもバックアップのほうがいろいろな設定情報ごと引越しできていいらしいです)

圧縮フォーマット → 圧縮しない
出力ファイルのサイズ → 分割しない

に設定して「バックアップを作成」をクリック。
待ちます。

「tmpディレクトリに吐き出しました」的なメッセージが出ますが、どこに出てきたのか見つかりません。

mt-config.cgiにtmpの設定をしないといけないみたいで、ここを参考にmt-config.cgiにtempdirを設定。

TempDir /home/xxx/mt/tmp/
ここでバックアップをとろうとすると、エラーがでてしまう。

FTPソフトで、mtディレクトリ下に、tmpディレクトリを作って、パーミッションを変更しておく必要があるらしいので、作ってパーミッションを755とかにしておく。

バックアップファイル作成がうまくいき、tmpディレクトリ内にたくさんのファイルができている。



⑨tmpディレクトリ内の全ファイルをダウンロード

さっそくローカルに全ファイルをダウンロード。



⑩新サーバーにtmpダウンロードしたファイルたちをアップロード

新サーバーにFTP接続し、mtディレクトリの直下にある、importディレクトリ内に、tmp内のファイルをすべてアップロードする。



⑪新MTで復元

新MTにログインし、
ツール>復元
で復元をする。
このとき、ファイルは選択しないでOK(import内にアップしたので)
「グローバルテンプレートを上書きする」にはチェックをいれておく。

ここでまたエラーが出た。

ログをみろ、と言われたので
ツール>ログ
を確認すると、29283行目でエラーがあるよ、的な記述。

アップしたtmpディレクトリ中身のなかに1つだけxmlファイルがあるはずなので、それをエディタで開く。
すごいでかいファイルがひらかれる。
その中の29283行目を確認すると、エントリー本文で使っちゃいけない文字をつかってるっぽくて、よくわからないので、29283行目の<text>〜</text>の中身をすべて削除。

あらためて、importディレクトリにtmp内をアップロードして、もう一度復元。

今度はうまくいく。



⑫エラーがでる

「Request URL too large」というエラーがでる。
引っ越しするためのデータ量が多すぎて出ているらしいのですが、これが出ても引越しは完了している、というを知る。



⑬気にせず再構築しまくる

新MTでシステムメニュー>ブログ
をクリックすると、ブログは全部あるらしい。
でも、左上のプルダウンからはでてこないので、とりあえず、全部のブログを再構築する。




以上で、なんとか引越し完了しました。


 

MTはモジュール化したほうが再構築が早くなる

これはどうやら本当なようです。

最近のお仕事で、

一つのテンプレート内のソースが2万行以上、というものがありました。

条件分岐を繰り返すために、それだけ長くなってしまったもの。

そのテンプレート1つで再構築時間は40分!

これじゃぁ、更新が嫌になっちゃいます。



繰り返しの中にも共通している部分があったので、そこを 
モジュール化してみて、

100行ほどあった共通ブロックをすべて、

<MT Include module="共通ブロック">
で共通化し、テンプレート自体のソースは2000行にまで減らしてみたら、

再構築時間が

5分になりました!

再構築が長いなーと思ったら、迷わずモジュール化せよ!
記事検索


手ぶらで通話 - bluetoothヘッドセット

1時間1円で暖かい。電気毛布。

夏のPC仕事のおともに冷えピタ。クールヘッドで脳のスピードがあがります。

お仕事のご依頼・お問い合わせはこちら

コーディングのお仕事が得意です。

info(あっと)tacshock.com
タグクラウド
QRコード
QRコード
  • ライブドアブログ