Skip to main content

Обзор

Некоторые темы не обновляют значок автоматически, и это руководство покажет вам, как исправить это с помощью небольшого фрагмента пользовательского кода. Выполните шаги ниже, чтобы все синхронизировалось корректно. Вот пример того, как выглядит это несоответствие: Drawer Upcart показывает Cart 2, в то время как пузырек значка корзины темы все еще отображает 1

Важные шаги перед началом!

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

1. Используйте Chrome Developer Tools

Каждая тема отличается, поэтому вам понадобятся Chrome Developer Tools (Inspect), чтобы определить имя класса вашего значка корзины.
  • Щелкните правой кнопкой мыши по значку корзины на витрине и выберите Inspect в Google Chrome.
  • Найдите HTML-элемент вашего значка корзины (например, <span class="cart-count-bubble">).
  • Нужна помощь с Chrome Developer Tools? Ознакомьтесь с этим руководством с пошаговыми инструкциями.

2. Обратитесь за помощью (необязательно)

Если вы не можете найти класс своего значка корзины или зашли в тупик, не переживайте! У вас есть варианты:
  • Свяжитесь с разработчиком вашей темы: они лучше всех знают вашу тему и могут помочь найти правильный класс.
  • Наймите эксперта Shopify: если вам нужна дополнительная поддержка, у Shopify есть каталог проверенных экспертов, которые могут помочь. Найдите эксперта Shopify здесь.

🚧 Отказ от ответственности за пользовательский код

Приведенный ниже пример кода — это лишь шаблон, он не будет работать, если вы скопируете и вставите его напрямую. Вы должны заменить имя класса-заполнителя (например, .cart-count-bubble > span) на конкретное имя класса вашего значка корзины.

Пошаговое исправление

Мы разбили этот процесс на три уровня исправлений, начиная с самого простого решения (уровень 1). Каждый уровень строится на предыдущем; сначала попробуйте уровень 1, а затем переходите к уровню 2 или 3 только при необходимости.

Шаг 1: добавьте пользовательский код в Upcart

Сначала, поскольку нам понадобится добавить пользовательский HTML-код в редакторе Upcart, подготовим этот раздел:
  1. Перейдите в Upcart Editor > Settings, затем откройте вкладку Custom HTML (находится в More settings, если не помещается в ряд вкладок).
  2. Установите расположение Scripts (Before Load).
  3. Вставьте сюда ваш отредактированный код (мы приведем примеры для каждого уровня ниже).
Вот как это выглядит: Настройки Custom HTML в Upcart с расположением HTML, установленным на Scripts Before Load

Шаг 2: примените исправление по уровню

Уровень 1 (базовый)

Когда корзина загружается, этот скрипт суммирует количества по позициям корзины и записывает результат в элемент счетчика внутри пузырька корзины вашей темы. Он подходит для тем, где счетчик находится в простом вложенном элементе (например, .cart-count-bubble > span). Не забудьте
  • Заменить .cart-count-bubble > span на класс вашего значка корзины.
  • Протестировать на витрине после добавления кода.
Вставка скрипта счетчика уровня 1 в Custom HTML Upcart с использованием селектора cart-count-bubble

Пример кода для уровня 1

Примечание об устаревшем API: колбэки window.upcartOnCartLoaded по-прежнему работают, но объявлены устаревшими и выводят предупреждения в консоль. Используйте upcartSubscribeCartLoaded для всех новых скриптов. Обратите внимание, что у event.cart нет свойства item_count; используйте event.cart.items.reduce((total, item) => total + item.quantity, 0) для расчета общего количества товаров.

Уровень 2 (средний)

Если уровень 1 не сработал, ваша тема, возможно, заменяет весь HTML значка корзины при изменении счетчика. Эта версия перестраивает разметку значка для состояний пустой и непустой корзины, чтобы счетчик и значок оставались синхронизированными. Не забудьте
  • Заменить #cart-icon-bubble-custom на селектор обертки значка корзины вашей темы.
  • Протестировать после сохранения.
Вставка скрипта значка корзины уровня 2 в Custom HTML Upcart с использованием селектора cart-icon-bubble-custom

Пример кода для уровня 2

Примечание об устаревшем API: колбэки window.upcartOnCartLoaded по-прежнему работают, но объявлены устаревшими и выводят предупреждения в консоль. Используйте upcartSubscribeCartLoaded для всех новых скриптов.Обратите внимание, что у event.cart нет свойства item_count — приведенные выше скрипты вычисляют итог с помощью event.cart.items.reduce((total, item) => total + item.quantity, 0) и передают его как itemCount. Более старые копии этих сниппетов, использующие cart.item_count, вызывают ReferenceError и незаметно никогда не обновляют значок.

Уровень 3 (продвинутый)

Если ваша тема использует отдельную разметку значка корзины для десктопа и мобильных устройств, выполните ту же логику обновления для двух селекторов, чтобы каждое устройство получало правильный HTML и счетчик. Не забудьте
  • Заменить #cart-icon-bubble-custom-desktop и #cart-icon-bubble-custom-mobile на классы вашей темы.
  • Тщательно протестировать как на десктопе, так и на мобильных устройствах.
Вставка скрипта уровня 3 в Custom HTML Upcart с отдельными селекторами значка корзины для десктопа и мобильных устройств

Пример кода для уровня 3

Примечание об устаревшем API: колбэки window.upcartOnCartLoaded по-прежнему работают, но объявлены устаревшими и выводят предупреждения в консоль. Используйте upcartSubscribeCartLoaded для всех новых скриптов.Обратите внимание, что у event.cart нет свойства item_count — приведенные выше скрипты вычисляют итог с помощью event.cart.items.reduce((total, item) => total + item.quantity, 0) и передают его как itemCount. Более старые копии этих сниппетов, использующие cart.item_count, вызывают ReferenceError и незаметно никогда не обновляют значок.

Все еще не работает?

Если ни один из этих уровней не решает проблему, не переживайте — у вас еще есть варианты! Скорее всего, это означает, что ваша тема требует более сложной настройки. Вот что можно сделать дальше:
  • Обратитесь за помощью к разработчику вашей темы.
  • Наймите эксперта Shopify, который сможет создать индивидуальное решение для вашего магазина.