MODX Evolution 1.0.18J をリリースしました
2016年12月15日 00時00分 shortlink:http://modx.jp/?id=1061
MODX Evolution 1.0.18Jをリリースしました。キャッシュ機構を見直し、数万ページを超える大規模サイトをストレスなく運用できるようにしました。
ダウンロード
https://modx.jp/download/download_evo.html
上記からダウンロードしてください。
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。
変更内容
新機能・新仕様
- [*var@prev*] [*var@next*]
- パスワード情報の管理フレームワークとしてphpassを採用
改善
- サイト構造のキャッシュを廃止(大規模サイト対応)
- 各ページのキャッシュファイルを複数のディレクトリに分散(大規模サイト対応)
- @IF/@ELSE/@ENDIF文をネストできるようにした
- MODXタグのパース処理を整理
- エクスポート機能の処理の流れを整理
- $modx->evalSnippet()の処理を改善。文字列以外の値(配列またはオブジェクト)を返せるようにした
- $modx->config['site_unavailable_message'](オフライン時メッセージ)の扱いを改善
- キャッシュを改善。同じ$_GET構成ならキャッシュレベルで同一扱いする
- set_error_handler のタイミングを変更。__construct の先頭で実行
- インポート機能 - リンクの変換を高速化
- インポート時に$modx->config['error_page']をリセットする
- 管理画面 - エレメント一覧のテンプレート変数をrank順に並べる
- eform - &reportパラメータでIF文・モディファイアを使えるようにする
新しいAPI
- $modx->getAliasListing()
- $modx->setAliasListingByParent()
- $modx->getAliasFromID()
- $modx->getParentID()
- $modx->setParentIDByParent()
- $modx->getAliasPath()
- $modx->addSnippet()
- $modx->addChunk()
- $modx->splitKeyAndFilter()
- $modx->applyFilter()
- $modx->htmlspecialchars()
- $modx->cleanUpMODXTags()
- $modx->db->dataSeek()
廃止したAPI
- $modx->setdocumentMap() (大規模サイト対応)
- $modx->setAliasListing() (大規模サイト対応)
- $modx->set_childrenList() (大規模サイト対応)
- $modx->getDocumentListing() (大規模サイト対応)
APIの変更
- $modx->_snipParamsToArray()を$modx->getParamsFromString()に変更
修正
- 軽微な脆弱性(セッション・フィクセーション)を修正
- IIS環境でエラーになる可能性があるため修正
- IE11でDatePickerが動作しないため調整
- バイパスキャッシュ設定でCAPTCHAが動作しないため修正
- public_htmlの静的ファイル機能が動作しないため修正
http://forum.modx.jp/viewtopic.php?p=9207#p9207 - アップデートスクリプトが正しく動作しないことがあるため修正
- チェックボックスなど複数選択タイプのテンプレート変数をcustom_tvで作成した場合、値の保存が意図どおりにできないため修正
- DocManager - 文字化けが起きることがあるため修正
セキュリティに関係する変更
- トークンチェック機構の実装準備
新しいモディファイア
- =
- not
- %
- isempty
- isntempty (isnotempty)
- >=
- <=
- <
- >
- inarray(in_array)
- eachtpl
モディファイアの挙動変更
- limit,trim_toモディファイアの挙動修正
- summaryモディファイアの文字数オプションのデフォルトを124文字に変更
変更
- TinyMCE - リンクリストの取得条件をhidemenu=0に変更
トピックス
大規模サイト対応・サイト構造のキャッシュを廃止
MODXはサイトを構成する全ページのID・エイリアス・親子関係などの情報をキャッシュファイルとして保存する仕組みを持っていました。ナビゲーション開発などを効率よく行なうためですが、サイトの規模が大きくなるとキャッシュの生成・読み出しにかかる負荷が高くなるため、廃止しました。
大規模サイト対応・各ページのキャッシュファイルを複数のディレクトリに分散
これまではひとつのディレクトリに全ページのキャッシュファイルを格納していたため、サイトのページ数が増えるとサーバの負担が大きくなっていました。複数のディレクトリに分散してキャッシュファイルを保存するようにしました。
パスワード情報の管理フレームワークとしてphpassを採用
独自のハッシュ管理機構の代替として、パスワードハッシュ管理ライブラリとして定評があるphpassを採用しました。
@IF/@ELSE/@ENDIF文をネストできるようになりました
<@IF:[*template:is(0)*] >
Template is blank
<@ELSE>
Template is [*template:templatename*]
<@IF:[*description:isNotEmpty*]>
<div style="border:1px solid #ccc;">[*description*]</div>
<@ENDIF>
<@ENDIF>
@IF文をネストできるようになりました。最大で10層までネストできます。
注意事項
[(site_url)] の改ざんに注意
グローバル設定の「サイトのURL」の値を空白にしていると、サーバの設定によってはページ内の生成URLを外部から改ざんされる可能性があり、他のサイト上のデータ(画像やスクリントなど)を勝手に読み込ませることができます。レンタルサーバの共有プランなどは問題ないことが多いですが、契約者単独で使えるVPSプランなどは注意が必要です。同様の理由で、XAMPPなどでもこの問題があります。
サイトを仮運用のホスト名から本番運用のホスト名(ドメイン名)に切り換える時などは、サイトのURLを空白にしておくと自動的に生成するため便利ですが、必要がなくなれば正しく設定することをおすすめします。
その他
気付いた点があればフォーラムまたは問い合わせフォームからフィードバックをお願いします。開発に参加して自ら機能追加・改善などを行なってみたい方もお気軽にご連絡ください。
次バージョンの1.0.19Jリリースについて
パーサまわりの修正・改善を主な改修目標とする1.0.19Jを近日中にリリースします。
http://forum.modx.jp/viewtopic.php?f=34&t=1724
上記のベータ版をお試しいただいて、もし問題があればすぐに修正します。