- カタチグラフィックスのBlog – Katachigfxの日記と制作メモ

「MovableType」というかたログ

05.18

久しぶりのブログ更新は、制作メモ。
つまらない内容ですみませ〜ん。

Movable Type5(スタティック)にて、自動的に更新するには、サーバ側のcronを使って定期的にプログラムを叩く必要がある。
なんとやっかいな。

今回、ハマったのは、ブログ記事のステータスを「日時指定」した際、ブログ以外のウェブサイトインデックスページと他ページに、その新着を表示させるというもの。

「日時指定」の公開は、cronを使って「mt/tools/run-periodic-tasks」を叩けばよい。

※cpiサーバの場合は、run-periodic-tasksの11行目あたりlibとextlibのパスを/usr/home/…からのパスに変更する必要がある。
../lib →/usr/home/……/mt/lib
../extlib → /usr/home/……/mt/extlib

ウェブサイトインデックスページも同時に更新したい場合は、ウェブサイト側のプラグイン「MTMultiBlog」で再構築トリガーを設定すればよい。

問題は、ウェブサイトインデックスページ以外のページも同時に更新したい場合だ。
方法は、色々あるだろうが、以下の方法でうまくいく。

1. プラグイン「mt-rebuild」 のダウンロード。

2. mt-rebuild.plをmtディレクトリにコピーして、cronユーザが実行できるようにパーミッションを755にする。

3.古いプラグインなので、手を加える。

use MT;
my $mt = MT->new( Config    => $MT_DIR . 'mt.cfg',
          Directory => $MT_DIR )
  || die MT->errstr;

これを以下のように修正

use MT::App;
my $mt = MT::App->new( Config    => $MT_DIR . 'mt-config.cgi',
          Directory => $MT_DIR )
  || die MT::App->errstr;

4.cron指定!

$ ./mt-rebuild.pl -blog_id=ブログID -mode="all"

※ cpiサーバの場合、コマンドは打てないので、cron用のスクリプトを用意する

mt-rebuild.sh

#!/bin/sh
/usr/home/....../mt/mt-rebuild.pl -blog_id=ブログID -template="ウェブページ"

mt-rebuild.shは/mt/tools/の中にでも入れて、パーミッションを755にする。
あとは、cpiコントロールパネルのcron設定画面から mt-rebuild.shを叩くようにすればよい。

MTは一手間多いから嫌いだ。

04.15

PHPにせずにページ分割するプラグインがこれ。

PageBute

Movable Type4でも動作を確認しているとのこと。
※検索テンプレートには使用できない

インストール方法

  1. PageButa プラグインをダウンロードし、PageBute.pl ファイルを Movable Type のプラグインフォルダにアップロード。
  2. <MTEntries> の直前、もしくはスタイル等を考慮して、<MTEntries> より上の行に<MTPageContents count="5">と記述。
    ※「count=」は1ページに表示される件数です。指定しない場合は10件で区切られる。
  3. </MTEntries> より後の行に

    </MTPageContents>
    <MTIfPageBefore><$MTPageBefore delim="&lt;&lt;Previous"$></MTIfPageBefore>
    <$MTPageLists delim="|"$>
    <MTIfPageNext><$MTPageNext delim="Next&gt;&gt;"$></MTIfPageNext>

    といった感じに記述。

11.22

さて、今度は、Movable Typeでパンくずリストを作る方法をご紹介。
企業サイトには今やかかせないパーツですよね。

作り方は至って簡単。
カテゴリーアーカイブやエントリーアーカイブのテンプレートに下記のように記述すればOK!

<a href="<$MTBlogURL$>">ホーム</a>
<MTHasParentCategory> &#62;</MTHasParentCategory>
    <MTParentCategories glue="&#62;" exclude_current="1">
      <MTIfNonZero tag="MTCategoryCount">
        <a href="<$MTCategoryArchiveLink$>"><MTCategoryLabel decode_html="1" remove_html="1"></a>
        <MTElse>
          <MTCategoryLabel>
        </MTElse>
      </MTIfNonZero>
    </MTParentCategories>
&#62; <$MTArchiveTitle decode_html="1" remove_html="1" $>

  • <MTHasParentCategory>
    現在のカテゴリーに親カテゴリーが存在されているときだけ実行する条件タグ
  • <MTParentCategories>
    エントリーが属する親カテゴリーとサブカテゴリーをリストアップするタグ
  • glue=" &#62;"
    そのリストを繋ぎ合わせる文字を指定(&gt; は「>」)
  • アトリビュートexclude_currentを指定することで、現在のカテゴリーを除外できる
  • <MTIfNonZero>
    指定したタグの値がゼロでないか判定する条件タグ
  • tag="MTCategoryCount"
    判定するタグ名(ここではMTCategoryCountを指定)

結果、下記のように表示される

ホーム > Movable Type > パンくずリストを作る【Movable Type】

 

簡単でしょ。

11.20

Movable Typeのカテゴリーの順番を自由に並びかることができようにするプラグインがこちら。

cutfirstchar

「カテゴリー名の先頭に番号をつけて、それを表示する際に番号をカットする」という手法でカテゴリーの順番を並び替えることができる。

インストール方法

  1. The blog of H.Fujimotoさんのサイトから「cutfirstchar.pl」をダウンロード
  2. MovableTypeをインストールした直下にある「plugins」ディレクトリにインストール

設定方法

カテゴリー名を表示するタグに、「cutfirstchar="n"」の属性を指定。nは、カテゴリー名の先頭からカットする文字数。

例:カテゴリー名を「01_カテゴリーA」とした場合、頭文字の「01_」をカットするので、
<MTCategoryLabel cutfirstchar="3">
となる。

11.09

どもども〜。

Word Pressだけではなく、Movable Typeのプラグインも紹介しちゃおう!ということで、今回はエントリーにモジュールテンプレートを読みこませるプラグイン「Process Tags plugin」のご紹介。

使い道は色々なんですが、僕の場合「問い合わせフォーム」をエントリー内に表示しようと、このプラグインを使いました。

なぜ?エントリーにそのままソースを書けばいいじゃん!?ってことになりますよね。

なぜ、エントリーにモジュールを引っ張ってきたかというと、Movable Typeを使う人が複数いて、中にはhtmlがわからず、WYSIWYGを使って更新する場合もあったのです。そして、WYSIWYGを使うことで、ソースを自動変換してしまい、フォームタグが削除されてしまう問題があったのです。

そこで、エントリーにフォームを書かずに掲載する方法を考えたところ、フォームをモジュールにして、エントリーに読み込ませればいい。ということで、このプラグインが大活躍したのです。

インストール方法

  1. Process Tags pluginをインストール、解凍。
  2. FTPなどからprcesstags.plをMovable Typeのpluginフォルダにアップロード。postproc.pmをextlibフォルダ内のbradchoateフォルダにアップロード。
  3. エントリーにモジュールテンプレートを読みこませたい各テプレートの<$MTEntryBody$>を<$MTEntryBody process_tags="1"$>に書き換える。

 

設定方法

  1. 「テンプレート→モジュール」にエントリーに読み込ませたいモジュールを作成。
  2. エントリー内には <$MTInclude module="○○○○"$>を使って、モジュールをインクルードいすればオッケー!

と、非常に簡単。

他にも複数の広告とか文言、画像などを内容に併せて使い分けして表示させたい!って時にも大活躍するプラグインですよ。

お試しあれ!

ちなみに、Movabe Type3.2ja-2でも動作してます。

それから、他にもテンプレートにフォームを書いて、<MTEntries lastn="1"category="NOT (カテゴリー****)">●●●●</MTEntries>と、特定のカテゴリーに●●●●だけ表示する。という方法もあります。それ以外にも方法はあるかな。