Анонимные пользователи получают те же товары в корзину

Я использую модуль drupal commerce, у меня проблема с анонимными пользователями, когда пользователи нажимают кнопку "Добавить в корзину", в корзине отображаются дополнительные элементы, добавленные другими анонимными пользователями.

Я использую пользовательский код для добавления в корзину, используя ajax. следующий код

    // Add a product to cart on ajax call.
    function mymodule_custom_add_to_cart($product_id,$uid){
        $line_item = commerce_product_line_item_new(commerce_product_load($product_id));
        commerce_cart_product_add($uid, $line_item);
        $order = commerce_cart_order_load($uid);
        commerce_cart_order_refresh($order);
        // loads data array from order object
        $data = mymoudle_custom_cart_load_all_variables($order->order_id);
        $jsonencoded = json_encode($data);
        print $jsonencoded;
    }

Я не знаю, почему все анонимные пользователи получают одинаковые продукты в этой корзине.

Пожалуйста, помогите мне выяснить проблему.

ОБНОВЛЕНИЕ 1:

Я изменил код для анонимного пользователя следующим образом, затем я получаю сообщение об ошибке: EntityMetadataWrapperException: невозможно получить данные свойства данных, так как родительская структура данных не установлена. в EntityStructureWrapper->getPropertyValue() (строка 451 из /entity.wrapper.inc

ИЗМЕНЕННЫЙ КОД

    // Add a product to cart on ajax call.
    function mymodule_custom_add_to_cart($product_id,$uid){
        if($uid == 0){

            $order_id = commerce_cart_order_id($uid);
            if($order_id == false){
             $order = commerce_cart_order_new(0, 'checkout_checkout');
            } else {
             $order = commerce_order_load($order_id);
            }

            // Load whatever product represents the item the customer will be
            // paying for and create a line item for it.
            $product = commerce_product_load($product_id);
            $line_item = commerce_product_line_item_new($product, 1, $order->order_id);
            commerce_line_item_save($line_item);

            // Add the line item to the order using fago's rockin' wrapper.
            $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
            $order_wrapper->commerce_line_items[] = $line_item;

            // Save the order again to update its line item reference field.
            commerce_order_save($order);

            // loads data array from order object
            $data = mymoudle_custom_cart_load_all_variables($order->order_id);
            $jsonencoded = json_encode($data);
            print $jsonencoded;
        }else{
            $line_item = commerce_product_line_item_new(commerce_product_load($product_id));
            commerce_cart_product_add($uid, $line_item);
            $order = commerce_cart_order_load($uid);
            commerce_cart_order_refresh($order);
            // loads data array from order object
            $data = mymoudle_custom_cart_load_all_variables($order->order_id);
            $jsonencoded = json_encode($data);
            print $jsonencoded;
        }
    }

ОБНОВЛЕНИЕ 2: ВОПРОС РЕШЕН.

Сайт сканирует googlebot, который нажимает на ссылку addtocart и автоматически добавляет продукт в учетную запись анонимного пользователя, поэтому я удалил ссылку для кнопки addtocart и использовал коммерческую форму addtocart.

1 ответ

У всех анонимных пользователей UID равен нулю (см. Документацию). Вот почему все товары, добавленные разными анонимными пользователями, добавляются в одну корзину.

Другие вопросы по тегам