MODX Evolution 1.0.6J-r5をリリースしました
2012年7月31日 17時00分 shortlink:http://modx.jp/?id=838
大規模サイト対応のキャッシュ改善・PHx機能の内蔵・パッケージのディレクトリ構成変更などが主な内容です。今回よりPHP4をサポートしないためご注意ください。
MODX Evolution 1.0.6J-r5 ダウンロード
注意事項
ディレクトリ構成が変わります(※新規インストール時のみ)
新規インストール時のディレクトリ構成が大幅に変わります。
- content - コンテンツデータ(images | files | media | flash)
- assets - 拡張機能・システム補助 (snippets | plugins | modules | templates | cache)
- temp - 削除してもサイト構成や機能に影響を及ばさない一時的なデータ (import | export | backup)
アップデートの場合は既存のディレクトリ構成による動作をそのまま引き継ぎます。
METAタグ管理機能がインストールされなくなります(※新規インストール時のみ)
新規インストール時において、METAタグ管理機能をインストールしません。すでにMETAタグ管理機能を運用している場合は、アップデート後もそのまま影響なく引き継いで利用できます。
PHP4サポートを終了します
MODX Evolution 1.0.6J-r4までは、autoload.phpを設置ディレクトリにコピーすることでPHP4環境で運用できますが、r5からはこのサポートを終了します。
管理画面ダッシュボードの新着情報一覧のタブを廃止します
フィード配信元にトラブルがあったり、ネットワーク環境の制限によりフィードを読み込めない場合は、MODX管理画面内にも影響が及びます。一ヶ所の配信元の不具合で全国的に一斉に問題が起きることを回避するため、r5以降では新着情報一覧の取得・表示を廃止します。この部分の処理はプラグイン化していますので、後日配布します。
SEO Strict URLsとPHxプラグインが動作しなくなります
両プラグインとも、アップデータを後日配布します。
新機能の内蔵PHx機能はif文をサポートしません
今回よりPHx機能をコアに内蔵しましたが、if文を使えません。必要な場合はプラグイン版PHxを別途にインストールする必要がありますが、Jotなどと共存できない問題があるため現在のところ一長一短です。
※PHxモディファイアを呼び出す側のパース処理に問題があるためで、呼び出す側の処理全体の改善を年末までに行ないます。この問題はRevolutionではすでに解決されています。
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。
変更内容
従来バージョンからの変更・廃止
- ディレクトリ構造を変更 http://forum.modx.jp/viewtopic.php?f=34&t=803
- METAタグ機能関連のtableをインストールしない
(keyword_xref・site_content_metatags・site_keywords・site_metatags) - PHPサポートバージョンを5.0.0以上にセット(PHP4はサポートしない)
- upgrade.php削除(PHP4のサポートを終了するため)
- ダッシュボードからMODXニュースのタブを削除
- rssパーサライブラリを削除
新機能
- 新機能 - アップロード画像を自動リサイズ(グローバル設定で横幅を設定可)
- 何も行なわないBindingsコマンド「@NULL(@NONE)」を追加
- empty_cache権限をロールで設定可能にする
- 新しい権限をロール設定に追加(view_schedule)
- Hiddenタイプのテンプレート変数を追加
- DBAPIに$modx->db->replace()を追加
- インポート機能にリンクタグ変換オプションを追加
- TopicPath - 新パラメータ &ignoreIdsUnder追加
内蔵PHx機能(PHxプラグインと共存可能)
- PHxプラグインの機能をコアに内蔵(グローバル設定で有効無効を選択可)
- リソース変数・テンプレート変数・コンフィグ変数・チャンク・スニペットコール(スニペット名部分)でPHxを利用可
- $modx->mergePlaceholderContent()を使用しているスニペットならプレイスホルダーでもPHxを利用可
- PHxモディファイアの大文字小文字を判別しない
- PHx判定で呼び出し元のkey名(変数名)も判定材料にできるようにする
- getfieldモディファイアを追加
- zenhan・hanzenモディファイアを追加(半角全角の置換)
- replace_toモディファイアを追加
- dateモディファイアを調整・timeモディファイアを追加
- userinfoモディファイアを修正
- .=モディファイア
キャッシュ改善
- サイトキャッシュをエイリアス・グローバル設定・スニペット・チャンク・プラグインの5種類に分離
- エイリアスキャッシュはさらに3つに分離
- 簡易のプロセスキャッシュを実装
- 非キャッシュ書式のスニペットコールが含まれるページはキャッシュモードがバイパスモードであれば標準にスイッチする
- $modx->config['cache_expire'](隠しconfig)追加 (ページキャッシュの有効期限を秒数で設定)
- バイパスキャッシュモードでcontentTypeを出力
ログ・デバッグ機能
- パーサ本体・スニペット・プラグインそれぞれのログ取得処理を統合
- イベントログの見た目を改善
- ログ出力の内容にIPアドレスを追加
- ログ出力にIPとUAを追加
- イベントログ中のURL文字列の表示を見やすくする
- backtraceログの表示順を反転
- PHPエラーをタイプごとにレベル判定(2または3)
- イベントログの取得内容を詳細化
- MySQLクエリーデバッグ時のバックトレース出力を詳細化
- PHPエラーではない場合の表示を省略
- $modx->error_reportingを追加
- $modx->config['error_reporting']によるエラー検出の出し分け
その他修正・改善
- ヘルプから「siteCacheのサイズ」を削除
- $modx->manager->modx_move_uploaded_file() 画像以外のファイルを受け取った時はmove_uploaded_fileに制御を渡す
- QuickManager - リソースIDを取得できなかった時に処理を抜けるようにする
- image_limit_widthの初期値をブランクにする
- 不要なファイルを整理・画像軽量化
- file_existsをis_file判定に
- ファイルブラウザの画像を軽量化
- view_scheduleのデフォルトを1にする
- サンプルコンテンツ内のeFormのスニペットコールを非キャッシュ書式に変更
- Webloginのデフォルトコードをシンプル化
- ログインせずにmanager内のファイルに直アクセスした時のメッセージを非表示にする
- ダッシュボード上の3つのタブをプラグイン化
- $PHP_SELFなどの古い記述を整理
- 値の更新に成功した時のclassをwarningからsuccessに変更
- $_SERVER['PHP_SELF']を$_SERVER['SCRIPT_NAME']に変更
- $modx->config['upload_maxsize']の初期値をゼロにする
- グローバル設定レイアウト変更
- TinyMCE - QuickUploadプラグインの読み込み判定を追加(実験的な仕様)
- ManagerAPIの読み込みをロジック化
- TinyMCEアップデート(3.5.6)
- MODX_BASE_URLの検出をより正確に行なう
- ファイル管理機能・権限がない場合は対象ディレクトリを不可視とする
- インストーラにセーフモード判定を追加
- TinyMCE - グローバル設定のデフォルト値を自動設定しないようにする
- $modx->getDocumentObject() 管理画面内などCLI操作ではエラー時に404ページにリダイレクトせずfalse値のみを返す
- ユーザ設定 - ロールの編集権限がない場合は自分のロールを変更できないようにする
- フレンドリーエイリアス設定が無効の時にトップページ以外が表示されないため修正
- file_put_contents()関数にLOCK_EXを設定
- Administrator以外のロールで$modx->documentObject['type']を変更できないため修正
- メンテナンスモードに切り替わらないため修正
- 過去バージョンからのアップデート時にassets/imagesディレクトリの存在を考慮する
- $_POST['id']に不正な値が渡ってきた時の処理を改善
- 存在しないチャンク・非公開になっているチャンクを識別する
- $modx->setProcessCache()にファイルストアモードを追加
- cache/sitePublishingcをチェック(今回のバージョンより、インストール時点では存在しないため)
- $modx->initProcessCache()を追加
- 調整 $modx->getDocumentListing()
- $modx->getDocumentListing()処理改善
- $modx->documentListingの生成処理を廃止
- $modx->documentListingを$modx->getDocumentListing()に差し替え
- $modx->getDocumentListing() 存在しないエイリアスパスの場合はfalseを返す
- $modx->documentListingをメソッド化(大規模サイト対応)
- 改善 - インポート時の処理でhtmlファイルのみを対象とする(処理のスピードアップのためなので厳密には判定しない)
- 改善 - エイリアスが設定されているリソースは{$id}.htmlでアクセスできないようにする(404扱いにすべきなので)
- 新機能 - 存在しないチャンク名を指定した時、そのチャンク名を内容としたチャンクをその場で生成する
- siteCache.idx.php.blank 不要なため削除
- 削除: assets/cache/siteCache.idx.php.blank
- ディレクトリ作成時にchmodを行なう(FTP操作でディレクトリを削除できないことがあるため)
- リソースIDの整数値チェックを改善 (1e4や9.1などの値もリソースIDとして判定されてしまうため)
http://jp2.php.net/manual/ja/function.is-numeric.php - インストーラで生成できるディレクトリ・ファイルを削除
- インストーラ改善 - ディレクトリ作成時にパーミッションもセット
- Windows環境で全角文字を含むパスにMODXをインストールしている場合、filemanager_pathとrb_base_urlを正しく認識できないため修正
- getResourceBaseDir()修正
- rss/rss_cache.inc ディレクトリ作成時のパーミッションをデフォルトで777
- グローバル設定の構成を整理
- 改善 - rewriteUrls関数で誤判定が起きている可能性があるため修正
- 改善 - evalPlugin関数内のエラー判定を正確に行なう
- 権限外ページにアクセスした時のhttpステータスコードをHTTP/1.1 403 Forbiddenに
http://community.modx-cms.ru/blog/solutions/6978.html - 改善 - ウェブリンクリソースでは値を必ず$modx->parseDocumentSource()する
- ウェブリンクリソースではエイリアス入力欄の表示をフラットにする
- files.dynamic.php - トークンチェック処理を関数化
- files.dynamic.php - 末尾の不要なスラッシュを削除
- メンバ変数 $modx->error_reporting 追加
- 新config追加 ($modx->config['cache_expire'])
- error_reporting言語ファイル追記
- $modx->config['error_reporting']追加
- 修正 - Windows環境でbase_urlを正しく検出できないことがある
- action.phpの存在チェックが不完全なため修正
- 新機能 - 新config $modx->config['error_reporting']追加
- スニペットコールのパースが終わったら$modx->currentSnippetを初期化する
- ウェブリンクの値のパース
- ウェブリンクにリソースIDが設定された時、値が整数値であるかどうかの判定を正確に行なう(is_numericは整数以外も受け付けるため)
- return $resultで返す
- 不要なキャッシュ初期化処理を削除(二重に処理する上、sitePublishing.idx.phpの生成が不完全なためバイパスキャッシュモードで不具合が起きる)
- レポート→システム情報をタブで整理して見やすくする
- 新仕様 - 「このテンプレートを使用しているリソース」
- 修正 - $modx->getUserData()を機能限定で復活
- 修正 - $modx->getPageInfo()において不正なリソースID値が渡ることがある
- 修正 - METAタグ管理機能を有効にしている時にリソースを更新するとエラーになる
http://forum.modx.jp/viewtopic.php?f=7&t=865 - バイパスモードキャッシュにおいて更新日時予約の判定が誤っているため修正
スナップショット
キャッシュを改善しました。
従来のMODX(1.0.5J-r9以降)で、1万ページをフレンドリーエイリアス有効設定で管理しているケースのメモリ使用量です。27MB近くあり、やや多めです(1.0.5J-r8以前はもっと多いですが)。キャッシュが有効になっていても、ほんの数百KB少なくなる程度なので大差ありません。この処理を今回整理しました。
今回の1.0.6J-r5で、同じ条件で表示してみました。半分以下になっています。
2回目の表示。キャッシュが効いて、1.5MB弱にまで減りました。
一般的なCMSは5MB以上が普通なので(WordPressの新規インストール状態で17MB)、かなり少ない数値と言えます。これで、長年の課題とされていた大規模サイト対応の問題はほぼ解決できたと思います。次は100万ページの管理を目標とします。
管理画面ダッシュボードの各タブの出力をプラグイン化しました。
「MODXニュースの一覧」はトラブルが何度か報告されているため、標準ではインストールしません。すでにプラグイン化してあるので、後日改めて配布します。
今後の予定
PHx機能の内蔵により、ネットで配布されているフリーライセンスのテンプレートのコンバートがしやすくなります。これまでのMODXでは、投稿日や投稿者を表示するためにはPHxを別途にインストールする必要がありましたが、手間がかかるうえに、AjaxSeachやJotを設置しているページとのコンフリクトの問題がありました。
これを解決しましたので、従来より要望が多かったMODX専用テンプレートの配布を行なう予定です。
協力者募集中!
ドキュメントの整備が追いついてません。今回も新機能をいくつか追加しましたが、使い方など詳細な情報をまとめておらず、対応を考えています。日本公式サイトの運用にご参加いただける方はご連絡ください。
その他
気付いた点があればフォーラムまたは問い合わせフォームからフィードバックをお願いします。
自慢のMODXサイトがありましたら、ぜひ事例掲載にお立ち寄りください。