コンテンツにスキップ

プリフライトチェック

XOOPS 2.7.0はテンプレートエンジンをSmarty 3からSmarty 4にアップグレードしました。Smarty 4はSmarty 3よりテンプレート構文に厳密で、カスタムテーマやモジュールテンプレートの一部がXOOPS 2.7.0で正しく機能するために調整が必要な場合があります。

これらの問題をメインアップグレーダー実行_前に_特定・修正するのに役立つように、XOOPS 2.7.0にはupgrade/ディレクトリにプリフライトスキャナーが付属しています。メインアップグレードワークフローを続行する前に、プリフライトスキャナーを少なくとも1回実行する必要があります。

プリフライトスキャナーは既存のテーマとモジュールテンプレートを調べて、既知のSmarty 4の非互換性を探します。これは以下を実行できます:

  • スキャン - 変更が必要な場合がある.tpl.htmlテンプレートファイルについてthemes/modules/ディレクトリを調べる
  • レポート - ファイルごと、問題の種類ごとにグループ化された問題を報告する
  • 自動修復 - 依頼されたときに多くの一般的な問題を自動的に修復する

すべての問題が自動的に修復できるわけではありません。特に古いSmarty 3の慣習を使用しており、Smarty 4に直接同等のものがないテンプレートは、手動での編集が必要になります。

  1. 配布のupgrade/ディレクトリをサイトのウェブルートにコピーします(アップグレード準備ステップの一部としてまだ実行していない場合)。

  2. ブラウザでプリフライトURLを指定します:

    http://example.com/upgrade/preflight.php
  3. プロンプトが表示されたら、管理者アカウントでログインします。

  4. スキャナーは3つのコントロール付きフォームを提示します:

    • テンプレートディレクトリ — 空白のままにするとthemes/modules/の両方をスキャンします。/themes/mytheme/のようなパスを入力して、スキャンを1つのディレクトリに限定します。
    • テンプレート拡張子 — 空白のままにすると.tpl.htmlファイルの両方をスキャンします。単一の拡張子を入力してスキャンを限定します。
    • 自動修復を試みる — スキャナーが修正方法を知っている問題を修復したい場合は、このボックスにチェックを入れます。読み取り専用スキャンの場合は、チェックを入れないままにしておきます。
  5. 実行ボタンを押します。スキャナーは選択されたディレクトリを調べ、見つかったすべての問題を報告します。

スキャンレポートは調べたすべてのファイルと見つかったすべての問題をリストします。各問題エントリは以下を示します:

  • 問題を含むファイル
  • 違反するSmarty 4ルール
  • スキャナーが自動的に修復できたかどうか

_自動修復を試みる_を有効にしてスキャンを実行した場合、レポートは書き直されたファイルも確認します。

スキャナーが自動的に修復できない問題については、エディタでフラグが立てられたテンプレートファイルを開き、必要な変更を加えます。Smarty 4の一般的な非互換性には以下が含まれます:

  • {php} ... {/php}ブロック(Smarty 4ではサポートされなくなりました)
  • 非推奨の修飾子と関数呼び出し
  • 空白文字に敏感な区切り文字の使用法
  • Smarty 4で変更された登録時プラグインの前提条件

テンプレートの編集に自信がない場合は、最も安全なアプローチは、付属のテーマ(xbootstrap5defaultxswatch5など)に切り替えて、アップグレード完了後に カスタムテーマを別途処理することです。

クリーンになるまで再実行する

Section titled “クリーンになるまで再実行する”

修正後(自動か手動かを問わず)、プリフライトスキャナーを再度実行します。スキャンが残りの問題がないと報告されるまで繰り返します。

スキャンがクリーンになったら、スキャナーUIのスキャナーを終了ボタンを押してプリフライトセッションを終了します。これはプリフライトを完了としてマークし、/upgrade/のメインアップグレーダーを続行できるようにします。

プリフライト完了後、メインアップグレーダーを起動できます:

http://example.com/upgrade/

次のステップについてはアップグレード実行を参照してください。

プリフライトをスキップした場合

Section titled “プリフライトをスキップした場合”

プリフライトをスキップすることは強く推奨されませんが、それを実行せずにアップグレードし、テンプレートエラーが表示されている場合は、トラブルシューティングのSmarty 4テンプレートエラーセクションを参照してください。事後的にプリフライトを実行し、xoops_data/caches/smarty_compile/をクリアして復帰することができます。