インストールと準備
動作条件
- サーバーがダイナミックパブリッシングをサポートしていること(ブラウザで mt-check.php にアクセスしてチェックすることができます)
- Apache HTTP サーバーで分散設定ファイル (.htaccess) が有効化されており rewrite モジュール (mod_rewrite) のエンジンが有効であること
下記のように設定を進めます。
- ダイナミックパブリッシングが利用可能なことを確認してください(ウェブサイト/ブログのサイト・パス以下に templates_c, cache ディレクトリが存在し、サーバーから書き込み可能である必要があります)
- $MTDIR 以下に powercmsfiles ディレクトリを作成し、ウェブサーバーから書き込み可能なパーミッションを設定してください。
- Perl による動的パブリッシングを有効にする場合、
addons/DynamicMTML.pack/tools
以下の2つのファイルを $MT_DIR/tools ディレクトリに設置し、実行可能なパーミッションを設定してください。
※ powercms_files ディレクトリの場所は環境設定ファイル mt-config.cgi に環境変数 PowerCMSFilesDir を指定することにより別の場所を指定可能です
環境変数の設定
指定したい環境変数を mt-config.cgi に設定します。
項目名 | 設定例(初期値) | 説明 |
---|---|---|
DisableCompilerWarnings | 0 | テンプレート保存画面のエラーを非表示にします。PHPのみに対応するプラグインを作成する時にテンプレート編集画面でエラーメッセージを非表示にしたい場合に指定してください。 |
DynamicForceCompile | 0 | 常に Smarty のテンプレートをコンパイルします。構築・開発段階で1を指定し、運用フェイズに入ったら必要に応じて0を指定するなどしてください。 |
DynamicIncludeStatic | 0 | スタティックファイル中の PHP コードを実行します。 |
DynamicSiteBootstrapper | .mtview.php | .htaccess によって処理が渡される実行ファイル名を指定してください。 |
UserSessionTimeoutNoCheck | 0 | (PHP 環境で) $app->user() (MTIfLogin タグ等)を呼び出す時に UserSessionTimeout の値を無視します。 |
SendHTTPHeaderMethod | 初期値なし | send_http_header で hedaer 関数と echo のどちらで出力を行うかを指定できます。echo を指定すると header 関数ではなく echo で出力されます。 |
DynamicPHPFirst | 0 | DynamicMTML の実行時に MTML の処理より先に PHP コードを実行します。 |
AllowMagicQuotesGPC | magic_quotes_gpcをOffにしない(magic_quotes_gpcが有効でこの設定が0の時、DynamicMTMLがmagic_quotes_gpcをOffにします)。 | 1 |
AllowableTags | MTStripTags タグで削除対象外としたい HTML タグを指定します。 | <a><br><b><i><p><strong><em><img><ul><ol><li><blockquote><pre> |
ダイナミックパブリッシングの設定
ブログの設定 (全般設定) でダイナミックパブリッシングの各項目を設定します。
項目名 | 説明 | 設定例 |
---|---|---|
キャッシュする | ダイナミックパブリッシングのキャッシュを利用するかどうか | ON |
条件付き取得を有効にする | ダイナミックパブリッシングで Conditional GET を利用するかどうか | ON |
DynamicMTMLを有効にする | 静的コンテンツを DynamicMTML 処理する場合にチェックします。 | ON |
ビルド結果をキャッシュする | DynamicMTML によってビルドされた結果及びダイナミックパブリッシングでクエリ付きのリクエストが送られた場合、その結果をキャッシュします | ON(但し常に動的に結果を取得したい場合はOFF) |
( ビルド結果のキャッシュ有効期限(秒)) | キャッシュの有効期限(秒) | 適宜(再構築の際にキャッシュはクリアされますのでキャッシュを利用する場合は長めに設定しておいて構いません) |
DynamicMTML で条件付き GET を有効にする | HTTP ヘッダの情報とファイルのタイムスタンプ(もしくはブログオブジェクトの更新タイムスタンプ)を比較して、コンテンツが更新されていない場合は 304 Not Modified ヘッダを返してクライアントキャッシュを使わせます。 | ON |
ビルドする拡張子 | DynamicMTML によって処理するファイルの拡張子をカンマ区切りで指定します | html,mtml 等(設定が空欄の場合のデフォルト値) |
処理対象外の拡張子 | セキュリティ等の理由から DynamicMTML の処理対象外にするファイルの拡張子をカンマ区切りで指定します | php,cgi,fcgi (設定が空欄の場合のデフォルト値) |
ディレクトリインデックス | リクエストが/で終わっていた時に処理するファイルをカンマ区切りで指定します | index.html,index.mtml (設定が空欄の場合のデフォルト値) |
テンプレートのインストール
PowerCMS のテーマを適用することで必要なテンプレートが自動的にインストールされますので、その場合は下記操作の必要はありません
- DynamicMTML を有効にするブログまたはウェブサイトのデザイン画面でテンプレートの一覧を表示します。
- 右カラムのメニュー「ショートカット」から「DynamicMTML のインストール」をクリックします。
- 2つのインデックス・テンプレート「DynamicMTML Bootstrapper」(出力ファイル名: .mtview.php) と「DynamicMTML .htaccess」(出力ファイル名: .htaccess) がインストールされます。
- インストールされた2つのテンプレートを再構築してサーバーにファイルを生成します。
※ 該当のブログやウェブサイトでダイナミックパブリッシングを利用している場合、この再構築によって自動生成するファイルが上書きされます。事前に該当のファイルをバックアップして内容をご確認の上、インストールと再構築を行うようにしてください。なお、対象のウェブサイトまたはブログに出力ファイル名が同一のインデックス・テンプレートが存在する場合、インストールは行われません
動作の確認
ここまでで準備は完了です。続いて、いくつか例を挙げて実際の動作について説明します。
ブログ記事の本文にテンプレートタグを記述する
試しにブログ記事の本文にテンプレートタグを記述して動作を確認してみます。
<mt:Entries lastn="3">
<mt:EntriesHeader>
<h3>最近のブログ記事</h3>
<ul>
</mt:EntriesHeader>
<li><a href="<mt:EntryPermalink/>"><mt:EntryTitle remove_html="1"/></a></li>
<mt:EntriesFooter>
</ul>
</mt:EntriesFooter>
</mt:Entries>
設定が正しく行われていれば画像のように本文部分にブログ記事のリストが表示されます。
続いて、サーバーに生成されたこのブログ記事の HTML ファイルを FTP 等でダウンロードしてテキストエディタで編集します。ここでは mt:Entries の lastn モディファイアの値を 3 から 20 に変更します。
PowerCMS で管理されていないファイルが動的に処理された結果を確認するため、ファイル名を適当な名前に変更してサーバーに設置し、ブラウザでアクセスします。
PowerCMS で管理されていないテキストファイルが動的に処理されていることを確認できました。