Jump to content
comrues

Удалять товар из wishlist кнопкой без перезагрузки

Recommended Posts

В wishlist удаление товара из закладок реализовано ссылкой, вот так - имя_сайта/index.php?route=account/wishlist&remove=57 Таки способом удаление происходить с перезагрузкой страницы. Как это реализовать с помощью аджакса? Я так понимаю, что нужно сделать по принципу как у корзины, где есть onclick=cart.remove('6');"

Подскажите пожалуйста как это реализовать?

Share this post


Link to post
Share on other sites

добавление в вишлист на кнопке onclick="wishlist.add('id_tovara');
дальше идём в файл с жавой (/catalog/view/javascript/common.js) и смотрим 282 строку, внутри неё есть var wishlist = { 'add': function(product_id) готовая к использованию, и пустая 'remove': function() {

далее на основе add нужно дополнить remove
потом в контроллере (/catalog/controller/account/wishlist.php) на основе функции add сделать функцию remove, так как пост запрос из аякса она не увидит.
потом дописываем кнопку в шаблоне для вишлиста, всё.
по крайней мере в моей версии опенкарта это так выглядит, и на мой взгляд план действий такой

Share this post


Link to post
Share on other sites

в конец  controller/account/wishlist.php 
 

Спойлер


public function remove(){


        $this->load->language('account/account');
        $this->load->language('account/wishlist');

		$json = array();
		
		$this->load->model('catalog/product');

		if (isset($this->request->post['product_id'])) {
            $product_id = $this->request->post['product_id'];
        } else {
            $product_id = 0;
        }

        $product_info = $this->model_catalog_product->getProduct($product_id);

        if (isset($this->request->post['product_id']) )  {
            // Remove product of Wishlist
            if ($this->customer->isLogged()) {

				$this->load->model('account/wishlist');
                $this->model_account_wishlist->deleteWishlist($this->request->post['product_id']);
            } else {
                $key = array_search($this->request->post['product_id'], $this->session->data['wishlist']);
                if ($key !== false) {
                    unset($this->session->data['wishlist'][$key]);
                }
			}
			$json['redirect'] = $this->url->link('account/wishlist', '', true);

        }


        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
	}


 


в шаблон  account/wishlist.php 

html  

Спойлер


<button  class="wishlist_remove btn" data-product-id="{{ product.product_id}}">
     <i class="bi bi-x"></i>
</button>

 

 



JS
 

Спойлер


<script type="text/javascript"><!--

$('.wishlist_remove').on('click', function() {
   console.log("whislist remove:", $(this).data('product-id'));
   //return
    $.ajax({
      url: "index.php?route=account/wishlist/remove",
      type: "post",
      data: "product_id=" + $(this).data('product-id'),
      dataType: "json",
      success: function (json) {
        $(".alert-dismissible").remove();
        if (json["redirect"]) {
          location = json["redirect"];
        }

        if (json["success"]) {
          console.log(json["success"]);
          $("#content").prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' +  json["success"] +  ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
        }
        //$("#wishlist-total span").html(json["total"]);
        //$("#wishlist-total").attr("title", json["total"]);

        $("html, body").animate({ scrollTop: 0 }, "slow");
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
      },
    });
});    
//--></script> 


 

 

Share this post


Link to post
Share on other sites
В 25.08.2020 в 17:08, DImNSk сказал:

в конец  controller/account/wishlist.php 
 

  Показать контент

 


public function remove(){


        $this->load->language('account/account');
        $this->load->language('account/wishlist');

		$json = array();
		
		$this->load->model('catalog/product');

		if (isset($this->request->post['product_id'])) {
            $product_id = $this->request->post['product_id'];
        } else {
            $product_id = 0;
        }

        $product_info = $this->model_catalog_product->getProduct($product_id);

        if (isset($this->request->post['product_id']) )  {
            // Remove product of Wishlist
            if ($this->customer->isLogged()) {

				$this->load->model('account/wishlist');
                $this->model_account_wishlist->deleteWishlist($this->request->post['product_id']);
            } else {
                $key = array_search($this->request->post['product_id'], $this->session->data['wishlist']);
                if ($key !== false) {
                    unset($this->session->data['wishlist'][$key]);
                }
			}
			$json['redirect'] = $this->url->link('account/wishlist', '', true);

        }


        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
	}

 

 

 

 


в шаблон  account/wishlist.php 

html  

  Показать контент

 


<button  class="wishlist_remove btn" data-product-id="{{ product.product_id}}">
     <i class="bi bi-x"></i>
</button>

 

 



JS
 

  Показать контент

 


<script type="text/javascript"><!--

$('.wishlist_remove').on('click', function() {
   console.log("whislist remove:", $(this).data('product-id'));
   //return
    $.ajax({
      url: "index.php?route=account/wishlist/remove",
      type: "post",
      data: "product_id=" + $(this).data('product-id'),
      dataType: "json",
      success: function (json) {
        $(".alert-dismissible").remove();
        if (json["redirect"]) {
          location = json["redirect"];
        }

        if (json["success"]) {
          console.log(json["success"]);
          $("#content").prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' +  json["success"] +  ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
        }
        //$("#wishlist-total span").html(json["total"]);
        //$("#wishlist-total").attr("title", json["total"]);

        $("html, body").animate({ scrollTop: 0 }, "slow");
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
      },
    });
});    
//--></script> 

 

 

 

 

 

Спасибо!!!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Seriusis
      Простой модификатор, позволяет добавить товары в избранное без регистрации.
      Основа решения взята в одной из тем на форуме, доработана и оформлена как модификатор. Совместим с 2.3 и 3.x 
      Модифицирует 2 контроллера : wishlist.php и header.php
      Внимание! 
      Если в файле catalog/controller/account/wishlist.php изменялся код или его модифицируют другие модификаторы, не надо ставить этот модификатор! Лучше сделайте изменения руками!
      Демо 
      https://oc23.likedev.pro/
       
      Установка
      Через установщик дополнений оперкарт.
      После установки почистить кэш модификаторов.
       
      Также смотрите модули:
      Accordion & Tabs & Steps, Faq & HowTo Microdata, any place & content
      YouTube lazy load & popup - оптимизация и кастомизация iframe
       

    • By Seriusis
      Скачать/Купить дополнение


      Закладки без регистрации
      Простой модификатор, позволяет добавить товары в избранное без регистрации.
      Основа решения взята в одной из тем на форуме, доработана и оформлена как модификатор. Совместим с 2.3 и 3.x 
      Модифицирует 2 контроллера : wishlist.php и header.php
      Внимание! 
      Если в файле catalog/controller/account/wishlist.php изменялся код или его модифицируют другие модификаторы, не надо ставить этот модификатор! Лучше сделайте изменения руками!
      Демо 
      https://oc23.likedev.pro/
       
      Установка
      Через установщик дополнений оперкарт.
      После установки почистить кэш модификаторов.
       
      Также смотрите модули:
      Accordion & Tabs & Steps, Faq & HowTo Microdata, any place & content
      YouTube lazy load & popup - оптимизация и кастомизация iframe
       

      Добавил Seriusis Добавлено 05.05.2020 Категория Модули Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Opencart.pro 2.3 Обращение к серверу разработчика Нет Старая цена 0  
    • By Exploits
      Модуль WishlistPro - это очень функциональный модуль закладок (список желаний) без регистрации с возможностью все максимально настроить с админки.
      Модуль пока что на Opencart 2.3 и 2.х на все версии немного позже загружу.
      -----------
      Демо
      https://demo23.microdata.pro/
      логин: demo
      пароль: demo777
      просьба посмотреть и ничего не ломать:)
      -----------
      Основные особенности
      Простая установка, авто-активация и настройка Поддержка мультиязыка Закладки/Желания без регистрации с сохранением в аккаунт при логине Можно настроить селектор ссылки на список желаний вверху страницы (и не только) а также текст отображаемый в этой ссылке. (работа с любым шаблоном) Можно выводить блок с выбранными товарами в любом месте сайта - как стандартный модуль. Часто выводят в корзине - отличный маркетинговый ход. При добавлении в желания всплывает окно выбора группы в которую поместить товар. Название можно ввести новое, а можно в выпадающем списке выбрать уже существующие группы в аккаунте. Также при вводе любых символов названия идет автоматический поиск по уже созданным группам. Сделано очень удобно.
      Блок с желаниями - список выбранных товаров
      Модуль WishlistPro позволяет вывести в любом месте сайта блок с каруселью выбранных желаемых товаров. Под каждый шаблон надо делать адаптацию что бы было все в стилистике сайта. Т.к. каждый шаблон индивидуальный - услуга платная, но оплата символическая - всего 200руб за адаптацию.

      В блоке закладок можно настроить:
      Заголовок Количество возле заголовка Настройки слайдера товаров (количество товара, циклическая прокрутка, навигация, пагинация, интервал автоматического перелистывания) Эффект обновления блока Скорость скролла к блоку при добавлении Ширина и высота изображения товара Расширенный список закладок на сайте
       

      В модуле WishlistPro есть расширенный список товаров на замену стандартному. В стоке список желаний выглядит достаточно скудно - лишь базовый функционал. Там можно увидеть только товар, и кнопки удаления/добавления в корзину. В расширенной версии можно:
      Включать или оставить стандартный Все товары в списке разделены по группам Закладки можно сортировать перетягиванием мышки Настраиваемое название страницы списка Кнопка добавить все товары из списка в корзину - можно настроить название кнопки и куда переходить при добавлении всех товаров в корзину Описание вверху и внизу списка с поддержкой html тегов Полностью настраиваемые колонки которые будут отображены в списке желаний, название и отображение для: Фото, Модель, Производитель, Артикул, Цена, Смотрели, Купили, Остаток а также Название товара. Есть возможность отправить на любую почту список желаний. На почту придет структурированных список по группам со ссылками на товары и всеми полями что настроены в админке. Настраиваются всплывающие подсказки для кнопок в списке: Посмотреть, В корзину и Удалить Список (статистика) товаров которые добавляли в желания - в админке
      По многочисленным просьбам в модуле есть список добавленных товаров в желания. Сортировка по количеству добавлений. Это улучшает анализ покупателей и какие товары им наиболее предпостительные. С помощью этого списка можно сформировать ТОП товаров, делать на них акции и другие промо материалы.
       

      Основные данные
      Список можно настроить в лайв режиме. Нажимаем настройку - видим результат Показ колонок: Фото, В категории, Модель, Производитель, Артикул/SKU, Цена, Смотрели, Купили, Остаток. Есть живой поиск который ищет по всем полям и подсвечивает совпадение. Также есть возможность настроить количество подгружаемых товаров за раз.  В списке есть кнопки: посмотреть товар на сайте, редактировать его и удалить из списка, то есть очистить статистику добавлений выбранного товара.  
      Все стили модуля выведены в настройки и их можно изменить по своему усмотрению. Также есть функция сброса стилей по умолчанию, что позволит вернуть, если случайно поломали
      Обновление получилось глобальным. Все кто ранее купил версию Plus - Pro получает бесплатно. Это еще раз подтверждает, все кто купили у меня модули - обновления будут получать бесплатно в независимости от поднятия цены и развития функционала.
       
      Как установить модуль: (если используете WishlistPlus - удалите его)
       
      -= Автоматически через админку =- (рекомендация)
      Переходим в установку модулей - выбираем файл модуля WishlistPro_х.х.ххmod.zip После установки обновляем кеш модификаторов Переходим в модули - устанавливаем WishlistPro Ожидаем уведомление на почту об активации модуля Заходим в WishlistPro и настраиваем модуль  
      -= Вручную с загрузкой по ftp =-
      Загружаем все из папки upload этого архива Переходим в установку модулей - выбираем файл модуля WishlistPro_х.х.ххmod.zip После установки обновляем кеш модификаторов Переходим в модули - устанавливаем WishlistPro Ожидаем уведомление на почту об активации модуля Заходим в WishlistPro и настраиваем модуль  
      По настройкам WishlistPro
      В настройках модуля есть 4 закладки
      Отображение блока. Настройки конкретного блока закладок. Это похоже на настройки обычного модуля в Opencart, например html. Вводим все параметры в первой вкладке и нажимаем сохранить. После чего, как обычный модуль, выбираем его в нужной колонке в нужной схеме в Дизайн - Схемы. Например можно вывести блок с закладками в правой колонке или же внизу страницы. Как обычный модуль. Глобальные настройки. Это настройки не конкретно отображаемого блока а модуля WishListPro в целом. В любом экземпляре модуля все что дальше первой вкладки одинаковое и сохраняется на лету. Основное это селектор обновления и название ссылки. Это сделано для того что бы на лету изменять информацию в шапке сайта о количестве закладок и сам текст. Настроить можно под любой шаблон. Также в этой вкладке можно включить расширенный список закладок. Это будет не просто обычный список а разбитый по группам с возможностью сортировки, отправки на почту, добавление в корзину и другие крутые функции. Этот список можно полностью кастомизировать, назвать все кнопочки и заголовки по своему, добавить верхнее и нижнее описание, а также задать нужные стили. Все сделано очень удобно. Список закладок. В этой вкладке будут отображены все товары которые добавлялись посетителями в закладки. Сортировка идет по самым добавляемым. В этом списке в лайв режиме можно настроить отображение колонок, удалить ненужные товары из списка, задать количество товаров на странице (все что больше подгружается кнопкой Показать еще). Также вверху списка есть крутой живой поиск по товарам с подсветкой результатов. Все сделано для удобства администратора. Информация/Поддержка. Здесь можно найти контакты разработчика и другую полезную информацию. Также если понравился модуль можно присмотреть себе и другие очень полезные дополнения автора и удостоверится в качестве подхода к разработке модулей.
    • By Exploits
      2 999.90 руб
      Скачать/Купить дополнение


      WishList Pro – супер модуль закладок Opencart
      Модуль WishlistPro - это очень функциональный модуль закладок (список желаний) без регистрации с возможностью все максимально настроить с админки.
      Модуль пока что на Opencart 2.3 и 2.х на все версии немного позже загружу.
      -----------
      Демо
      https://demo23.microdata.pro/
      логин: demo
      пароль: demo777
      просьба посмотреть и ничего не ломать:)
      -----------
      Основные особенности
      Простая установка, авто-активация и настройка Поддержка мультиязыка Закладки/Желания без регистрации с сохранением в аккаунт при логине Можно настроить селектор ссылки на список желаний вверху страницы (и не только) а также текст отображаемый в этой ссылке. (работа с любым шаблоном) Можно выводить блок с выбранными товарами в любом месте сайта - как стандартный модуль. Часто выводят в корзине - отличный маркетинговый ход. При добавлении в желания всплывает окно выбора группы в которую поместить товар. Название можно ввести новое, а можно в выпадающем списке выбрать уже существующие группы в аккаунте. Также при вводе любых символов названия идет автоматический поиск по уже созданным группам. Сделано очень удобно.
      Блок с желаниями - список выбранных товаров
      Модуль WishlistPro позволяет вывести в любом месте сайта блок с каруселью выбранных желаемых товаров. Под каждый шаблон надо делать адаптацию что бы было все в стилистике сайта. Т.к. каждый шаблон индивидуальный - услуга платная, но оплата символическая - всего 200руб за адаптацию.

      В блоке закладок можно настроить:
      Заголовок Количество возле заголовка Настройки слайдера товаров (количество товара, циклическая прокрутка, навигация, пагинация, интервал автоматического перелистывания) Эффект обновления блока Скорость скролла к блоку при добавлении Ширина и высота изображения товара Расширенный список закладок на сайте
       

      В модуле WishlistPro есть расширенный список товаров на замену стандартному. В стоке список желаний выглядит достаточно скудно - лишь базовый функционал. Там можно увидеть только товар, и кнопки удаления/добавления в корзину. В расширенной версии можно:
      Включать или оставить стандартный Все товары в списке разделены по группам Закладки можно сортировать перетягиванием мышки Настраиваемое название страницы списка Кнопка добавить все товары из списка в корзину - можно настроить название кнопки и куда переходить при добавлении всех товаров в корзину Описание вверху и внизу списка с поддержкой html тегов Полностью настраиваемые колонки которые будут отображены в списке желаний, название и отображение для: Фото, Модель, Производитель, Артикул, Цена, Смотрели, Купили, Остаток а также Название товара. Есть возможность отправить на любую почту список желаний. На почту придет структурированных список по группам со ссылками на товары и всеми полями что настроены в админке. Настраиваются всплывающие подсказки для кнопок в списке: Посмотреть, В корзину и Удалить Список (статистика) товаров которые добавляли в желания - в админке
      По многочисленным просьбам в модуле есть список добавленных товаров в желания. Сортировка по количеству добавлений. Это улучшает анализ покупателей и какие товары им наиболее предпостительные. С помощью этого списка можно сформировать ТОП товаров, делать на них акции и другие промо материалы.
       

      Основные данные
      Список можно настроить в лайв режиме. Нажимаем настройку - видим результат Показ колонок: Фото, В категории, Модель, Производитель, Артикул/SKU, Цена, Смотрели, Купили, Остаток. Есть живой поиск который ищет по всем полям и подсвечивает совпадение. Также есть возможность настроить количество подгружаемых товаров за раз.  В списке есть кнопки: посмотреть товар на сайте, редактировать его и удалить из списка, то есть очистить статистику добавлений выбранного товара.  
      Все стили модуля выведены в настройки и их можно изменить по своему усмотрению. Также есть функция сброса стилей по умолчанию, что позволит вернуть, если случайно поломали
      Обновление получилось глобальным. Все кто ранее купил версию Plus - Pro получает бесплатно. Это еще раз подтверждает, все кто купили у меня модули - обновления будут получать бесплатно в независимости от поднятия цены и развития функционала.
       
      Как установить модуль: (если используете WishlistPlus - удалите его)
       
      -= Автоматически через админку =- (рекомендация)
      Переходим в установку модулей - выбираем файл модуля WishlistPro_х.х.ххmod.zip После установки обновляем кеш модификаторов Переходим в модули - устанавливаем WishlistPro Ожидаем уведомление на почту об активации модуля Заходим в WishlistPro и настраиваем модуль  
      -= Вручную с загрузкой по ftp =-
      Загружаем все из папки upload этого архива Переходим в установку модулей - выбираем файл модуля WishlistPro_х.х.ххmod.zip После установки обновляем кеш модификаторов Переходим в модули - устанавливаем WishlistPro Ожидаем уведомление на почту об активации модуля Заходим в WishlistPro и настраиваем модуль  
      По настройкам WishlistPro
      В настройках модуля есть 4 закладки
      Отображение блока. Настройки конкретного блока закладок. Это похоже на настройки обычного модуля в Opencart, например html. Вводим все параметры в первой вкладке и нажимаем сохранить. После чего, как обычный модуль, выбираем его в нужной колонке в нужной схеме в Дизайн - Схемы. Например можно вывести блок с закладками в правой колонке или же внизу страницы. Как обычный модуль. Глобальные настройки. Это настройки не конкретно отображаемого блока а модуля WishListPro в целом. В любом экземпляре модуля все что дальше первой вкладки одинаковое и сохраняется на лету. Основное это селектор обновления и название ссылки. Это сделано для того что бы на лету изменять информацию в шапке сайта о количестве закладок и сам текст. Настроить можно под любой шаблон. Также в этой вкладке можно включить расширенный список закладок. Это будет не просто обычный список а разбитый по группам с возможностью сортировки, отправки на почту, добавление в корзину и другие крутые функции. Этот список можно полностью кастомизировать, назвать все кнопочки и заголовки по своему, добавить верхнее и нижнее описание, а также задать нужные стили. Все сделано очень удобно. Список закладок. В этой вкладке будут отображены все товары которые добавлялись посетителями в закладки. Сортировка идет по самым добавляемым. В этом списке в лайв режиме можно настроить отображение колонок, удалить ненужные товары из списка, задать количество товаров на странице (все что больше подгружается кнопкой Показать еще). Также вверху списка есть крутой живой поиск по товарам с подсветкой результатов. Все сделано для удобства администратора. Информация/Поддержка. Здесь можно найти контакты разработчика и другую полезную информацию. Также если понравился модуль можно присмотреть себе и другие очень полезные дополнения автора и удостоверится в качестве подхода к разработке модулей. Добавил Exploits Добавлено 08.06.2017 Категория Сравнения, закладки Системные требования CURL Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Да Старая цена  
    • By kirians
      Вы задумывались над тем, что удобный поиск повышает конверсию Вашего магазина на 25-35%?
      Чем быстрей пользователь найдет то, что ищет, тем больше вероятность, что он останется на сайте и купит товар!
       

       
          Увеличивайте конверсии на сайте с помощью умного и быстрого поиска:
      Используйте подсказки, чтобы сделать поиск более точным Выберите поля, по которым хотите вести поиск (имя, описание, SKU, ISBN, MODEL, UPC, JAN, Meta tag, Attribute) Посмотрите историю поиска, для дальнейшей статистики и отслеживания переходов Настраиваете выводимые результаты поиска (заголовки, категории или отключите цену из выводимых параметров) С каждым новым запросом Ваш поиск будет становиться более точным Укажите количество выводимых товаров по запросу Укажите правила для отображения заголовков, картинок товара и показывайте или прячьте цену товара Подходит к любой теме используемой в вашем магазине Адаптивный на мобильных устройствах  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.