Hangmany

Добавление в корзину со страницы категорий

Рекомендуемые сообщения

Hangmany    0

Доброго!

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

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

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

Для поля количества товаров моих скудных знаний хватило. Так работает и передает в корзину правильно:

function addToCart(product_id) {
   var qty = $('input[id=quantity_'+product_id+']').val();
   if(!qty){qty=1;}
   $.ajax({
	  url: 'index.php?route=checkout/cart/update',
	  type: 'post',
	  data: 'product_id=' + product_id + '&quantity=' + qty,
	  dataType: 'json',
	  success: function(json) {
		 $('.success, .warning, .attention, .information, .error').remove();
		
		 if (json['redirect']) {
			location = json['redirect'];
		 }
		
		 if (json['error']) {
			if (json['error']['warning']) {
			   $('#notification').html('<div class="warning" style="display: none;">' + json['error']['warning'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
			}
		 }  
		
		 $('#cart_total').html(json['total']);		
	  }
   });
}

Но вот как туда добавить еще и опции (они уже отображены рядом с товарами).

Я думал добавить еще одну переменную option(пока тренируюсь только на одном select):

var opt = $('select[id=select-'+product_id+']').val();
и передать ее контроллеру как и количество товара:

data: 'product_id=' + product_id + '&quantity=' + qty + '&option=' + opt,
Но в этом случае скрипт вообще не работает, вероятно, неправильно считываются данные из поля select.

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

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

Благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
hurupachka    54

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Hangmany    0

Для вывода атрибутов, описания, видео.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
konar777    3

И как же вы это решили, помогите плиз, борюсь с этой же задачей, чувствую что решение где-то близко, но не нашел еще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Spinto
      Всем привет! Столкнулся с задачей в Opencart.
      Необходимо в маленькой карочке товара(та, которая отображается в категориях, поиске и проч)
      вывести значение опции размера товара. У некоторых товаров есть несколько вариантов размеров,
      у других - всего один. У остальных данной опции нет.
      В случае, когда у товара всего одна опция размера - выводим размер, в случае, когда несколько - "Размеры на выбор", когда нет размера - не выводим ничего.
      Через <?php var_dump($product['options']) ?>
      я вывел все элементы массива с опциями.

      array(2) { [0]=> array(7) { ["product_option_id"]=> string(4) "1504" ["product_option_value"]=> array(7) { [0]=> array(6) { ["product_option_value_id"]=> string(5) "17905" ["option_value_id"]=> string(3) "609" ["name"]=> string(10) "Белый" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [1]=> array(6) { ["product_option_value_id"]=> string(5) "17906" ["option_value_id"]=> string(3) "598" ["name"]=> string(14) "Бежевый" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [2]=> array(6) { ["product_option_value_id"]=> string(5) "17907" ["option_value_id"]=> string(3) "604" ["name"]=> string(12) "Лагуна" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [3]=> array(6) { ["product_option_value_id"]=> string(5) "17621" ["option_value_id"]=> string(3) "601" ["name"]=> string(20) "Фиолетовый" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [4]=> array(6) { ["product_option_value_id"]=> string(5) "17909" ["option_value_id"]=> string(3) "701" ["name"]=> string(14) "Розовый" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [5]=> array(6) { ["product_option_value_id"]=> string(5) "17910" ["option_value_id"]=> string(3) "700" ["name"]=> string(12) "Персик" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [6]=> array(6) { ["product_option_value_id"]=> string(5) "17911" ["option_value_id"]=> string(3) "702" ["name"]=> string(35) "Насыщенный розовый" ["image"]=> string(90) "inf-mebel.nichost.ru/image/cache/catalog/options/c..." ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } } ["option_id"]=> string(2) "20" ["name"]=> string(21) "Цвет обивки" ["type"]=> string(5) "image" ["value"]=> string(0) "" ["required"]=> string(1) "1" } [1]=> array(7) { ["product_option_id"]=> string(4) "1512" ["product_option_value"]=> array(3) { [0]=> array(6) { ["product_option_value_id"]=> string(5) "17786" ["option_value_id"]=> string(3) "680" ["name"]=> string(39) ""M 90/190" - 1045х2060х1045" ["image"]=> NULL ["price"]=> bool(false) ["price_prefix"]=> string(1) "+" } [1]=> array(6) { ["product_option_value_id"]=> string(5) "17787" ["option_value_id"]=> string(3) "681" ["name"]=> string(39) ""M 90/200" - 1045х2160х1045" ["image"]=> NULL ["price"]=> string(11) "3185.00 р." ["price_prefix"]=> string(1) "+" } [2]=> array(6) { ["product_option_value_id"]=> string(5) "17797" ["option_value_id"]=> string(3) "682" ["name"]=> string(36) ""M 120" - 1045х2160х1345" ["image"]=> NULL ["price"]=> string(12) "15720.00 р." ["price_prefix"]=> string(1) "+" } } ["option_id"]=> string(2) "17" ["name"]=> string(12) "Размер" ["type"]=> string(5) "radio" ["value"]=> string(0) "" ["required"]=> string(1) "1" } }

      Как мне получить доступ именно к той части массива, которая отвечает за размер, чтобы сделать через if else выборку по количеству этих размеров и по каждому случаю сформировать результат, а также получить значение самого размера?
      Спасибо!
    • От VladimirV
       
      Доброго времени суток. Хочу вывести минимальную цену в категорию, что то делаю не так, прошу вашей помощи.
      ocStore 2.3.0.2.2
      в catalog>model>catalog>product добавил:
      public function getMinPriceFromCategory($category_id) { $query = $this->db->query("SELECT LEAST(p.price,IFNULL(ps.price, p.price)) min_price FROM `" . DB_PREFIX . "category` c RIGHT JOIN `" . DB_PREFIX . "product_to_category` p2c ON p2c.category_id = c.category_id RIGHT JOIN `" . DB_PREFIX . "product` p ON p2c.product_id = p.product_id LEFT JOIN `" . DB_PREFIX . "product_special` ps ON p.product_id = ps.product_id AND ps.date_end >= NOW() AND ps.date_start <= NOW() WHERE c.category_id = " . (int)$category_id . " AND p.status = 1 AND c.status = 1 ORDER BY min_price LIMIT 0,1 "); if ($query->num_rows) { return $query->row['min_price']; } else { return 0; } } в cotroller>product>category, после  $data['categories'][] = array(   добавил:
      'min_price' => $this->model_catalog_product->getMinPriceFromCategory($result['category_id']), в шаблоне category.tpl:
      <?php echo $min_price; ?> Итог: "Undefined variable: min_price". Понимаю что делаю не правильно, но знаний не хватает, понять где и что делаю не так. Прошу указать что нет так делаю, заранее спасибо.
    • От room402
      Добрый день, необходимы следующие доработки, на основе имеющегося функционала. Текста много, но здание не очень большое и не очень сложное так как часть функционала есть, только вот разработчик его занят другими проектами.
       
      1. 1.
      Нужно доработать коэффициент соотношения единиц между единицами, которые отображаются для клиента и единицами, которые прописаны в БД (Другими словами, настроить сколько вычитать единиц со склада).
       
      Например, сейчас существует следующий функционал сделанный на заказ, но наспех:
      Если группа клиента "опт" и атрибут "тип: ткань", тогда 1 единица в форме заказа* = 4ед из БД** То есть со склада вычитается по формуле 4х, где х - это количество единиц на форме.
      *Единица в форме заказа - это то количество, которое отображается на странице продукта, в корзине, в электронном счете, который отправляется клиенту.
      **Единица из БД - это количество товара в карточке товара в админке, количество которое занесено в таблицу БД.
      Контролируется это соотношение из админки, из настроек магазина, там устанавливается коэффициент. Система-настройки- закладка основное.
      Например, этот функционал сделан для опта. У нас 2 магазина, прицеплены к одной БД. Так в рознице можно купить 1/4 товара (это и принято за 1 ед), а в опте мин количество и шаг 4ед, но для клиента отображается как 1 (а расчет цены идет как цена*4).
       
      Нужна возможность привязывать любые атрибуты и группы клиентов и указывать для них значения. То есть, нужно все это вынести в админку, а сейчас у нас только коэфф.
      Например,
      группа клиента опт и атрибут тип Кожа = 1 единица в форме заказа = 2ед из БД ()
      группа клиента опт и атрибут тип Кружево = 1 единица в форме заказа = 10ед из БД
      группа клиента розница и атрибут тип Ткань = 10 единиц в форме заказа*= 2ед из БД
      *( 5ед != 1ед так как шаг на экране заказа товара должен быть именно 10 ед а не 5)
      Цена подтягивается стандартно, в зависимости от условий в карточке товара. Но, цена, которая отображается в корзине, категориях, на главной странице, в поиске и на странице продукта должно соответствовать 1 единице в форме заказа т.е. если 1 единица в форме заказа = 10ед из БД то и цена должна быть умножена на коэфф. 10. Клиенту в счете, который приходит на почту тоже должны отображаться ед из формы заказа а не из БД.
      То есть, число, которое отображается, зависит от коэфф. связки с числом из БД.
       
      1.1.2
      Нужно к текущему стандартному числовому окошку добавить слева кнопку минус и справа кнопку плюс. Шаг нажатия равен либо стандартному значению из карточки товара (если никаких условий нет) либо условию из п. 1.1 если таковое присутствует. Цена должна меняться динамически (мы купим модуль).
       
      1.1.3.
      Необходимо показывать группы атрибутов только выбранным там группам клиентов.
      Например, если в группе атрибутов "Ткань" выбрано: показывать - Группа клиентов Опт. То показываться все атрибуты, принадлежащие этой группе будут только группе клиентов опт.
       
      1.2.
      Доработка выбора опций покупки товара.
      Нужно доработать опции покупки товара.
      2 опции покупки товара. Условие появления: группа клиента и атрибут у товара.
      После загрузки страницы идет проверка остатков товара по БД на возможность существования опций. Если условие выполняется для обеих, то обе опции присутствуют, если только для одной, то работает только одна опция, а другую нельзя выбрать, под ней появляется "надпись не хватает товара на складе". Обе опции закрыты если товара нет на складе.
      1. Опция.
      Работает как выбор товара из п.1.1.
      Но должно быть ограничение на количество товара, который можно ввести (не более того значения что в базе).
      2. Опция.
      Спец коэффициент между ед на форме и БД(складом).
      Можно реализовать на основе п 1.1. как доп коэфф. Опция появляется, если в админке для этого товара она выбрана. Либо если можно проще реализовать, то на ваше усмотрение.
       Возможность купить только 1 ед. То есть, эту опцию просто можно выбрать и положить в корзину, нажав кнопку купить, нет счетчика.
      В корзине покупателя эти опции должны отображаться по-разному, а не смешиваться в один товар.
      1 опция отображается как:
         Х СМ
      Где Х = число ед с формы заказа.
      2 опция отображается как:
         45хY
      Где Y - значение атрибута товара Ширина/2
    • От sv2109

      350.00 руб
      View File


      Option Image Change - Изменение картинки товара в зависимости от опции
      Модуль дает возможность изменять изображение на странице товара в зависимости от выбранной опции для этого товара.
      Для этого в админ панели при создании / редактировании товара к нужным изображениям привязываются определенные опции.
      Модулю для работы необходим vqmod.
      Установка
      1. Скопировать все с папки "upload" в корневую папку вашего магазина. Файлы движка не будут перезаписаны.
      2. Установить модуль в панели управления
      3. При необходимости поменяйте настройки
      Новое в версии 1.1:
      - добавлена возможность выбирать несколько опций для 1 изображения
      - изображение в корзине соответствует выбранным опциям
      Версии движка, на которых тестировался модуль
      - ocStore v1.5.4.1
      - ocStore v1.5.5.1
      - opencart v1.5.6
      но должен работать на всех 1.5.х версиях
      - OpenCart, ocStore 2.0, 2.1, 2.2, 2.3 (для получения этих версий - пишите в ЛС автору или на почту sv2109@gmail.com)
       
      Submitter sv2109 Submitted 03/27/2014 Category Product Options Системные требования Сайт разработчика http://sv2109.com Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу