アファメーションで独立・起業・夢実現。「いきなり!社長宣言!!」-“夢は口に出すことで実現する!”というアファメーション: 2009年11月

2009年11月28日

MT3.3からMT4.261、そしてMT5へアップグレード。

成功者になるための必読ブログとは?

祝!MT5正式リリース

ちょっと前にMT5のベータ版をまっさらな状態でインストールしてちまちまいじってみましたが、先日MT5が正式にリリースしたので、当ブログもアップグレードしてみました。

っつか、開設当初はMT3.xで、そのあと3.3まではバージョンアップしたんだけど...ブログとして使うだけだったら別にいいかなーっと思って、ずっとそのまま放置プレイ。

MT3.3から、一気にMT5にアップグレードもできなくはないみたいなんだけど、念のためにいったんMT4.261にしてからアップグレードしました。

DBをどうする?(SQLiteとMySQL5)

ちょっと気にかかっていたのが、MT5からDBがMySQL5オンリーになったこと。

このブログはロリポで運営してるので、ずっとSQLiteでデータを管理してました。
MT5のリリースにあわせてロリポ側もMySQL5を導入したらしいんだけど、DBの変換やらなんやらめんどくさいなーと。
(あと、ネットのうわさではロリポのMySQLは尋常じゃないぐらい遅いっていうし...)

小一時間考えたあげく(...うそ。そんなに考えていないw)、前回ベータ版で、非公式ながらSQLiteでも動いてたので、とりあえずバックアップも全部とってあるし、DBをSQLiteのままでアップグレードにチャレンジしてみました。

やったことはめちゃくちゃ簡単。

1、新規でcgi用のディレクトリにmtフォルダを作成し、MT5のデータをアップロード。

2、んで、バックアップを取っておいたmt-config.cgiとdbファイルを前と同じ階層にアップロード。

3、.cgiファイルのパーミッションを700に変更して、あとはmt.cgiにアクセス。

4、アップグレードの画面が表示されて(英語)、そのままコンティニューボタンを押したらアップグレード作業の開始。

5、お茶でも飲みながら待っていると...とくにエラーらしきものも出ず終了。

6、んで、改めてログイン画面で以前のIDとPWでログイン。管理画面がMT5に変わっているので、どうやら無事にアップグレードができたようです。(パチパチ)

非推奨のSQLiteを使っている...ってことにちょっと気持ち悪さを感じますが、とりあえず動くなら、あとでDBを変えてもいいかなーってことで良しとします。

MT5についての詳細はまた後日。
(まぁ、MTのすごい人たちがガリガリ書いてくれてるけどねw)

 

投稿者 kuro : 20:16 | 固定リンク | ID:807

ページトップ△

2009年11月 9日

MT(MTOS)の管理画面のカスタマイズのときにぶつかった問題とその解決法。

成功者になるための必読ブログとは?

MTの管理画面をカスタマイズする。

MTベースで「ブログ」ではなく、ちょっとしたサイトを構築しようとすると、ついつい欲が出てくるのが管理画面のカスタマイズ。

製品版のMTであれば、カスタムフィールドを使って拡張していけばいいんだけど、MTOSの場合は独自にプラグインを作って、さらに管理画面にも手を入れていかないといけない。

まぁ、いろいろと勉強にもなるのでそれも楽しいけどね。

んで、管理画面にいろいろな情報を表示させたいときにMTタグを使いたくなることがあるんだけど、どうやらそのまま使えるタグと使えないタグがあるらしい。

管理画面にアイテム(画像)の一覧を、アイテムにつけたタグごとに表示させたい!

今回ハマッたのは「Asset」系のタグ。

「ブログ」にぶら下がっているアイテム(画像)の一覧(サムネイル)をエントリーの管理画面に表示させたいと思い、まずは実験で「メインページ」のテンプレートに以下のコードを記述。
(画像にタグ「profile」「gallery」を設定して、各タグごとに画像をピックアップ。さらに画像数をカウントして、インデックスNoも表示するようにしています。)

<mt:SetVars>
blogID=<$mt:BlogID$>
profimgMaxNum=3
profimgcount=0

imgMaxNum=20
galleryimgcount=0
</mt:SetVars>

<dl>
<dt>プロフィール用画像</dt>
<dd>
<mt:Assets sort_order="ascend" sort_by="created_on" type="image" tag="profile" lastn="$profimgMaxNum" blog_ids="$blogID">
<mt:AssetsHeader><ul class="imglist"></mt:AssetsHeader>
<MTSetVar name="profimgcount" op="++">
<li><a href="<$mt:AssetURL$>"><img src="<$mt:AssetThumbnailURL width="24" square="1"$>" alt="<$mt:AssetLabel encode_html="1"$>" /></a><br /><$MTGetVar name="profimgcount"$></li>
<mt:AssetsFooter></ul></mt:AssetsFooter>
</mt:Assets>
</dd>
<dt>ギャラリー用画像</dt>
<dd>
<mt:Assets sort_order="ascend" sort_by="created_on" type="image" tag="gallery" lastn="$imgMaxNum" blog_ids="$blogID">
<mt:AssetsHeader><ul class="imglist"></mt:AssetsHeader>
<MTSetVar name="galleryimgcount" op="++">
<li><a href="<$mt:AssetURL$>"><img src="<$mt:AssetThumbnailURL width="24" square="1"$>" alt="<$mt:AssetLabel encode_html="1"$>" /></a><br /><$MTGetVar name="galleryimgcount"$></li>
<mt:AssetsFooter></ul></mt:AssetsFooter>
</mt:Assets>
</dl>

結果は…無事タグごとにサムネイル画像をlastn枚表示させることができました。

んで、そのままエントリーの管理画面(edit_entry.tmpl)に移植して表示させようとすると…

なぜか表示されず。...orz

ネットでいろいろ調べた末に、コードの書き方がいけないのかと思い、以下のように修正。

<mt:SetVars>
blogID=<$mt:BlogID$>
profimgMaxNum=3
profimgcount=0

imgMaxNum=20
galleryimgcount=0
</mt:SetVars>

<dl class="imglist-dl">
<dt>プロフィール用画像</dt>
<dd>
<mt:Assets type="image" sort_order="ascend" sort_by="created_on" blog_ids="$blogID">
<mt:AssetsHeader><ul class="imglist"></mt:AssetsHeader>
<mt:AssetIfTagged tag="profile">
<mt:SetVar name="profimgcount" op="++">
<li><a href="<$mt:AssetURL$>"><img src="<$mt:AssetThumbnailURL width="24" square="1"$>" alt="<$mt:AssetLabel encode_html="1"$>" /></a><br /><$MTGetVar name="profimgcount"$><!--<br /><mt:AssetTags><$mt:TagName$></mt:AssetTags>--></li>
</mt:AssetIfTagged>
<mt:AssetsFooter></ul></mt:AssetsFooter>
</mt:Assets>
</dd>

<dt>ギャラリー用画像</dt>
<dd>
<mt:Assets type="image" sort_order="ascend" sort_by="created_on" lastn="$imgMaxNum" blog_ids="$blogID">
<mt:AssetsHeader><ul class="imglist"></mt:AssetsHeader>
<mt:AssetIfTagged tag="gallery">
<mt:SetVar name="galleryimgcount" op="++">
<li><a href="<$mt:AssetURL$>"><img src="<$mt:AssetThumbnailURL width="24" square="1"$>" alt="<$mt:AssetLabel encode_html="1"$>" /></a><br /><$MTGetVar name="galleryimgcount"$><!--<br /><mt:AssetTags><$mt:TagName$></mt:AssetTags>--></li>
</mt:AssetIfTagged>
<mt:AssetsFooter></ul></mt:AssetsFooter>
</mt:Assets>
</dd>
</dl>

すると、今度は表示ができました!

画像の枚数が合わない!?(lastnがかぶってる?)

やったーっ!と喜ぶのもつかの間、今度はなぜか各タグごとの画像表示枚数が合わない。

まぁ、良く考えたら当たり前のことで、両者とも「mt:Assets」で画像を呼び出して、ブロックの中でタグによる振り分け(mt:AssetIfTagged)しているので、どうやらlastnのモディファイアがかぶってしまい、画像全体の最大値として「lastn」をカウントするらしい。上記の例だと、本来profileが3枚、galleryが20枚で画像の総数が23枚だけど、lastnが全体で20になってしまうのでgalleryの画像が17枚しか表示されない。
(…って、イマイチうまく説明できない。汗)

結局、管理画面には画像のサムネイル一覧が表示できないのかっ!そうなのかっ!!と悶絶しながらネットで調べたところ、すばらしい回避法(プラグイン)を発見!

まさに望んでいた機能を持つプラグイン「CMSContext」

MTの制作会社で有名なアルファサードのjunnamaさんの「CMSContext」プラグインというもので、ざっくり言うと管理画面で通常の(?)MTタグを使えるようにするためのプラグインです。

使い方はいたって簡単。プラグインDL後、ファイル一式(CMSContextフォルダごと)をプラグインディレクトリにインストール。

すると「mt:cmscontext」という独自ブロックタグが使えるようになるので、そのブロックの間に、通常のテンプレートに記述するようにMTタグを書くだけ。

あとは、管理画面の代替テンプレートを指定ディレクトリ(plugins/CMSContext/tmpl/)にアップロード。

うーん。まさに望んでたことそのまま!

先ほどのサムネイル一覧の表示の例だと、最初に書いたコードを<mt:cmscontext>~</mt:cmscontext>の間に記述するだけで、各タグごとのサムネイルをlastnで制限した枚数、なんなく表示させることができました。

こんなにすばらしいプラグインを開発したjunnamaさんに感謝!

ちなみにこのプラグイン、さらにすごい便利な機能として、ブログごとに管理画面の体裁を変えたいというようなときも、代替テンプレートを各ブログ毎に用意して、別々のディレクトリに保存(「plugins/CMSContext/tmpl/hoge/」「plugins/CMSContext/tmpl/nya/」など)して指定することで、ひとつのMTでまったく違う管理画面を持つCMSを作ることができる。

うむぅ…これってすごく便利。

 

投稿者 kuro : 12:52 | 固定リンク | ID:806

ページトップ△