アファメーションで独立・起業・夢実現。「いきなり!社長宣言!!」-“夢は口に出すことで実現する!”というアファメーション: 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