Пример получения идентификаторов товаров в корзине текущего пользователя:
$product_ids = array();
if (($order_id = commerce_cart_order_id($GLOBALS['user']->uid)) != FALSE) {
$order_wrap = entity_metadata_wrapper('commerce_order', $order_id);
$line_item_types = commerce_product_line_item_types();
foreach ($order_wrap->commerce_line_items as $line_item) {
if (in_array($line_item->type->value(), $line_item_types)) {
$product_ids[] = $line_item->commerce_product->product_id->value();
}
}
}
Аналогичный filter handler для Views — Commerce Views Product in Cart filter.
Написанное актуально для
Drupal Commerce 1
Похожие записи
- AJAX в форме корзины Commerce 2
- AJAX добавление товара в корзину в Commerce 2
- Программно добавить товар в корзину Commerce 1
- AJAX кнопка обновления корзины + пересчёт цены при изменении количества в Commerce 1
- Модуль Commerce Fast Ajax Add to Cart — ajax кнопка "Добавить в корзину" без кэширования формы
Комментарии
Вопрос на счет id пользователя
Не правильней будет вытянуть его так;
без разницы
первый вариант просто короче
Андрей, запись:
Эквивалентна записи:
Другими словами это синтаксический сахар. global $user; имеет смысл использовать, если $user будет в дальнейшем использоваться ещё. А так, зачем лишняя переменная?
(хотя в PHP, с его миллионом переменных и массивов, сидящих в памяти, одна переменная - мелочь...)
dansamara, в общем согласен. Но вопрос у меня возник потому что
запись такого типа
В Друпале используется практически во всех модулях, и в ядре тоже
Лирика?
Так сексуальнее же ;)
Если серьёзно, то считаю, что в сниппетах надо обязательно использовать $GLOBALS['user'], ибо неизвестно, куда приведённый код вставят. У меня был случай, когда я в своём модуле переносил код из одного места в другой и global $user у меня оказался в середине кода, переопределив существующую переменную $user. В результате получил красивый баг - все, кто заходил в профиль пользователя становился этим пользователем. Ошибка обнаружилась не сразу :)
Плач Ярославны )
О_о, вроде, знакомый код. Если не ошибаюсь, то вы это делали для задачи, где нужно было достать зависимые товары по энтити рефернс для товаров из корзины. Ваш, конечно, намного правильней - с использованием обвертки энтити. Интересно смогли вы достать ему определенную вариацию товара без писания своего кода? Из-за того, что с коммерс работал в первый раз, и еще не уловил все, я так и не допер как это сделать из админки.
Все это конечно если я не ошибаюсь, возможно, вы делали это для другой задачи.
Добавить комментарий