Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Добавить товар с обязательными опциями из каталога товаров


Recommended Posts

Здравствуйте.

 

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

 

Как можно это обойти? чтобы при клике в каталоге на купить товар в любом случае добавлялся в корзину, а вот этого редиректа https://prnt.sc/FtRbJwhCwN7K чтобы не было

Link to comment
Share on other sites


В 21.09.2023 в 03:42, AlexMax13 сказав:

Здравствуйте.

 

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

 

Как можно это обойти? чтобы при клике в каталоге на купить товар в любом случае добавлялся в корзину, а вот этого редиректа https://prnt.sc/FtRbJwhCwN7K чтобы не было

підредагувати метод add (створити модифікатор дуже просто), в catalog/controller/checkout/cart.php , вказавши якщо опції не вибрані але обов’язкові, додай ці опції (наприклад - першу з них). Зверніть тут увагу.

 

image.thumb.png.ad7ce90d76d8cae31f821f4fbf3490fa.png

  • +1 1
Link to comment
Share on other sites

21.09.2023 в 11:57, Eldaeron сказал:

підредагувати метод add (створити модифікатор дуже просто), в catalog/controller/checkout/cart.php , вказавши якщо опції не вибрані але обов’язкові, додай ці опції (наприклад - першу з них). Зверніть тут увагу.

 

image.thumb.png.ad7ce90d76d8cae31f821f4fbf3490fa.png

Добрий день! підкажіть як зробити щоб опція в товарі була вибрана за замовчування? у мене в кожному товарі буде тільки 1 опція. зараз виходить що клієнт повинен завжди вибирати

Link to comment
Share on other sites


В 21.09.2023 в 14:40, Vetlucky777 сказав:

Добрий день! підкажіть як зробити щоб опція в товарі була вибрана за замовчування? у мене в кожному товарі буде тільки 1 опція. зараз виходить що клієнт повинен завжди вибирати

Наприклад додати jquery код внизу product.tpl [twig]

 

let options = $('[id^="input-option"]');

options.each(function(){
    $(this).find('input:first').attr('checked', true);
});

 

 

  • +1 1
Link to comment
Share on other sites

В 21.09.2023 в 11:57, Eldaeron сказав:

підредагувати метод add (створити модифікатор дуже просто), в catalog/controller/checkout/cart.php , вказавши якщо опції не вибрані але обов’язкові, додай ці опції (наприклад - першу з них). Зверніть тут увагу.

 

image.thumb.png.ad7ce90d76d8cae31f821f4fbf3490fa.png

 

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

Link to comment
Share on other sites


В 22.09.2023 в 00:55, AlexMax13 сказав:

 

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

 

а хто мішає взяти шлях звідки прийшли дані?)

 

  • +1 1
Link to comment
Share on other sites

В 23.09.2023 в 00:16, AlexMax13 сказав:

 

можете привести приклад?) якщо не важко

 

Ну наприклад такий костиль:


		$from = $this->request->server['HTTP_REFERER'];
		$parts = explode('/', $from);
		$parts = array_reverse($parts, true);

		foreach ($parts as $part) {
			$_query = $this->db->query("SELECT query FROM " . DB_PREFIX . "seo_url WHERE keyword = '" . $this->db->escape(trim($part)) . "' LIMIT 1");
			if ($_query->row['query']) {
				$query = explode('=', $_query->row['query']);
				$controller = $query[0];
				break;
			}
		}

		if ($controller == 'category_id') {
			// товар додано із сторінки категорії
		}

		if ($controller == 'product_id') {
			// товар додано із сторінки продукта
		}

 

  • +1 1
Link to comment
Share on other sites

@Eldaeron спасибо за идею)) Смотрите. я просто закомментировал появление ошибки https://prnt.sc/ILfjFJwFQpdF

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

Мне просто нужно чтобы везде небыло этого редиректа кроме страницы товара, ну тоесть чтобы она никак не пострадала

Link to comment
Share on other sites


В 29.09.2023 в 00:26, AlexMax13 сказав:

@Eldaeron спасибо за идею)) Смотрите. я просто закомментировал появление ошибки https://prnt.sc/ILfjFJwFQpdF

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

Мне просто нужно чтобы везде небыло этого редиректа кроме страницы товара, ну тоесть чтобы она никак не пострадала

Для всього сайту (і категорії, і сторінка товару).

 

Як варіант перепишіть в шаблоні виводу теми catalog/view/ВАША_ТЕМА/template/product/product.tpl:

 

Замінити з:

url: 'index.php?route=checkout/cart/add',

На:

url: 'index.php?route=checkout/cart/addWithOptions',

 

Дальше в catalog/controller/checkout/cart.php, замінити:

public function add() {

 

На цей код:

public function addWithOptions() {
	$this->add(true);
}

public function add($check = false) {

 

Дальше замінити:

				foreach ($product_options as $product_option) {
					if ($product_option['required'] && empty($option[$product_option['product_option_id']])) {
						$json['error']['option'][$product_option['product_option_id']] = sprintf($this->language->get('error_required'), $product_option['name']);
					}
				}

 

На цей код:

			if ($check === true) {
				foreach ($product_options as $product_option) {
					if ($product_option['required'] && empty($option[$product_option['product_option_id']])) {
						$json['error']['option'][$product_option['product_option_id']] = sprintf($this->language->get('error_required'), $product_option['name']);
					}
				}
			}

 

В такому вигляді, по всьому сайті, окрім товару із сторінки product - буде попадати в корзину без перевірки опцій, а на самій сторінці опції будуть обов’язкові.

  • +1 1
Link to comment
Share on other sites

@Eldaeron Дуже дякую, попробую тоді, коли припече) тобто якщо щось піде не так. Наразі ніби опції обов'язкові на сторінці товару, але у всіх інших місцях ні)

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.