Ubercart 3でUbercart製品の価格を変更する必要がありますDrupal 7、製品がカートに追加されたとき。いくつかの条件を確認する必要があり、満たされている場合は価格を変更します。と
function MYMODULE_uc_cart_item($op, &$item) {
switch ($op) {
case 'load':
drupal_set_message(t('It works!'), 'status');
break;
}
}
しかし、私は右フックをターゲットにしているのかわかりません。
動作しないようです(呼び出されません)。
手がかりをありがとう
これがあなたがプレイできる別のフックです hook_uc_add_to_cart
_Parameters:
$nid - the node ID of the product
$qty - the quantity being added
$data - the data array, including attributes and model number adjustments
_
ここにフックを操作する方法があります
Drupalのモジュールシステムは、「フック」の概念に基づいています。フックはPHP foo_bar()という名前の関数です。ここで、「foo」はモジュールの名前(ファイル名はfoo.module)であり、「bar」はフック各フックには、定義されたパラメーターのセットと指定された結果タイプがあります。
function hook_uc_cart_item($op, &$item) {
作業フックは、次のようなモジュール名に置き換える必要があります
function YOURMODULENAME_uc_cart_item($op, &$item)
参照 フック
問題はキャッシュをクリアすることでした。何らかの理由で、Drushからキャッシュをクリアしても完全には機能しません。 (インターフェースからクリアする必要があります)。また、ある時点で実装されたAPC iかもしれません。モジュール/その他のコードのキャッシュをクリアするときに問題があります。
編集:
今のところ、hook_uc_cart_itemを機能させることができません。 ( hook_cart_item ) hook_add_to_cart でも機能し、 hook_uc_cart_alter でも機能します(私にとって)
hook_cart_alterのアプローチを取る可能性があると思います。カートが表示されるたびにアイテムが取得されるため、実際には常に読み込まれ、パフォーマンスの問題について警告しましたが、カートの内容に応じて動的計算を行うため、常にカートを監視する必要があるので、develとkcachegrindが文句を言わなければ、私もしません:)
uc_couponモジュールもフック_cart_alterを恐れずに使用しています:)
これは私がそれを解決した方法です:
function mymodule_uc_cart_alter(&$items)
{
$items[45]->price = 29393;
}
この例では、値を変更する方法を示すために、変更をハードコーディングしています。当然、要件が何であれ、ここに独自のロジックを適用します。