デフォルトとは異なる特別なチェックアウト完了メッセージを表示したい製品がいくつかあります。
デフォルトのリダイレクト ページを別のものに変更することで、おそらくこれを実行できることはわかっています。 [そして、それが別の問題を引き起こすかどうかはわかりません]
ただし、この問題に取り組むための標準/より良い方法があるかどうかを知りたいです。
ありがとう!、
D
String Overridesモジュールを考えてみましょう。これについての引用は次のとおりです(モジュールのプロジェクトページから):
サイト上のテキストをすばやく簡単に置き換える方法を提供します。
特徴:
- t()を通過したものを簡単に置き換える
- ロケールのサポートにより、任意の言語で文字列をオーバーライドできます
- Locale モジュールから簡単に移行できるように、*.po ファイルをインポート/エクスポートする機能
- これは Locale に代わるものではないことに注意してください。何千ものオーバーライドがあると、利益よりも苦痛が生じる可能性があるためです。これは、簡単なテキスト変更が必要な場合にのみ使用してください。
私が考えていることを行う唯一の他の方法は、ubercart がメッセージを表示するために使用するテーマ関数をオーバーライドすることだと思います。そして、これはおそらく最も理にかなっているように思えます。
この場合、theme_uc_cart_complete_saleをオーバーライドします
私は設定することができました
$_SESSION['is_special_product'] == TRUE;
$message が設定されている場合は、$special_message に設定します。
if ($_SESSION['special_product']) {
$special_message = t('This is my special message');
$message = variable_get('special_product_message', $special_message;
}
最後に、モジュールからオーバーライドするには、プリプロセス フックにフックする必要があります。
function $modulename_prepocess_$hook(&$message) {
if ($_SESSION['special_product']) {
$special_message = t('This is my special message');
$message = variable_get('special_product_message', $special_message;
}
}
モジュールにこの関数を含めるだけでは不十分であることに注意することが重要です。前処理関数は、テーマ関数をオーバーライドするテンプレート ファイルが呼び出されたときにのみ呼び出されます。