MODXで静的ファイルを生成して運用することができるプラグイン
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
StaticFileMaker.txt
changelog.txt
readme.txt

readme.txt

--------------------------------------------
StaticFileMaker - readme.txt
--------------------------------------------

[0.目次]
  1.概要
  2.動作確認環境
  3.制限事項
  4.インストール
  5.アンインストール
  6.使い方
  7.注意事項


[1.概要]
MODXのリソースを静的ファイルにして運用する事ができます。
(MovableTypeのような運用が可能です)
リソースを静的ファイル化することで次のメリットが発生します。

・MODXを介さなくなるため、レスポンスの向上
・リソース編集後にファイル生成するまで公開されないため、プレビューで公開前に
  表示状態を確認できる

デメリットは次の通りです。

・MODXを介さないため、MODXアクセス制限等が機能しなくなる
・MTのようなアーカイブページは出力しないため、実はイマイチかもしれない…


[2.動作確認環境]
・MODX 1.0.10J-r1
・PHP 5.3.26
・MySQL 5.5.30
・文字コード UTF-8


[3.制限事項]
・PHP 5.3.0以上必須
  MODX本体がサポートしているPHPバージョンと違うので注意。

・フレンドリーの設定がURL必須
  フレンドリーURLが無効だとイベントログに警告が残ります。

・リソースの公開開始日時/公開終了日時が機能しなくなります
  正確には機能しますが、静的ファイルに対しては効果がありません。

・MODXをドメイントップにインストールしないと動きません
  http://example.jp/modx/ のようにサブディレクトリにMODXを入れると動作しません。

・サイトにBasic認証があると動作しない
  サーバ内で自分自身にHTTP接続をするため、Basic認証の設定があると動作しません。


[4.インストール]
!!注意!!
インストール直後はファイルが生成されていないため、全てのページが404になってしまいます。
実際に公開しているサイトに設定される際はご注意ください。

1)アーカイブファイルを解凍する

2)管理画面でプラグインを新規作成する
  「エレメント」
    →「エレメント管理」
      →「プラグイン」
        →「プラグインを作成」

  [メイン]
    プラグインコード: StaticFileMaker.txtファイルの中身をそのまま貼り付けます。

  [設定]
    プラグインコードを貼り付けると「静的ファイル生成用パスワード」という設定
    ができているので、適当にパスワードを設定します。

      ※静的ファイル生成用にMODX内部で使うパスワードです
      ※10文字以上の適当な英数字にしておけばいいと思います
      ※このパスワードが外部に漏れると外部から直接静的ファイル生成が作られたり
        消されたりする可能性があります

    「既定の動作」「コンテナに付加するファイル名」設定は必要に応じて編集します。
    詳細は「6.使い方-3」を参照。

3)管理画面でテンプレート変数を作成する
  「エレメント」
    →「エレメント管理」
      →「テンプレート変数」
        →「テンプレート変数を作成」

  [メイン]
    変数名               : StaticFileMakerOption
    見出し               : StaticFileMakerオプション
    入力タイプ           : Check Box
    入力時のオプション値 : このリソースはファイルを生成しない<br />==exceptSelf||このリソース配下のリソースはすべてファイルを生成しない<br />==exceptChildren||親リソースの設定を無視してファイルを生成する<br />==makeForce
    規定値               : (空白のまま)
    ウィジェット         : (選択無)

  [テンプレートとの関連付け]
    StaticFileMakerのオプションを指定したテンプレートを指定します。
    (よくわかれなければ全てにチェックでもOKです)

  [プロパティ]
    既存のカテゴリー     : StaticFileMaker

4).htaccessファイルを修正する
バージョンによって微妙に表記が違う事があるので適宜合わせてください。
以下はMODX 1.0.10J-r1の場合です。

-----------------------変更前(ここから)
RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
-----------------------変更前(ここまで)

-----------------------変更後(ここから)
RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

#↓追加
RewriteCond %{QUERY_STRING} __rebuild=.+ [OR]
RewriteCond %{HTTP_COOKIE} __rebuild=.+
RewriteCond %{QUERY_STRING} !__rebuild_pfile=1
RewriteRule . index.php [L]
#↑追加

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
-----------------------変更後(ここまで)

※MODX 1.0.6Jでは本体のバグの為、以下の一行を変更してください。

-----------------------修正(ここから)
RewriteRule ^(manager|assets)/*$ - [L]
↓
RewriteRule ^(manager|assets)/.*$ - [L]
-----------------------修正(ここまで)

5)MODX管理画面に再ログインする
StaticFileMakerがcookieを利用する関係上、一度MODX管理画面からログアウトして
再度ログインしてください。


[5.アンインストール]
作成したプラグインとテンプレート変数を削除します。
.htaccessファイルを元に戻します。


[6.使い方]
1)リソース編集画面に追加されるメニュー
リソースの編集画面を開くと右上に次のメニューが増えています。

・保存+ファイル生成
  リソースを保存しつつ、静的ファイルを生成します。
  通常の「更新」だと静的ファイルは作成されません。
  「公開ステータス」を非公開にするとファイルが削除されます。

・ファイルプレビュー
  静的ファイルのプレビューを行います。

・全ファイル生成
  全ファイルを生成するウィンドウを開きます。
  (MTの再構築画面のようなもの)
  「全ファイル生成」で生成を開始します。
  「ウィンドウを閉じる」でウィンドウを閉じます。

2)静的ファイル生成の除外
問い合わせフォームなど、動的に動くサイトで静的ファイルを生成したくない場合は
リソース編集画面にて「StaticFileMakerオプション」の設定を利用してください。

・このリソースはファイルを生成しない
  対象リソースは静的ファイルを生成しなくなります。

・このリソース配下のリソースはすべてファイルを生成しない
  対象リソース配下にあるリソースは全て生成しなくなります。
  (孫リソース以下もすべて含みます)

・親リソースの設定を無視してファイルを生成する
  親リソースにて「このリソース配下のリソースはすべてファイルを生成しない」に
  チェックが入っている場合でもこのリソースだけは例外的にファイルを生成します。
  

静的ファイルを生成する細かい条件は次の通りです。

・公開されている
・削除されていない
・メンバー限定の設定が行われていない
・StaticFileMakerのオプションにてファイル生成の対象外になっていない

また、静的ファイル生成の対象外になったリソースの編集画面には「保存+ファイル生
成」「ファイルプレビュー」のボタンは表示されません。

3)プラグイン設定について
・静的ファイル生成用パスワード
「4.インストール」でも説明していますが、適当な10文字以上のパスワードを設定し
てください。
システムで使うだけなので思いつきのランダムパスワードで問題ありません。

・既定の動作
この設定を「生成しない」にすると全ての設定が反転します。
つまりデフォルトで全てのリソースは静的ファイル生成の対象外になります。
リソース編集画面で表示される「StaticFileMakerオプション」の効果もすべて反転し
ます。
「このリソースはファイルを生成しない」にチェックを入れたリソースは逆にファイル
が生成されます。
このオプションを使う場合はテンプレート変数の文章に矛盾が出るため次のように変更
した方が運用上間違わないと思います。

このリソースはファイルを生成する<br />==exceptSelf||このリソース配下は全てファイルを生成する<br />==exceptChildren||親リソースの設定を無視してファイルを生成しない<br />==makeForce

・コンテナに付加するファイル名
グローバル設定の「ディレクトリ表現」が有効になっている場合、コンテナになってい
るリソースのURLはディレクトリ(フォルダ)として表示されます。
例えば「news」というエイリアスを設定したコンテナリソースは「/news/」というURL
になります。
この状態だと静的ファイルが作成できない為、ディレクトリの後ろに付けるファイル名
を指定します。
デフォルトはindex.htmlです。


[7.注意事項]
1)旧バージョンからのアップデートについて
・v1.01から
プラグインはそのままプラグインコードを差し替えてください。
テンプレート変数はそのままでも使えますが、「入力時のオプション値」の文言を変更
しているので、そこだけ新しいものに差し替えをお勧めします。

・v1.00から
プラグインはそのままプラグインコードを差し替えてください。
テンプレート変数は新しくしたため、既存の設定を削除後に新しいテンプレート変数を
設定してください。
(対象外の設定も消されるので再設定が必要です)

2)その他
思いつき&勢いで作りました。
要望があれば拡張していくかもしれません。

…と書いていたら要望があったので拡張しました。