BlogTop > MovableType > mt4 Archive

mt4 Archive

Movable type 4.x は、2011/11/26 で製品ライフサイクルを終了しています。
詳しくは、MovableType.jpの Movable Type のプロダクト・ライフサイクルポリシーについて を参照してください。

3 of 5

< Previous PageNext Page >

すべてのページ

今月のいらんことしい(2008年10月)

今月(2008年10月)サイト内でカスタマイズした箇所を中心にまとめたページです。

  1. MovableTypeのアップデート 4.21>4.22
  2. blog chart貼ってみた
  3. FOAFのページのフッター部分、(c)の表示を特殊文字[©]で表示するようにしてみた。
  4. jQuery Feed Menusをサイトトップ等に設置

MTのアップデートはいらんことでないだろう、というツッコミplz(意味不明)なんですけど、 今月は特筆するほどの内容があまりないので一応いれときます(謎) 重要なセキュリティアップデートということで気づき次第おこないました。

参考

ブログチャートですけど、ただ何となくいれてみたくなったので入れてみました。個人的にランキングとか興味ないんですけどね。日本人特有の同調性とか(これまた謎)いうやつですかねぇ#飽きたらすぐ外すかも

どうでもいいことでなんですが、FOAFのページはXSLT使ってたんですけど、コピーライトのところの表示が面倒だったので(c)と書いていて、©になるようにしてみました。

「水無月ばけらのえび日記」の以下のページによりますと、数値文字参照を書くと定義しなくても使えるそうでして、

Character entity references in HTML 4を参照しましたところ、

<!ENTITY copy   CDATA "&#169;"

とありましたんで、その場所に&#169;といれてみたら©が表示されるようになりました。でもって、現在は面倒なほうで表示させてたりします。

jQuery Feed Menus は以下のページからダウンロードできます。解説もありますし(英文だけど)、ダウンロードファイルにサンプルのHTMLファイルも同梱されてます。

フィードが複数あるページで、link要素によるオートディスカバリーの記述を元にプルダウンメニューを描画してくれるものです。

複数のフィード登録のためのリンクボタンをひとつにまとめるとこができるのでいいでないかと思いました。

ここのブログではやってませんが(先般、オートディスカバリーをAtomフィードのみにすることにしたのでやってもいいけど意味がない)、当サイト内ですと、トップページ(www.markdiary.com) とその周りのページあたりで埋め込むことにしました。

MTIf var=て何?

条件文を作成するときにつかうMTIfタグですが、var=fooといった使い方もあるみたいです。

MTIfを使うときは、MTSetVarに設定した変数あるいはMTSetVarBlockMTSetVarTemplateの変数を利用して条件分岐をさせることになります。

テンプレートタグリファレンスに記載されていますようにモディファイア、name="foo"必須ということになっています。

そこまでは、テンプレートタグの説明の復唱でしかないんですが、<MTIf var="foo">といった書き方があることにこの前気づきました。

これ以降示す内容はどうでもよさげな話になります。自分でもやっているうちにどうでもよくなってきましたし。興味がありましたらお付き合いいただけたら幸いです

ActionStreamsプラグインのexample_templatesのなかにMTIf var=といった書き方がなされている箇所があります。その後の変更がなければ、code.sixapart.comの以下のページで確認できます。

ソースを見てみると、以下のようになっています。

<mt:setvarblock name="this_date"><mt:StreamActionDate format="%A"></mt:setvarblock>
<h2 class="action-stream-header asset-name">
<mt:if var="this_date" eq="$today_date">
Today
<mt:else>
<mt:var name="this_date">
</mt:if>

で、このIf var=って何?ということになったわけです。これがActionStreamsのテンプレートセットのメインインデックステンプレートだと、以下のようになってました。

MTIfの箇所のみ抜きだしてみます。*インデントのための空白は当方で削除

<mt:if name="$today_date" eq="$this_date">
Today
<mt:else>
<mt:var name="this_date">
</mt:if>

この場合だと、today_dateという変数の結果を比較対象にしてるといった感じでしょうか。このコードの前に<mt:setvarblock name="today_date"><mt:Date format="%B %e"></mt:setvarblock>というのがあって、today_dateという変数へテンプレートが再構築された日付を入れるといったことがおこなわれてます。

ここのとこでしばらくハマっていたのですけど、4.21にしてから(なのか前からかわからないけど)自分の環境で「Today」という表示が出なかったのです。そこで、サンプルのテンプレートを見たところIf var=となっていましたので書き直ししたら、Todayが表示されるようになってました。

で、以下に一連の動作確認のためだけに作ったテンプレートを置いておきます。確認はMTOS4.21+InstaMTなんかでやってました。と、ここまでやってきたものの、なんだかやってるうちにわからなくなってきたのと、そもそもActionStreamは気が向いたときにしか更新しないようにしちゃいましたので、Todayが表示される確率を考えると、条件分岐の意味がないことに気づき、結局対象となるMTIfタグは撤去してしまいました。

<html><head><title></title></head>
<body>

<mt:ignore>###### 再構築時刻を「date1」と「date2」へ ###########</mt:ignore>
<mt:setvarblock name="date1"><MTDate language="en"></mt:setvarblock>
<mt:setvarblock name="date2"><MTDate language="en"></mt:setvarblock>

<mt:ignore>###### if name="foo" の場合 ######</mt:ignore>
<p style="color:red"><mt:if name="$date2" eq="$date1">today<mt:else><mt:var name="date2"></mt:if></p>
<p style="color:green"><mt:if name="date2" eq="$date1">today<mt:else><mt:var name="date2"></mt:if></p>

<mt:ignore>###### if var="foo" の場合 ######</mt:ignore>
<p style="color:blue"><mt:if var="date2" eq="$date1">today<mt:else><mt:var name="date2" /></mt:if></p>

<mt:ignore>###### モディファイアがきいているかちょっとテスト ######</mt:ignore>
<p><mt:if var="date2" ne="$date1"><mt:var name="date2" /><mt:else>(&gt;_&lt;)</mt:if></p>

</body>
</html>

[追記]nameのエイリアスのようでした。参考

記事投稿者によるコメントのときおよび返信コメントにclass属性

コメンテーターが記事投稿者である場合や記事投稿者が返信コメントしたときならびにゲスト投稿者が返信コメントをしたときclass属性を付与するというのを試してみました

コメントの種類を分ける

Movable Typeのシステムが受けとったコメントの種類を分類してみます。色々なわけ方があるかと思うのですが、ここでは、コメンターが記事作成者なのかそうではないのか、というところに重点を置いて、起こり得る事象で分けてみます。

*記事作成者以外のコメンテーターをここでは便宜上「ゲスト」としておきます

コメントの返信機能を利用していない場合

  • ゲストによるコメント
  • 記事作成者によるコメント

これに対して、コメントの返信機能を利用した場合、コメントの種類が少し増えて以下のようになります

コメントの返信機能を利用している場合

  • ゲストによるコメント
  • ゲストが誰かのコメントに返信したコメント
  • 記事作成者によるコメント
  • 記事作成者が誰かのコメントに返信したコメント

コメントの種類によってclass属性を与えることを具体的にまとめると以下のようなものです。

クラス名などはこちらで適当につけたものなので適宜かえたらよいかと。

  • 返信コメントには、class="comment-reply"
  • 記事投稿者がコメントしたとき、class="entry-author"
  • 記事投稿者が返信コメントした場合はclass="comment-reply entry-author"

コメントのテンプレートの書き換え

MT4.2のデフォルトテンプレートの例で説明します。コメント返信の機能を利用しているものとして

コメントのテンプレートモジュール(comments.mtml)から以下のようなコードの行を探します。

<div id="comment-<$mt:CommentID$>" class="comment<mt:IfCommentParent> comment-reply</mt:IfCommentParent>">

コメントが記事投稿者である場合は、MTIfCommenterIsEntryAuthorというテンプレートタグを使ってclass属性を付与してみます。

<div id="comment-<$mt:CommentID$>" class="comment<mt:IfCommentParent> comment-reply</mt:IfCommentParent>
<MTIfCommenterIsEntryAuthor> entry-author</MTIfCommenterIsEntryAuthor>">

*横に長くなるため途中改行しています。

あとはスタイルシートでお好みのスタイル指定でカスタマイズすれば、コメントの状態の表現が可能ということになります。

実際におこなってコメント欄にも付与されたクラス名を出力させてみた結果を以下のキャプチャにて示します。

comments-authorreply.gif

ここでのカスタマイズでは、単にclass属性の属性値を複数与えることでスタイル分けしようとする(#なんちゃってスレッド風みたいな)ものですが、構造的にコメントを階層化したいときはMovableType.jp の以下の記事が参考になります。

テンプレート入れ替えとその顛末

  • Posted by: maRk
  • mt4 | plugins
  • はてなブックマークに追加

Vicunaのテンプレートを、MT4.2(4.21)に対応すべく、既存のものに追加する形で入れ替えしました。結果とそのなかでおこったことなどを

カスタマイズが多いということ

MTのバージョンも4.2になったことなので、テンプレートもmt.VIcunaにかえてみようとおもいました。で見た感じだとわかりにくいのかもしれないけど、ここではわりとテンプレート弄ってるものだから、元の姿とだいぶ変わってる箇所があります。

手順どおりでmt.Vicunaのテンプレートセットを入れ替え作業をするときにこちらが困る点はというとこれ。

  • 手順どおりにテンプレートセットを丸ごと変えてしまうと、これまでに作ったカスタムテンプレートが消えてしてしまう

テンプレートセットでの入れ替えは、手軽で簡単におこなえるし、クリーンインストールという意味ではいいのかも知れないんですけど、カスタムテンプレートが多いとそこからもとの状態に近づける作業時間が追加されることになるです。

そのために、一部テンプレートだけ差し替えをおこなってテンプレートの初期化をするという方法もあるわけですが、これもカスタマイズの箇所が多いと差分をとったりするのも結構手間だったり。でもまあ手間かけずに済まそうというならデフォルトのまま使えよ、とかいわれそうなんですけど。

テンプレッツプラグイン使ってみる

このようなときに、もしかして救世主?とおもったのが、Templetsプラグインなんであります。なお、プラグインについてはOgawa::Memorandaさまの以下のページを参照します。

このプラグインを使うことで、必要なものを既存のものに追加という形がとれますから、自分がカスタマイズして追加したテンプレートを残したまま、新しいテンプレートを追加することも可能となります。

入れ替え作業は難航?

それで、アーカイブリストのテンプレートとウィジェットを追加することをまずはやってみました。

おこなう前にcofig.yamlファイルの書式を理解する必要があって、これを理解するのに少し時間かかってしまいました。ローカルでテストしてたら、YAMLファイルが正しくないためにシステムがエラー返してましたし。(汗

あと、いきなり表示崩れとかやってしまいました。それは前のテンプレートでDIV要素が途中で切れる形になってモジュール化されてた箇所が原因で、当方がその部分すっかり忘れてたんですね。

結果として、テンプレッツの追加そのものはうまいことできました。ただ部分的なテンプレートの構造がわかってなかったためにヘマしてただけでした。

おわりに

教訓として、テンプレートを差し替えるときは、中身をそっくり替えてから、バックアップされたファイルなどを戻すほうが無難そう。あと、自分が弄った箇所が後からわかるようにメモに控えておくか、差分が取り易いようにカスタマイズをおこなったあとでローカルにファイルとしてとっておくのもいいかも。それと、テンプレートのコピー機能とかもうまく使いたいかな。

EntryCategoriesタグを改良するプラグインを使ってフォルダ一覧のリストを表示

  • Posted by: maRk
  • mt4
  • はてなブックマークに追加

The blog of H.Fujimotoさまにて公開されている、EntryCategoriesタグを改良するプラグインを使って、ウェブページが属しているフォルダの一覧を表示させるためのウィジェットを試してみました。

プラグインの入手とインストール

The blog of H.Fujimoto の壱さま提供のプラグインです。以下ページにダウンロードならびにインストールの説明があります。

ダウンロードしたファイルを解凍してできた、「EntryCategoriesEx」フォルダをフォルダごとMTシステムのディレクトリのpluginsディレクトリにアップロードでインストールは完了です。

ウィジェットの作成

ウィジェットテンプレートを新規に作成します。テンプレート名はFolder Linkとしました。これは任意で自分がわかる名前でよろしいかと。

ウィジェットの本体はVicunaテンプレートにあわせた形で以下のようなものです。ulエレメントにはclass名は適当なものです。


<mt:If tag="FolderLabel">
<MTPageFolderEx>
<dt class="widget-header">List of <$MTFolderLabel$> folder</dt>
<dd>
<MTPages>
<MTPagesHeader><ul class="folderList"></MTPagesHeader>
<li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li>
<MTPagesFooter></ul></MTPagesFooter>
</MTPages></dd>
</MTPageFolderEx>
</mt:If> 

ウィジェットの設定とインクルード

ウィジェットのキャッシュ設定

説明によりますと、MT4.2において、上記ウィジェットには以下のような設定をしておくとのことです。

参考

テンプレートの設定を展開させて、「作成または更新後に無効にする」を選択して「ウェブページ」と「フォルダ」にチェックを入れます。

ウィジェットをインクルード

インクルードさせたいところに、ウィジェットをインクルードさせるコードを挿入します。Vicunaテンプレートだと、ユーティリティの<dl class="navi">のあたりに。

インクルードするためのコードは壱さんのページに書かれていますが、以下のようなコードです。

<MTIfArchiveType archive_type="Page">
<MTPageIfFolder>
<MTSetVarBlock name="page_folder_id"><MTPageFolderEx>page_folder_<$MTFolderID$></MTPageFolderEx></MTSetVarBlock>
<$MTInclude widget="Folder List" key="$page_folder_id"$>
</MTPageIfFolder>
</MTIfArchiveType>

ページ自体が少なくてアレですが、このような結果になりました。

このエントリは以下のページを参照しました。

4.2のコメント・リプライお試し

Movable Type4.2でデフォルトテンプレートのコメントについてきている、コメントへの返信の機能ですが、現在製作中のmt.Vicuna 2.2.0のテンプレートをお借りしてためしてみました。

製作中のテンプレートは以下よりダウンロードさせていただきました。尚、最新版はスレッドの新しいポストのほうにあるようです。あとテスト版とのことですので、導入についてはよく検討したうえでつかわれたほうがよいかと。

詳細は割愛しまして、本題のコメントの部分ですが、4.2のデフォルトテンプレート(comments.mtml)にはコメントされた方に対してリプライするためのコードが記述されています。で、それにあわせて改造してみた次第。#気早?なもので

以下のようなコードを該当箇所に差し替えてみました。テスト環境で動いていたというだけで実際の動作に自信はないんですが。

<MTIgnore>### Comment Logs ###########################################</MTIgnore>
<MTIfNonZero tag="MTEntryCommentCount">
<dl class="log">
<MTComments>
<dt <MTIfArchiveTypeEnabled archive_type="Individual">id="comment-<$MTCommentID$>"</MTIfArchiveTypeEnabled>>
<span class="name">
<MTIfNonEmpty tag="CommentAuthorIdentity">
<$mt:CommentAuthorIdentity$>
</MTIfNonEmpty>
<mt:IfCommentParent>
<span class="vcard author"><$mt:CommentAuthorLink default_name="Anonymous" show_email="0" spam_protect="1"$></span> replied to <a href="<mt:CommentParent><$mt:CommentLink$></mt:CommentParent>">comment from <mt:CommentParent><$mt:CommentAuthor$></mt:CommentParent></a>
<mt:Else><span class="vcard author"><$mt:CommentAuthorLink$></span>
</mt:IfCommentParent>
| <span class="date"><a href="<$mt:CommentLink$>"><$mt:CommentDate$></a></span>
<mt:IfCommentsAccepted>
| <$mt:CommentReplyToLink$>
</mt:IfCommentsAccepted>
</span>
</dt>
<dd<MTIfCommentParent> class="reply"</MTIfCommentParent>><$MTCommentBody$></dd>
</MTComments>
</dl>
</MTIfNonZero>

以下のような表示になりました。

comments-reply.gif

Click to Enlarge

MT4.1xからMT4.21にアップグレード完了

  • Posted by: maRk
  • MovableType | mt4
  • はてなブックマークに追加

使っているMovable TypeのバージョンをMT4.21にアップグレードしました。

シックスアパート(SixApart)よりMovable Type4.21出荷とのアナウンスがありました。

というわけで、バージョンを4.21にすることにしました。ダウンロードはECバイヤーズにて、コミュニティ管理機能を持たない、Movable Type Commercial 4.21のほうでダウンロードしました。

購入等についてはシックスアパートの以下のページを参照

メモのようなもの

データバックアップ等済ませたあとに、MT4.21をアップロード。アップロードには、zipファイルをサーバ上で解凍する- あにめはっく.jpにて、zipファイルでサーバ側で解凍できるとのことなので参考にしましてSSH接続を使ってやってみましたらうまくできてアップロードの時間は短縮することが出来ました。#情報thanks

解凍後、これまでのプラグインの引継ぎ作業、今までのmtconfig.cgiをアップ。準備が整ったら、旧バージョンのディレクトリ名を変更しておき、新しいほうのディレクトリをこれまでのものに変えるとここまでは解説どおりに。あとは、MTシステムにログインしてみるとアップグレード作業が進むという感じです。

ActionStreams入れてる人は、プラグインのアップのとき、extlibのフォルダのアップを忘れてると、アップグレードの作業の開始早々に止るのでご注意。

このおかげでいきなりやっちまっただー><になってしまいました。単にプラグインを入れたときの事思い出したらなんでもないことなんですけどね。

あと、感想として、カスタムフィールド使ってるためなのかわからないけど、データベースの更新のあたりが4.1にあげたときよりちょっと長い感じはしました。

#アップグレード完了とはいえ、あちこち微調整が残っていたりというのが現在の状況です。テンプレートの修正などは日を改めて。

InstaMTで4.2使ってみた

  • Posted by: maRk
  • MovableType | mt4
  • はてなブックマークに追加

ローカルで簡単にMovable Typeが動作するデモ環境を構築する、InstaMTでバージョン4.2を動かしてみました

ダウンロードとインストール

InstaMTのダウンロード・インストールの説明はwww.movabletype.jpの以下のページに記載されています。

MTOS4.2をwww.movabletype.orgからダウンロードします。

4.2へのアップグレード

MT4.2へのアップグレードの具体的な方法が、The blog of H.Fujimotoさまにて紹介されています。

手順のとおり、必要なフォルダを上書きし、[ mt-static ]フォルダは、[ www ]フォルダ内のmt-staticに上書しました。

ログインすると、ウィザードが起動してアップグレードがおこなわれました。

尚、当方アップグレード前にログインしてInstaMT同梱のMTOS4.1テンプレートでブログを構築していましたので、テンプレートの編集のところでRefresh Blog Templateをおこないリビルドしたら、MT4.2のほうのテンプレートが反映されました。

mt.Vicunaとか

あと、mt.VicunaのテンプレートセットもInstaMT環境で使えるようでした。

MTOS4.2ですと、デフォルトでウィジェットセットがセットされてないようなので、空のwidgets.cfgを作らなくてもそのままRefresh Blog Templatesからインストールできました。フォルダを入れる場所は、Vicunaの説明のとおりで、pluginsフォルダはinstamt/cgi-bin/mt/plugins/に、Vicunaのテーマは、instamt/www/mt-static/themesに入れました。

【追記:2009/1/22】 movabletype.orgのほうで4.23をダウンロードできるようになってましたので書いておきます。4.23の場合でも先述の方法と同様でフォルダの差し替えをするだけです。ログインしようとしたときに、アップデートが開始されます。4.23よりプラグインとしてTypePad AntiSpamが同梱されてますが、使うことのなさそうなプラグインを無効にしておきます。

Index of all entries

BlogTop > MovableType > mt4 Archive

Return to page top