Очистить корзуну "одним махом"

#
Re: Очистить корзуну "одним махом"
Да подскажите пожалуйста решение.
Очень не хватает такой кнопки
Даже поломанные часы два раза в сутки показывают правильное время
#
Re: Очистить корзуну "одним махом"
Присоединяюсь
Делись своими знаниями. Это путь к бессмертию.
#
Re: Очистить корзуну "одним махом"
up
по прежнему нуждаемся в подсказке
Даже поломанные часы два раза в сутки показывают правильное время
#
Re: Очистить корзуну "одним махом"
Присоединяюсь, подскажите как?
#
Re: Очистить корзуну "одним махом"
DTR, создаете форму с кнопкой с произвольным именем, например delete_all и сабмитите ее на корзину
или создаете ссылку с неким произвольным get-параметром, например /shop/cart/?delete_all

В _настройках_ ТДС Корзина проверяете, что передан этот параметр и обрабатываете его примерно так
if(isset($_REQUEST['delete_all']))
{
   // здесь получаем все товары из корзины
   $a_row = $shop->GetItemsFromCart($site_users_id, $shop_id);
   if ($a_row)
   {      
      $param = array();
      $param['user_id'] = $site_users_id;
      $param['shop_id'] = $shop_id;
      
      // затем в цикле для каждого из них получаем id
      foreach ($a_row as $item_id => $cart_item_row)
      {
         // и удаляем товар с этим id
         $param['item_id'] = $item_id;         
         $shop->DeleteCart($param);
      }
   }
}
Заказов не беру. Консультирую редко.
#
Re: Очистить корзуну "одним махом"
Мы сделали вот так, тоже поделюсь))

/* Удаляем все товары */
if (to_str($_GET['action']) == 'delete_cart')
{
$param = array();
$param['shop_id'] = $shop_id;
$shop->ClearCookieAndSessionCart($param);

$shop = new shop();
$param['site_user_id'] = '';
$param['shop_id'] = $shop_id;
if (class_exists('SiteUsers'))
{
     $SiteUsers = & singleton('SiteUsers');
     $param['site_user_id'] = $SiteUsers->GetCurrentSiteUser();
}
else
{
     $param['site_user_id'] = 0;
}
$a_row = $shop->GetItemsFromCart($param['site_user_id'], $param['shop_id']);
for ($i = 0; $i < sizeof($a_row); $i++){
$param['item_id'] = $a_row[$i]['shop_items_catalog_item_id'];
$shop->DeleteCart($param);
}
}
#
Re: Очистить корзуну "одним махом"
DTR, мой способ немного рациональнее
Заказов не беру. Консультирую редко.
#
Re: Очистить корзуну "одним махом"
Kotoff, небольшой недочёт:
заменить
$param['item_id'] = $item_id;

на
$param['item_id'] = $cart_item_row["shop_items_catalog_item_id"];
творческая студия Auris
#
Re: Очистить корзуну "одним махом"
auris-studio, это не недочет, это особенность системы. В одном из режимов (то-ли при наличии модуля Пользователи, то ли без, навскидку не помню точно) индексы элементов массива $cart_item_row равны идентификаторам товаров, а в другом режиме это просто порядковые числительные от 0 до N

Но да - ваш метод должен работать во всех случаях, в то время как мой - только при определенных условиях. Я просто скопировал этот фрагмент кода с того сайта, где эта багофича не проявляется по определению.
Спасибо за поправку.
Заказов не беру. Консультирую редко.
#
Re: Очистить корзуну "одним махом"
Публикую для тех, кто не разобрался. Актуально для версии HostCMS 5. За основу взято решение от Kotoff. Можно занести в полезные решения.
В XSL-шаблоне "МагазинКорзина" в нужном месте добавляем:
<a href="/shop/cart/?action=delete_all" onclick="return confirm('Вы уверены, что хотите удалить?');" title="Удалить все товары из корзины" alt="Удалить все товары из корзины" class="del"></a>

В Настройках ТДС "Интернет-магазин корзина" дописываем:
/* Удаляем все товары */
if (to_str($_GET['action']) == 'delete_all')
{
   // здесь получаем все товары из корзины
   $a_row = $shop->GetItemsFromCart($site_users_id, $shop_id);
   if ($a_row)
   {      
      $param = array();
      $param['user_id'] = $site_users_id;
      $param['shop_id'] = $shop_id;
      
      // затем в цикле для каждого из них получаем id
      foreach ($a_row as $item_id => $cart_item_row)
      {
         // и удаляем товар с этим id
        $param['item_id'] = $cart_item_row["shop_items_catalog_item_id"];        
         $shop->DeleteCart($param);
      }
   }
}

Как видите, решение от Kotoff отличается только изменением первой строчки кода. Но с данным изменением работает.
Авторизация