Ошибка при добавлении в корзину
При добавлении в корзину товара, которого нет в наличии, вылезает что-то такое:
{"status":"fail","errors":"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, SUMMIT V3 (SUMMIT V3 8.0\u043c2 - \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442) \u0442\u0442\u0432\u0430."}
Где это можно поправить?
Спасибо заранее!
3 ответа
Та же фигня. В мобильной версии делаю возможность добавления товара в корзину из списка товаров (list-table). Все получается, но если хочешь заказать больше, чем есть в наличии, вместо сообщения "Извините, но в наличии только столько-то штук ..." вылазит это чудо: {"status":"fail","errors":"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u043d\u043e \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0435\u0434\u0438\u043d\u0438\u0446 \u0442\u043e\u0432\u0430\u0440\u0430 \u0413\u0435\u043b\u044c \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043b\u044f \u0440\u0435\u0441\u043d\u0438\u0446 \u0438 \u0431\u0440\u043e\u0432\u0435\u0439 \u0441 \u0440\u0430\u0441\u0447\u0435\u0441\u043a\u043e\u0439, \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0443\u0436\u0435 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u0440\u0437\u0438\u043d\u0435 \u043f\u043e\u043a\u0443\u043f\u043e\u043a."}
kosmetichka.com.ua/m/
Ошибка в дизайне. Сообщение "Извините, но в наличии только 2 единиц товара Гель косметический для ресниц и бровей с расческой, и все они уже в вашей корзине покупок." должно корректно обрабатываться скриптами и отображаться пользователю.
Алексей, благодарю, что ответили.
То, что текст в левой кодировке, понятно.
С дизайном этой страницы я мало что делал. Насколько я понимаю, скрипт не может по-человечески выдать ошибку о количестве именно с этой страницы. Кстати, странно, что по-умолчанию не встроили кнопочку "В корзину" в списке товаров в шаблоне Mobile.
Вот list-table.html:
{* {include file="list-sorting.html" inline} *}
<!-- CATALOG LIST -->
<div class="shop-list-wrapper">
{foreach $products as $p}
{$available = $wa->shop->settings('ignore_stock_count') || $p.count === null || $p.count > 0}
<!-- CATALOG ITEM -->
<!-- ITEM IMAGE -->
<figure class="image-block">
<a href="{$p.frontend_url}" title="{$p.name}">
{$wa->shop->productImgHtml($p, '200@2x', ['itemprop' => 'image', 'alt' => $p.name, 'default' => "`$wa_theme_url`img/dummy200.png"])}
</a>
{$badge_html = $wa->shop->badgeHtml($p.badge)}
{if $badge_html}
<div class="badge-wrapper">
<div class="">{$badge_html}</div>
</div>
{/if}
</figure>
<!-- ITEM TEXT -->
<div class="text-block">
<h3 class="product-header">
<a href="{$p.frontend_url}" title="{$p.name}">
<span itemprop="name"><strong>{$p.name}</strong></span>
{if $p.rating > 0}
<span class="rating">{$wa->shop->ratingHtml($p.rating)}</span>
{/if}
</a>
</h3>
{if $p.type_id == '2'}{$product = $wa->shop->product($p.id)}{if $product.features.versiya_napravlenie_aromata_}<div class="small" style="color: #777;">Версия: {$product.features.versiya_napravlenie_aromata_}</div>{/if}{/if}
{if !empty($p.summary)}<meta itemprop="description" content="{strip_tags($p.summary)}">{/if}
<meta itemprop="price" content="{$p.price}">
<meta itemprop="priceCurrency" content="{$wa->shop->primaryCurrency()}">
{if $available}
<form class="purchase addtocart" {if $p.sku_count > 1}data-url="{$p.frontend_url}{if strpos($p.frontend_url, '?')}&{else}?{/if}cart=1"{/if} method="post" action="{$wa->getUrl('/frontendCart/add')}">
<input type="hidden" name="product_id" value="{$p.id}">
<div class="controls-wrapper">
<div class="price-wrapper">
{if $p.compare_price > 0}
<div class="old-price">{shop_currency_html($p.compare_price)}</div>
{/if}
<div class="price">{shopFlexdiscountPluginHelper::price($p)}</div>
</div>
</div>
<div class="add-form-wrapper">
<input type="hidden" name="quantity" value="1">
<div class="submit-wrapper">
<input type="submit" value="[`Add to cart`]">
</div>
</div>
<div class="added2cart" style="display: none;">
{* <div class="">{sprintf('[`%s is now in your shopping cart`]', $product.name|escape, $wa->getUrl('shop/frontend/cart'))}</div> *}
<div class="button-block">
<a class="general-button gray" href="{$wa->getUrl('shop/frontend/cart')}">В корзине</a>
</div>
</div>
</form>
{else}
<div class="controls-wrapper">
<div class="out-of-stock">
<strong>
{if $wa->shop->settings('ignore_stock_count')}
[`Pre-order only`]
{else}
[`Out of stock`]
{/if}
</strong>
</div>
</div>
{/if}
</div>
</div>
<div class="cart" id="cart-flyer">
{include file="product-list.cart.html" inline}
<!-- plugin hook: 'frontend_product.cart' -->
{* @event frontend_product.%plugin_id%.cart *}
{foreach $frontend_product as $_}{$_.cart}{/foreach}
</div>
<!-- ITEM LINK -->
{* <div class="link-block">
<a href="{$p.frontend_url}" title="{$p.name}"></a>
</div> *}
</div>
{/foreach}
</div>
<script type="text/javascript" src="{$wa_theme_url}product.js?v{$wa_theme_version}"></script>
<script type="text/javascript">
$(function () {
new Product('#cart-form{if $wa->get('cart')}-dialog{/if}', {
currency: {json_encode($currency_info)}
{if count($product.skus) > 1 or $product.sku_type}
,services: {json_encode($sku_services)}
{/if}
{if $product.sku_type}
,features: {json_encode($sku_features_selectable)}
{/if}
});
});
</script>
{if isset($pages_count) && $pages_count > 1}
<!-- Lazy Load -->
<div class="lazyloading-paging" data-times="2" data-link-text="[`Load more`]" data-loading-str="[`Loading...`]">
{wa_pagination total=$pages_count attrs=['class' => "pag-h"]}
</div>
{/if}
А эта ошибка относится к JS, поэтому код который вы вложили ничем не поможет.
На демо-витрине проверьте работу оригинальной темы и соответственно внесите изменения или откатитесь к оригинальной.
Алексей, я нашел причину возникновения ошибки. Это конфликт в product.js, вот в этом месте:
this.form.submit( function () {
var f = $(this),
$button = self.add2cart.find(".submit-wrapper");
// Show refreshing icon over button
if (typeof toggleRefreshIcon === "function") {
toggleRefreshIcon($button, "show");
}
$.post(f.attr('action') + '?html=1', f.serialize(), function (response) {
if (response.status == 'ok') {
self.cartButtonVisibility(false);
if (f.data('cart')) {
$("#page-content").load(location.href, function () {
$("#dialog").hide().find('.cart').empty();
});
}
if (response.data.error) {
alert(response.data.error);
}
// Update Cart Counter at Header Place
if (typeof updateHeaderCartCount === "function") {
updateHeaderCartCount( response );
}
// restore button
if (typeof toggleRefreshIcon === "function") {
toggleRefreshIcon($button, "hide");
}
} else if (response.status == 'fail') {
alert(response.errors);
}
}, "json");
return false;
});
Обновление показа кнопки блокирует вывод диалогового окна, насколько я понял. Если этот кусок вырезать, то на чистой установке в карточке товара та же беда получается.
И в оригинальной теме забыли сделать кнопку "В корзину" в list-table! Я пытаюсь ее туда внедрить. И возникает ошибка.
Без указания адреса вашего сайта не обойтись. Скорее всего ошибка кроется в теме оформления.
Сайт timeless.ru, пример товара: ACCESS V6 4.0м2 - полный комплект 69103 руб.
Ошибка в дизайне. Сообщение "К сожалению, SUMMIT V3 (SUMMIT V3 8.0м2 - полный комплект) ттва." несколько обрезано.
Ну и что, как исправлять то? Та же беда если заказывать с главной страницы. Со страниц каталога всё хорошо