お知らせ

Movable Type 5.1 プロの現場の仕事術2011年6月30日

Movable Type 5.1 プロの現場の仕事術」が発売されました。
Movable Type 5.1の基本から、スマートフォン用サイトの作成、管理画面のカスタマイズなど、まさにプロの方のために書かれたMovable Type 5.1の解説書です。
Movable Typeでサイト制作をされている皆様はぜひお買い求めください。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

Perl版ダイナミックパブリッシング(MT5用・その2)

| コメント(14) | トラックバック(5)

Perl版ダイナミックパブリッシング(MT5用)の使い方の解説の後半として、ウェブサイト/ブログ毎の設定手順を解説します。

1.ダイナミックパブリッシングにするテンプレートを選ぶ

まず、ダイナミックパブリッシングにするテンプレートを選びます

ウェブサイトまたはブログの管理画面で、「デザイン」→「テンプレート」メニューを選び、テンプレート一覧を表示します。
そして、インデックステンプレートまたはアーカイブテンプレートの中で、ダイナミックパブリッシングにしたいテンプレートを編集する状態にします。

このページの中に「テンプレートの設定」という部分がありますので、そこをクリックして開きます。
そして、「公開」の箇所を「ダイナミック」に変えて、テンプレートを保存して再構築します。
なお、アーカイブテンプレートの場合、アーカイブマッピングごとに「公開」の設定を行うことができます。

ダイナミックパブリッシングをオンにする

2.Perl版ダイナミックパブリッシングの初期化

次に、Perl版ダイナミックパブリッシングを初期化します。

ダイナミックパブリッシングにしたいウェブサイト/ブログで、「ツール」→「プラグイン」メニューを選び、プラグイン一覧のページを開きます。
そして、「Dynamic Publishing by Perl」のところで「設定を表示」をクリックします。
すると、「初期化する」というリンクが表示されますので、それをクリックします。

「初期化する」のリンクをクリックする

初期化が終わると、以下のようなメッセージが表示されます。

初期化完了時のメッセージ

なお、初期化では以下のような処理が自動的に行われます。

  • .htaccessファイルの書き換え
  • mt-dynamic.phpテンプレートの作成と再構築
  • SQL用テンプレート(sqlsub_mysql.phpまたはsqlsub_pgsql.php)の作成と再構築

3. .htaccessファイルの確認

環境によっては、Movable Typeのダイナミック・パブリッシングの機能をオンにした際に、.htaccessファイルが正しく出力されないことがあるようです。
その場合、上記の手順での.htaccessの書き換えが正しく行われません。

初期化の際に「.htaccessファイルの書き換えに失敗しました。」のメッセージが表示された場合は、ウェブサイト/ブログの出力先ディレクトリに、以下の内容の.htaccessファイルを手動で作成します。
また、ウェブサイト/ブログのサイトパスとアーカイブパスを別にしている場合は、アーカイブの出力先ディレクトリにも同じ内容の.htaccessを作成します。

ただし、リスト中の赤字の部分(4か所)は、ウェブサイト/ブログのトップページがサイトのルートにある場合のものです。
ルート以外のディレクトリにブログがある場合、赤字の部分を書き換える必要があります。
例えば、ウェブサイト/ブログのトップページのアドレスが「http://www.foo.com/blog/」の場合、赤字の部分を「/blog/mt-dynamic.php」にします。

## %%%%%%% Movable Type generated this part; don't remove this line! %%%%%%%
# Disable fancy indexes, so mtview.php gets a chance...
Options -Indexes +SymLinksIfOwnerMatch
  <IfModule mod_rewrite.c>
  # The mod_rewrite solution is the preferred way to invoke
  # dynamic pages, because of its flexibility.
 
  # Add mtview.php to the list of DirectoryIndex options, listing it last,
  # so it is invoked only if the common choices aren't present...
  <IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.htm default.htm default.html default.asp /mt-dynamic.php
  </IfModule>
 
  RewriteEngine on
 
  # don't serve mtview.php if the request is for a real directory
  # (allows the DirectoryIndex lookup to function)
  RewriteCond %{REQUEST_FILENAME} !-d
 
  # don't serve mtview.php if the request is for a real file
  # (allows the actual file to be served)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !\.(cgi|css|gif|jp*g|png)$
  # anything else is handed to mtview.php for resolution
  # passthrough query parameters
  RewriteRule ^(.*)(\?.*)?$ /mt-dynamic.php$2 [L,QSA]
</IfModule>
 
<IfModule !mod_rewrite.c>
  # if mod_rewrite is unavailable, we forward any missing page
  # or unresolved directory index requests to mtview
  # if mtview.php can resolve the request, it returns a 200
  # result code which prevents any 4xx error code from going
  # to the server's access logs. However, an error will be
  # reported in the error log file. If this is your only choice,
  # and you want to suppress these messages, adding a "LogLevel crit"
  # directive within your VirtualHost or root configuration for
  # Apache will turn them off.
  ErrorDocument 404 /mt-dynamic.php
  ErrorDocument 403 /mt-dynamic.php
</IfModule>
## ******* Movable Type generated this part; don't remove this line! *******

4.Perl版ダイナミック・パブリッシングの設定

次に、Perl版ダイナミック・パブリッシングを設定します。

初期化完了のページで、「このリンクをクリックして、設定を続けてください。」をクリックすると、設定ページに移動します。
また、ブログの「設定」ページの「プラグイン」でPerl版ダイナミック・パブリッシングの「設定を表示」をクリックし、その中の「設定を行う」のリンクをクリックしても、設定ページを開くことができます。

設定ページでは、以下の点を設定します。そして、設定が終わったら、「設定を保存」のボタンをクリックします。

設定項目設定内容
インデックスページのファイル名 メインページとアーカイブページのファイル名を指定します。
初期値は「index.html」ですが、BlogをPHP化している方は「index.php」に変えてください。
ページが見つからないときの移動先のURL 間違ったアドレスのページに接続されたときには、エラーページに転送することができます。
その機能を使いたい場合は、この欄にエラーページのURLを入力します。
なお、この欄を空欄にした場合、間違ったアドレスに接続されたときには、「ご指定のアドレスのページは見つかりませんでした。」というメッセージが表示されます。
キャッシュの設定 Movable TypeのデータをMySQLかPostgreSQLに保存している場合、ページのキャッシュ機能を使うことができます。
キャッシュ機能を使いたい場合は、「キャッシュを使う」のチェックをオンにします。
また、キャッシュをオンにする場合、「キャッシュの容量」の欄で容量も指定することができます。

Perl版ダイナミックパブリッシングの設定

5.ウェブサイト/ブログ全体を再構築する

ここまでが終わったら、ウェブサイト/ブログ全体を再構築します。
これ以後は、ダイナミックパブリッシングに設定した各ページは、再構築なしに出力されます。

なお、再構築後にウェブサイト/ブログの出力先ディレクトリを見ると、「~.static」という名前のファイルができています。これらのファイルは、これまでの静的再構築で作られていたファイルです。
これらのファイルは不要になりますので、サーバーから削除することができます。

6.テンプレートの先頭にXML宣言がある場合

小粋空間のテンプレートなど、テンプレートの先頭にXML宣言が入っている場合、そのXML宣言を以下のようにPHPで出力するように書き換える必要があります。

<?php print('XML宣言' . "\n"); ?>

たとえば、テンプレートに以下のようなXML宣言が入っているとします。

<?xml version="1.0" encoding="<$MTPublishCharset$>" ?>

この場合、以下のように書き換えます。

<?php print('<?xml version="1.0" encoding="<$MTPublishCharset$>" ?>' . "\n"); ?>

Facebook連携

当記事について「いいね」や「送信」を行っていただけると幸いです。


この記事についてウォールに投稿

トラックバック(5)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1890.

えせシステムソリューションズ - Movable Type 5に上げてみた (2009年12月15日 15:24)

Movable Type 5(以下、MT5)が正式にリリースされたので上げてみた。 Perl5.8以上必須だったりして以前よりは敷居が上がってる。 また、... 続きを読む

MT5環境でPerl版ダイナミックパブリッシングを使っているときに起きた件のメモ。 レンタルサーバのhetemlやサクラサーバで管理画面と実公開サイトが別... 続きを読む

MT5環境でPerl版ダイナミックパブリッシングを使っているときに起きた件のメモ。 レンタルサーバのhetemlやサクラサーバで管理画面と実公開サイトが別... 続きを読む

記事数はたいしてしてないものの、今後を考えてダイナミックパブリッシングを使ってみる。 今の状況じゃ再構築に時間かかる訳じゃないから必要無いって言えば必要な... 続きを読む

こちらのサイトのMT用プラグイン "Perl版ダイナミックパブリッシング" を利用して、自ブログサイトのトップページをダイナミックパブリッシングに変更して... 続きを読む

コメント(スレッド8件,コメント14件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 まっつん : 既存のベーシック認証用のhtaccessと共存させることはできますか?

はじめまして。

今回こちらのプラグインを使用させていただいていますが、一つ質問があります。
タイトル通りなのですが、既にhtaccessがある場合、処理がうまくいかずページが表示されません。

以下の内容を生成されるhtaccessの一番上に追加してみましたが、ベーシック認証しか動作しませんでした。

deny from all

AuthUserFile /パス/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow


お手数ですが、教えていただけますでしょうか?

No.2  : Re:既存のベーシック認証用のhtaccessと共存させることはできますか?

>まっつんさん
こんにちは。

申し訳ありませんが、現状ではBasic認証には対応していません。
今後のバージョンアップの際に検討したいと思います。

No.3 KZE : (無題)

キャッシュ機能について質問です。

キャッシュ機能がONの場合、エントリーが保存/公開させれたらキャッシュがクリアされますか?それともphpcacheフォルダを手動で空にしないと情報が更新されませんか?

キャッシュがクリアになる条件を教えて頂けますでしょうか?

No.4  : (無題)

>KZEさん
こんにちは。

キャッシュは、ブログ記事を公開したときや、コメント/トラックバックを受信したときなど、ブログに何らかの変更があったときに更新されます。

No.5 じじ : エラー表示がでます

はじめまして。
今回、ページ分割を利用したく
こちらのプラグインを使わせていただこうかと思っているのですが
このページ分まで終了して、エラー表示が出てサイトが出て来ません

----
Parse error: syntax error, unexpected T_STRING in サイトパス/index.php on line 1
---

当方、MT5を使用し
インデックス・カテゴリー別・月別でダイナミックパブリッシングを選択しました
XML宣言は、変更しても削除しても、同様なエラーが表示されます

お手数ですが、よろしくお願いいたします。

No.6  : Re:エラー表示がでます

>じじさん
こんにちは。

現象からすると、メインページのテンプレートの出力結果の1行目に、PHPとして文法エラーになる内容が含まれています。
テンプレートを見せていただければ、何がエラーを起こしているかを判断できると思います。

No.8  : (無題)

>じじさん
こんにちは。

いただいたテンプレートを見てみましたが、テンプレートには問題はありませんでした。
申し訳ありませんが、何か想定外の動作になっているようですので、そちらのサーバーでデバッグしてみないと原因は分からないです。

No.9 じじ : (無題)

こんにちは。お手数おかけしてすみませんでした。
テンプレートに問題はないんですね。
ちょっと、自分ではわからないので今回はあきらめる事にします。

ありがとうございました。

No.10 KZE : (無題)

プラグイン使用させて頂いてます!

最近サーバログを見ていたのですが下記のようなエラーがPerl版ダイナミック・パブリッシングで吐き出されていることに気がつきました。どうやら「ページが見つからないときの移動先のURL」を設定した場合にエラーが吐き出されています(どのページにアクセスしても)、設定しない場合はエラーは出ません。プラグインは通常通り動いておりますが、ご報告までに。。。

エラー内容:

[17-Aug-2010 22:36:59] PHP Warning:  include(redirect : /404.html) [function.include]: failed to open stream: No such file or directory in /home/usr/public_html/blog/mt-dynamic.php on line 203
[17-Aug-2010 22:36:59] PHP Warning: include() [function.include]: Failed opening 'redirect : /404.html' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/usr/public_html/blog/mt-dynamic.php on line 203

テスト環境:
Apache / 2.2.16
PHP / 5.3.3

それとPerl版ダイナミック・パブリッシングでのキャッシュはMultiBlogのトリガーではリフレッシュされないようですが、次のバージョン機能として検討して頂けますか?勝手ですみません汗

No.11  : (無題)

>KZEさん
こんにちは。

エラーの件ですが、プラグイン内では404.htmlを操作するような処理は行っていないので、申し訳ありませんが、そちらの環境に依存する問題なのではないかと思います。

また、MultiBlogの件ですが、MultiBlogプラグイン側を書き換える必要がありそうです。

No.13 mayona : (無題)

6.テンプレートの先頭にXML宣言がある場合
の処理対象テンプレートについてご質問です。
この処理は、ダイナミック生成するテンプレートのみではなく、
このプラグインを入れた時点でスタティック生成しているの方も行うものでしょうか。

No.14  : (無題)

>mayonaさん
こんにちは。

スタティックに生成しているテンプレートでは、XML宣言は書き換えないでください。

No.15 mayona : (無題)

ありがとうございました。
Multiblog絡みの件がコメント内にありましたが、具体的にはどんな処理に対応していないという事でしょうか。
他に気をつけておく点などがあれば、把握しておきたいです。
よろしくお願いします。

No.16  : (無題)

>mayonaさん
こんにちは。

>Multiblog絡みの件がコメント内にありましたが、
>具体的にはどんな処理に対応していないという事でしょうか。
端的に言えば、「MultiBlogのトリガーが効かないように見える」ということです。
例えば、「ブログに記事を追加したときに、親ウェブサイトのインデックステンプレートを再構築する」という設定にしても、そのインデックステンプレートの中でPerl版ダイナミックパブリッシングを使う設定になっているものは、ページが更新されません。

ただ、先ほどMTのソースコードを見ていたところ、MultiBlogプラグインを書き換えなくても、対処できそうです。
対処できるかどうか検討します。

>他に気をつけておく点などがあれば、把握しておきたいです。
build_file/build_file_filter/build_pageのコールバックを利用しているプラグインは動作しません。
具体的な例として、スカイアーク様が提供しているPageButeプラグインがあります。

コメントする


Facebookでコメント

試験的にFacebookのコメントフォームを設置しました。