web-dev-qa-db-ja.com

新しいモジュールを追加せずにubercartに一括割引を追加する

同じubercartモジュールを使用している複数のサイトがあります。サイトの1つに、追加する必要がある新しい割引があります。 25個以上購入すると25%割引、100個以上購入すると35%割引になります。私はubercartに新しいモジュールを追加したくありません。既に機能しているすべてのものを台無しにしたくないからです。さらに、これは特定の1つのアイテムに対するこの1つの割引です。

Ubercartのドキュメントを見ると、役立つフックがいくつかあるようです。 hook_add_to_carthook_line_item_alterおよびhook_order定義されている ここ 。私は正しい道を進んでいますか、またはこれを積み重ねることを少し簡単にする別のより良い方法またはすでにレイアウトされた例がありますか?

1
Peter

さまざまなフックを掘り下げてさまざまなことを試した後、これは結局私のために機能するようになりましたが、結局実際には非常に簡単でした。

function hook_cart_item($op, &$item) {
    if ($op == 'load') {
        if ($item->nid == xxx && $item->model == 'xxxxxxxxxx') {
            if ($item->qty >= 100) {
                $item->price = round($item->price * .65,2);
            } else if ($item->qty >= 25) {
                $item->price = round($item->price * .75,2);
            }
        }    
    }
}
1
Peter