Drupal / Ubercart Проверьте, есть ли определенный продукт в корзине при оформлении заказа - PullRequest
5 голосов
/ 23 сентября 2010

У меня есть один определенный товар, который должен быть в корзине при определенных обстоятельствах.Я просматривал документацию по API Ubercart и не вижу каких-либо хуков, которые были бы очевидным местом, чтобы увидеть, существует ли определенный элемент до оформления заказа.

Я мог бы использовать хук hook_add_to_cart, чтобы добавить специальныйпри добавлении первого товара, но я обеспокоен тем, что посетитель может удалить предмет, а затем завершить покупку без требуемого предмета.

Любые предложения о том, как убедиться, что специальный товар находится в корзине наконтроль

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

Вы можете иметь модуль и запускать что-то вроде:

function mymodule_init() {
   if (preg_match('/checkout/', request_uri()) {
      $items = uc_cart_get_contents();
      foreach ($items as $item) {
         // code
      }
   }
}

, которое сработает на странице оформления заказа и загрузит содержимое корзины.Каждый раз, когда они попадают на страницу оформления заказа, uc_cart_get_contents () возвращает содержимое корзины.

http://www.ubercart.org/docs/api/uc_cart_get_contents

Возможно, есть и лучшие способы сделать то, что вы хотите сделать, например использовать условное действие дляпредотвратить оформление заказа, если товар B находится в корзине, а товар A - нет.Вы также можете посмотреть на наборы продуктов, но у меня нет большого опыта в этом.

2 голосов
/ 31 июля 2013

Старый вопрос, но я нашел отличное решение.

hook_uc_cart_item_delete () работает специально для определенных объектов, когда они удаляются.Вы можете просто установить этот хук в своем модуле, проверить, удаляется ли конкретная сущность, которая зависит от другого элемента, а затем использовать uc_cart_remove_item () для элемента, который вы хотите удалить.

2 голосов
/ 24 сентября 2010

Из того, что вы сказали, звучит так, как будто модуль набора продуктов может быть очень ценным способом обеспечения того, чтобы любые предметы, связанные с основным продуктом, были сохранены в корзине.

Комплект продуктов входит в состав Ubercart, и вы найдете его на странице модулей в разделе «Ubercart - extra». Если это не очень хорошо, тогда мы можем увидеть использование API:)

...