BlogTop > MovableType > mt4 Archive

mt4 Archive

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

4 of 5

< Previous PageNext Page >

すべてのページ

テキストエリアのAYCの件

mt.VIcunaテンプレートで、textareaの初期値にAdd Your Commentを書いてフォーカス時に初期値がクリアされるという動作についてです。

ネタ元は、mt.Vicuna フォーラムのトピック、「コメントプレビュー表示時の Add Your Comment 表示について」です。

コメントを入力して -> プレビュー すると、プレビュー画面下のコメント欄には、自分で入力したコメントではなく Add Your Comment が表示されてしまい、そのままPOSTすると Add Your Comment がコメント投稿されてしまいます。

動作としては、textarea要素の初期値は、「Add Your Comment」として、フォーカスされたとき(onfocus)に初期値が消えるというものです。キーワード検索のテンプレートにおける動作と同じようなもので、基本は以下のような形となります。

*見やすくするために適当な箇所で改行してます

<textarea id="comment-text" class="inputField" name="text" rows="8" cols="50"
 onfocus="if (this.value == 'Add Your Comment') this.value = '';"
 onblur="if (this.value == '')
 this.value = 'Add Your Comment';">
Add Your Comment
</textarea>

で、自分のところでは、上のような処理をいれているのですが、コメントフォームのテンプレートモジュールがシステムテンプレートの場合も兼ねているために、システムテンプレートであったときの処理も併記する必要があるために、以下のような形で使っています。

*実際は改行せずに一行です。

<textarea id="comment-text" class="inputField" name="text" rows="8" cols="50"
<MTIf name="tempName" like="individual"> onfocus="if (this.value == 'Add Your Comment') this.value = '';" onblur="if (this.value == '') this.value = 'Add Your Comment';"</MTIf>>
<MTIf name="tempName" eq="system_comment_preview">
<$MTCommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$>
<MTElseIf like="individual">Add Your Comment</MTIf>
</textarea>

MTIf name="tempName" eq="system_comment_preview以降の処理がコメントプレビューだったときに、テキストエリアに書き込まれた内容を表示させるためのものです。

MTCommentBodyタグで、コメントの内容をテキストエリアに表示させます。この処理にもちょっと不満なところもあって、コメントに何もかかれない状態でプレビューしますと、Add Your Commentになっちゃいます。ま、あまりありえないんですけど。

<MTElseIf like="individual">Add Your Commentと書いた部分についてですが、「コメントプレビューテンプレート」以外のときに初期値を書くためのものです。もともとは、MTElseIfのところは、MTElseだけで書いていたような気がしたのですが、多分MTElseだけで処理してよさそう(のはず)。

メモ:記事ごとに違う処理したいときのカスタムフィールド

特定記事のみで読み込むコードとかがある場合に、条件処理させたいと思い、カスタムフィールドを使ってやってみました。

1.カスタムフィールドの設定

カスタムフィールドを新規作成します。以下のような感じで、Yes,Noをラベルに使ったラジオボタンを作成します。

  • 名前: 任意
  • 説明: 任意
  • 種類: ラジオボタン
  • オプション: Yes,No
  • 必須?: チェック(チェックにすることで、記事作成画面に常に表示されます)
  • 規定値: NoまたはYesのラジオボタンにチェック

ここで作成されたタグの出力結果は、ラジオボタンにチェックを入れたほうの値となります。

Yes,Noでなくても自分でわかりやすい変数っぽいものでもいいでしょう。

2.ブログ記事テンプレートに変数を定義

Checkboxという名前でできたカスタムフィールドですと以下のような形となります。

場所は、ブログ記事テンプレートの上の辺りにでも

<MTIfNonEmpty tag="Checkbox">
<MTSetVarBlock name="check"><MTCheckbox></MTSetVarBlock>
</MTIfNonEmpty>

MTIfNonEmptyタグは念のため記述してありますが、「必須」にしてあるのでもしかしたら要らないかもしれません。

3.処理を行いたい箇所のコード

条件分岐したい場所に以下のようにeq=...にて判断をおこないます。この場合は、Yesにチェックが入っていた場合の条件での処理になります。MTElseなどを入れることも考えられるでしょう。

<MTIf name="check" eq="Yes">
do something...
</MTIf>

カスタムフィールドと条件分岐についてはだいたいこのような感じです。

Custom Editor Buttonで記事作成の効率アップ

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

MovableTypeの記事作成画面に、任意の機能を持つボタンを追加させるプラグイン、「Custom Editor Button」がなかなか便利です。

Movable Type 5.2以降を利用している場合は、Tiny MCE プラグインを無効にします。

MT4ではさまざまなフォーマットに対応して記事を作成することができますが、使っていてこんな操作が欲しい、というのがあります。そんなときに、Custom Editor Buttonは、自分の欲しい操作を追加することができるので便利ではないでしょうか。

CustomEditorButton2 より

管理画面のブログ記事投稿画面に、任意の機能を持ったボタンを追加できるプラグインです。

関連ページは以下のとおりです

投稿時間に置き換えるボタンなど欲しい動作なので重宝します。自分が記事を書くスタイルにあわせて利用できるのがいいですね。ちょっと真似してタブ文字追加するのと、タブインデントつきliタグをつけるというのを作ってみました。配布するほどのものでないんでソースだけ紹介します。ボタン用の画像は、プラグインの中にプレーンなボタンが同梱されてましたので、それを使ったら簡単に作成できました。


    tabindentlist:
        image: <ボタン画像へのパス>
        title: tabindent-li
        code: |
            function ceb_tabindentlist ( text ) {
                return '\t<li>' + text + '</li>\n';
            }

追記:一応使っているボタン画像を置いておきます。画像のファイルはtablist_button.pngとなります。ボタンの使い方としては、自分が前に記述してあったリスト要素に後から追加するということを想定しています。終了タグ・</ul>または</ol>の前にカーソルを置いてからボタンを押下するとちょうどいい感じになるとおもいます。

MT:コメントの一覧表示のクイックフィルタのところ

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

MT4.1コメントの一覧の「クイックフィルタ」に「スパムでないコメント」というのがあるのですが、どうもこの表現がしっくりとこないのです。

コメントの管理では、ブログへのコメントの一覧(もしくはシステム全体へのコメント一覧)が、表示されます。

右側にあるフィルターにて、いろいろと絞り込むことができるようになっています。

参考: 

このドキュメントで、「スパムでないコメント」という説明は、「ブログに投稿されたスパムではないコメントのみを一覧します。(一覧する内容の絞り込みより)」とあるように、読んで字の如くなんですけど、どうもこの「スパムではない」という表現がしっくりときません。

URLのパラメータのとこみると、key=defaultとあることから、コメント一覧の基準となる一覧のことが、「スパムでないコメント」なのかと。

おそらく、「スパムコメント」を絞りこんだあとに、「スパムコメントでない」という条件にもどすという操作に移るためのものかと勝手に解釈しています。でも例えば、メーラーなどは、「Inbox」、「受信箱」というのがデフォルトの位置だったりしますので。「スパムメールではないメール」というフォルダなんてわざわざ作らないですよね。
#フォルダ違うし、てのはあるけど。(汗;

・・・・・・と揚げ足取りでもうしわけない。でもなんだかモヤッとしたのでした。おわり。

MT:トップページのパンくずリストについて

MT4でパンくずリストをMTIfタグで分岐させていることかと思いますが、トップページについての条件式をはずすというのをやってみました。

以下の方法は好みの問題でもありますので、自分はこうやるということで紹介しておきます。

1. トップページのパンくずは直書きに

たいていは、パンくずリストを一元管理するため、共通のテンプレートとしてインクルードさせることが多いようです。

ブログのトップページのパンくずリストは、プログのトップページへのリンクのみとなっていますから相対パスを利用すれば、トップページ(メインインデックス)ではパンくずリストのテンプレートはインクルードせずに、以下のようなものを直接埋め込むことで済むのではないでしょうか

<p class="topicPath><a href="./">HOME</a></p>

パンくずリストのテンプレートからトップページかどうかの条件式をはずす

<MTUnless name="main_index">
<p class="topicPath"><a href="">HOME</a>
do something...
</MTUnless>

のような形であったとしますと、先述したとおりメインインデックスページで直接かいてあれば、name="main_index"のようにメインインデックスかどうかを判断する条件式をはずすということができるというわけです。

ウェブページのdescriptionをMTPageExcerptで

Movable Type 4.1のテンプレートで、ウェブページにおいて、概要の記述のないページについては meta description= を出力させないようにしてみました

MTPageExcerptについて

MTのウェブページで、meta要素のdescriptionのcontent属性の値を自動で出力するひとつの方法として、MTPageExcerpt(以下「PageExcerpt」と表記します)という、テンプレートタグを用いる方法があります。

参考:

ウェブページにおいては以下のような、metaタグを記述するようです。

<meta name="description" content="<$MTPageExcerpt remove_html="1"$>" />

参考:

PageExcerptの仕様

さて、 PageExcerpt の仕様ですが、概要記述(記事作成画面の「概要」のフィールドに書かれた内容のこと)がない場合に、ウェブページの先頭からブログ記事の設定で概要の文字数指定をした分だけを出力するという、 つまり、 MTEntryExcerpt と同じ動作ということになります。

このサイトでのウェブページの一覧から、詳細設定表示にしたときのキャプチャを示します

webpage-kanri.gif

例として、以下の2つのページをみていくとします

なんかへたくそな英語がでてきましたけど、Testpageでの概要は、TestPageに書いてある内容となっており、SiteMapでは概要を手入力にておこなっています。

2つのページのソースでhead要素の内容をみていただいたらわかるかとおもうんですが、SiteMapではmeta description=・・・があり、TestPageではmetaタグがでないようになっています。

ところで、PageExcerptの仕様ですとMTIfNonEmptyによる条件分岐では、内容の有無で条件判断できないようであります。

参考:

EntryExcerptでの動作についての質問ではありますが、PageExcerptでも同様にして、IfNonEmptyではタグの中身があることとなっています。。

そこで、一旦変数に概要をいれることで判断をおこなうことにしました。

概要記述の有無で条件分岐(?)

あっているかどうか不明ですけど、このような形で条件分岐させてみました。

先ず変数に概要をいれる

ここでは、pageExcerptという変数にウェブページの概要をいれることにします。

#ネーミングのセンスがないというのはおいといて (汗;

ウェブページアーカイブテンプレートのMTSetVarタグ群の箇所に以下のコードを。

<MTSetVarBlock name="pageExcerpt"><$MTPageExcerpt no_generate="1"$></MTSetVarBlock>

remove_htmlがないのは、手入力の概要にHTMLタグを書く場合が少ないことからです。

次に変数html_headにmetaタグ

ウェブページアーカイブテンプレートから、<MTSetVarBlock name="html_head">を探して、タグ内に追記します

<MTSetVarBlock name="html_head">
<MTIf name="pageExcerpt">
<meta name="description" content="<$MTGetVar name="pageExcerpt">" />
</MTIf>
    :    :    :
</MTSetVarBlock>

ウェブページアーカイブのみリビルドして、概要のないページでmeta desciption=が出ていなければ成功です。

グローバルナビでCurrentページのスタイル(その2)

グローバルナビゲーションリンクのCurrent表示のためスタイル属性を振るというもの。MTIfをつかわないやつ。

今回はさっと簡単にいきます。MTSetVarとMTVarを使ってやってみます。

アーカイブリストテンプレートに変数を定義

<MTSetVar name='current-archive' value=' class="current"'>

仮に「current-archive」という変数名を定義しておきます。

グローバルナビで変数を呼び出す

li要素にclass属性を付与するといった場合です。

<li<$MTVar name="current-archive"$>>・・・

同様にして、メインインデックスの場合は、「current-mainIndex」というようになります。テンプレートごとにユニークな変数をつけておくという作戦でした。おわり。

テンプレートタグ:(Movable Type テンプレートタグリファレンス)

MTからVoxへクロスポスト

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

Movable TypeからVoxへ同時投稿させるプラグイン、PostVoxを試してみました。

(2010年9月):Voxサービス停止(2010年10月1日)につきPostVoxプラグインの利用を中止しました。

PostVoxプラグインについて

PostVoxは、Yuji Takayama氏が提供されている、Movable Typeのプラグインです。

このプラグインを使用することで、Movable Typeで作成した記事を公開と同時にVoxブログへ投稿(クロスポスト)するというものです。

プラグインの情報なのですが、ネットで調べましたところ、MT4が登場する前の情報と混在しているようです。ということで、このエントリではMT4.1でPostVoxを利用する場合ということに限定した話ということにさせていただきます。

因みにPostVoxは以下のSixApartの記事にて紹介されています。

プラグインを入手して設定する

プラグインの入手は以下のページから。なお、当方が動作確認しているのはMT4.1です。4.01などで動作するかはまではわかりません。

上記ページから直接ファイルをダウンロードできるようです。ダウンロードしたら、解凍して、pluginsディレクトリにフォルダごとアップします。

設定等は見れば大体わかるようになっています。

以下、へたな説明ですみませんがこのような流れです。

  1. ブログのプラグイン設定(システムメニューのほうではない)からPostVoxプラグインのところをクリックして展開。設定タブをクリックする。
  2. ユーザー名・パスワードを設定。投稿させたいVoxブログに入るときのユーザ名・パスワード
  3. URL:は投稿させたいVoxブログのURL
  4. Crosspost by defaultのチェックをいれると、常に新規記事投稿のときクロスポストになり、チェックしなければ、新規記事投稿のときにクロスポストさせたい場合、チェックを入れるような形になる
  5. Cross-posting only excerptのチェックは、記事の概要をVoxにポストする場合にチェック、チェックしないと書いた記事をそのままVoxに投稿となる
  6. 「変更を保存」ボタンクリックで設定完了

記事を書いてクロスポストさせてみる

設定に間違いがなければ、新規記事作成の画面の右ペイン上部に、Cross Postingと書かれた項目が追加されています。

crosspost-vox01.gif

Cross post to Voxのところにチェックが入っている場合、記事投稿と同時にVoxに投稿されます。

あとは記事を書くだけです。参考までにplugin作者さまのVoxブログにて、以下のようなエントリがあがっています。

コメント欄によりますと、perlモジュールの関係からか動作できない場合があるもようです。ワタくシの環境では問題なく投稿できていました。

記事投稿後なのですが、以下のようにクロスポストされた状態としてリンクが挿入されています。

postvox.gif

リンクをクリックしますと、その投稿されたページの編集画面にいきます。ただし、Voxにログインされている状態でクリックしないと、Voxのログイン画面になってしまいます。

投稿に成功していると、Voxブログ側で以下のようになります。設定は、概要を投稿した場合です。この場合は、「read more...」というリンクが挿入されます。

crosspost-vox02.gif

余談なのですが、外部サービスのリンク(twitterプロフィールとか、technoratiプロフィールとか)をがんがん追加できるようなんですね、Vox。クロスポストばかりしてないで、ちょこちょこ弄っていないと進化についていけなくなるかも。

MT本?それともネットから情報?

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

Movable Type 4関連の書籍が出揃ってきました。さて、MovableTypeのカスタマイズで参考にするのは、ネットの情報を参考にするか、書籍を購入して参照するのとでどちらが効果的なのかと考えてみました。

MT4関連の書籍について

MovableType.jpで以下のようにMT4関連書籍について紹介されていました。

Movable Type 4 の関連書籍が充実より

Movable Type 4 の出荷から7ヶ月、少しずつ関連書籍が充実してきました。今月だけでも2冊以上の発表があり、どれも Movable Type 4.1 に対応しています。

MT4関連書籍の一覧ページも特設されたようですね。

Movable Type 4 関連書籍

また、小粋空間さまにて、Movable Type 4.1 書籍のまとめで関連書籍についてまとめられていますので参考になります。

書籍かネットか

ところで、MTの情報を得たり、カスタマイズしたりするのに書籍からの場合と、ネットでの場合とで、それぞれの特徴などを考えてみました(MTに限定したものでないような気がしますが)。

以下、自分がこう思っている、という部分がすべてなんですが列挙してみます。

書籍を利用する利点

  • パソコンのない環境・ネットに繋いでいない状態で読むことができる
  • カスタマイズするとき、手元に置きながら作業できる
  • ネットは、必要な情報を検索し、自分の欲しい情報をふるいにかけていく必要があるが、書籍では自分が必要な情報があるという前提で購入したのであれば、そのようなことはない

書籍を利用する時の問題点

  • 情報が執筆時点での情報になるので、執筆後の新たな情報については対応できない
  • 出版後に書籍の内容に変更が出てきた場合、ネットから情報を得る必要が出てくる
  • 書籍で紹介したコードの配布をネットでおこなっている、などのサポートがない場合、サンプルコードを直打ちしないといけなくなる。
  • 地方の書店では取り扱っていない場合があって、書店で注文やネットから購入することになる。またネット販売だと書籍の内容を実際に確認できないために、購入後自分の期待している内容とあわずに終わってしまうケースもありうる

ネットからの情報を利用する利点

  • 最新の情報に対応
  • 得る情報量が多い
  • サンプルのソースコードの利用が容易

ネットからの情報を利用する時の問題点

  • 検索がメインになるので、情報を得るまで、検索に費やす時間が増える
  • カスタマイズ作業のとき、MTの管理画面とサイトの画面とを切り替えながら作業しないといけなくなる(パソコン2つでみるとか、画面に2つ並べて表示とか方法はあるけど)
  • 必要でない情報が混在しているページを読まされることになる(アフィリエイトバナーとか)

問題点については、それ程深刻には感じていなんですが。。書籍については、読者へのフォローが出来ているかというのはあると思います。どちらにせよ、効率よく情報を得て活用したいなと考えています。

Index of all entries

BlogTop > MovableType > mt4 Archive

Feeds
Elsewhere

Action Streams

logo

Comment powered by DISQUS

Return to page top