CartiX
Снимки экрана скоро появятся.
Подробное описание ещё готовится.
Тема «Базовая» (default)
Референс-структура темы витрины CartiX (Smarty 5, шаблоны .html).
Структура
themes/default/
├── theme.json # манифест: имя, версия, СХЕМА настроек
├── theme.png # превью для галереи тем
├── templates/ # Smarty-шаблоны страниц
│ ├── layout.html # каркас (наследуется всеми через {extends})
│ ├── home.html # главная
│ ├── category.html # листинг категории
│ ├── product.html # карточка товара
│ ├── list.html # страница списка товаров (is_page)
│ ├── brand.html # страница бренда
│ ├── tag.html # страница тега
│ ├── page.html # CMS-страница
│ ├── search.html # результаты поиска
│ ├── cart.html # корзина (этап 3)
│ ├── checkout.html # чекаут (этап 3)
│ ├── partials/ # переиспользуемые куски
│ │ ├── header.html footer.html product-card.html
│ │ ├── breadcrumbs.html pagination.html filters.html
│ │ └── (sort-bar, sku-options, services, product-features …)
│ └── blocks/ # контент-блоки
│ ├── hero.html
│ └── product-list.html # вывод подборки (getList)
├── assets/ # статика темы
│ ├── css/theme.css
│ ├── js/theme.js
│ ├── images/
│ └── fonts/
└── locale/ # переводы строк темы
├── ru.json uk.json en.json
Ключевые механизмы
- Клонирование: тема копируется целиком в новую папку (полная независимая копия, без наследования). Правки клона ни на что не влияют; обновления базовой темы в клон не переносятся — это самостоятельная тема.
- Настройки (schema-driven): описаны в
theme.json → settings.groups, редактор строит форму автоматически. Значения хранятся per-витрина, попадают в шаблоны как$theme.*. - Функции тем:
{url},{trans},{money}(готовы),{getList}(вывод подборок),{hook}(точки расширения для плагинов — работают нативно на Smarty). - Данные: контроллер витрины собирает контекст (товар/категория/список/фильтры) и передаёт в шаблон. Логику в шаблонах не пишем — только вывод.
- Безопасность: песочница Smarty (без
{php}, автоэкранирование HTML).
Точки расширения (hooks)
storefront.head, storefront.body.start/end, header.end, footer.*,
home.after.lists, product.after.buy, product.bottom, product.card.footer,
catalog.filters.end, checkout.fields. Плагин подписывается — вставляет свой HTML.
Что починили
Отмеченная галочка в фильтре возвращалась пустой. Покупатель отмечал, скажем, «40 Вт», список сужался, сверху появлялась метка отбора — а сама галочка в фильтре стояла пустой, будто ничего не выбрано. Так было только у целых значений: «6.1» отмечалось правильно, а «40» — нет.
Товары, которых нет в наличии, всплывали в трёх местах. Витрина, настроенная их скрывать, всё равно предлагала такие товары в подсказках поиска, в блоке «с этим покупают» под карточкой и в блоках товаров на главной. Теперь правило действует и там; в блоках на главной заработало и «опускать в конец».
Карта сайта обновляется сразу после правки настроек витрины. Раньше она до часа жила прежним составом: вы включали «скрывать товары не в наличии», а карта продолжала звать поисковик на скрытые страницы.
Что нового
Витрина сама решает, что делать с товарами, которых нет в наличии.
Откройте «Витрины → Основное» — там появился выбор из трёх вариантов. Настройка принадлежит витрине, а не магазину: если у вас розница и опт на одном каталоге, правило у каждой может быть своим.
Показывать как есть — так магазин работал до сих пор: распроданные товары стоят в списках наравне с остальными.
Опускать в конец списков — товары остаются на витрине, но уходят после тех, что есть в наличии. Выбранный порядок каталога при этом сохраняется: если раздел отсортирован «сначала дешёвые» или расставлен вами вручную, внутри групп «есть» и «нет» этот порядок никуда не денется.
Скрывать с витрины — товары пропадают из разделов каталога, поиска, подсказок поиска, подборок на главной и из карты сайта. Страница самого товара при этом остаётся доступной: на неё ведут ссылки из писем, рекламы и закладок покупателей, и отвечать им «страница не найдена» неправильно.
Два правила, которые магазин соблюдает сам, чтобы настройка не работала против вас:
Если включён заказ при нулевом остатке, скрытие товара не касается — раз вы готовы его продать, покупатель обязан его видеть. Скрываются только те товары, которые купить нельзя: например, у которых все варианты сняты с продажи.
В режиме «скрывать» из фильтров пропадает отбор «Только в наличии»: других товаров на витрине уже нет, и такой отбор ничего не менял бы.
Что сделать после обновления
Ничего делать не нужно: у всех витрин сохраняется прежнее поведение — «Показывать как есть». Если хотите убрать распроданное из витрины или опустить вниз, откройте настройки витрины и выберите нужный вариант.
Что нового
Товары в категории теперь расставляются мышью.
У категории и раньше можно было выбрать порядок «Вручную», но задать сам порядок было нечем: магазин показывал товары так, как они добавлялись, и настройка ничего не меняла. Теперь откройте «Каталог → Товары», выберите категорию — и перетаскивайте строки: взяли товар, отпустили над другим, он встал перед ним. Если отметить галочками несколько товаров и потащить один из них, переедут все отмеченные и встанут подряд.
Порядок можно менять на любой странице списка, хоть на пятой: магазин запоминает, куда вы поставили товар, и не трогает остальные. Покупатель увидит этот порядок, когда у категории выбрана сортировка «Вручную».
Список товаров открывается в порядке своей категории. Выбрали категорию, собранную руками, — видите её ровно такой, какой её видит покупатель, и тут же правите. Выбрали категорию, которая сортируется по названию, по цене или «сначала новые», — список покажет то же самое, что и сайт. Раньше порядок в панели и на витрине приходилось сверять в двух окнах.
Товар, добавленный в категорию позже, встаёт в конец собранной вручную витрины, а не перед расставленными товарами.
Переезд со старого магазина переносит и порядок товаров в категориях — если старый магазин его знает. Так бывает при подключении к его базе; по сети порядок не передаётся.
Что сделать после обновления
Ничего делать не нужно: у категорий, где порядок не задавали, всё остаётся как было. Если вы хотите собрать витрину руками, выберите категории порядок «Вручную» в её настройках, а сами товары расставьте в списке товаров.
Что починили
Логотипы способов доставки и оплаты не показывались при оформлении заказа.
Вы загружаете знак перевозчика или платёжной системы в самом способе («Настройки → Оплата и доставка»), и в личном кабинете покупателя он был виден. А на странице оформления — нет: магазин не передавал логотип теме вовсе, поэтому нарисовать его тема не могла, даже если пыталась. Вторая причина была ещё незаметнее: список способов перерисовывается каждый раз, когда покупатель называет город или меняет доставку, и в этой перерисовке логотипа не было — знак пропал бы сразу после первого пересчёта.
Теперь знак стоит слева от названия способа и остаётся на месте при любом пересчёте. В темах «По умолчанию», «Маркет» и «Промо» это работает сразу после обновления.
Если тема у вас своя или куплена у другого разработчика, логотип доступен в данных способа под именем logo — и у варианта доставки, и у способа оплаты. Размер знака магазин задаёт сам, подгонять высоту в теме не нужно.
Что сделать после обновления
Если логотипы у способов ещё не загружены, откройте «Настройки → Оплата и доставка», выберите способ и загрузите картинку — покупатель увидит её при оформлении заказа.
Что нового
Числовую характеристику теперь можно выбирать галочками, а не только ползунком.
Раньше объём, вес, мощность и любое другое число покупатель отбирал ползунком «от» и «до». Когда значений немного и они круглые — 5, 10, 30, 50 и 100 мл, — это неудобно: покупатель ловит нужное число мышью и всё равно получает соседние. Теперь у такой характеристики можно включить список значений, и он выбирает объём одной галочкой.
Как включить: откройте «Каталог → Типы товаров и характеристики», выберите характеристику (например «Объём») и убедитесь, что включено «Участвует в фильтрах витрины». Ниже появится выбор, как покупатель отмечает значение: ползунком «от» и «до» или галочками из списка значений. Сохраните — фильтр на витрине сменится сразу.
Вид задаётся каждой характеристике отдельно, поэтому в одной колонке фильтров у вас могут стоять и галочки, и ползунок: объём — галочками, а высота, которая идёт подряд от 5 до 200 мм, — ползунком. Ползунок стоит оставить там, где значений много и они не круглые.
Рядом с каждым значением магазин пишет, сколько за ним товаров. Значение, которого нет при уже выбранном отборе, не пропадает, а гаснет — покупатель видит, что такой объём в магазине есть, просто не сочетается с остальным выбором. Снять отметку можно тем же крестиком сверху, что и у обычных значений.
Настройка работает во всех местах, где есть фильтры: в разделе каталога, в поиске, на странице бренда и на странице метки. Тему оформления править не нужно — в том числе вашу собственную или купленную: галочка «30 мл» устроена для темы так же, как галочка «Синий».
Что сделать после обновления
Ничего делать не нужно: все числовые характеристики остаются на ползунке, как и были. Если у какой-то из них значений немного, зайдите в характеристику и включите список значений — на витрине это видно сразу.
Что нового
Статус заказа в списке теперь видно цветом: название окрашено так же, как вы задали статусу в настройках. Раньше цветной была только отметка слева, и колонка статусов читалась сплошным серым списком.
Метка о новых делах в меню стала заметной. Вместо бледного числа рядом с названием раздела магазин показывает красный кружок — новый заказ вы увидите, даже когда работаете в другом разделе.
Что нового
Колонку фильтров в разделе каталога вы теперь собираете сами. Откройте «Каталог → Категории → Фильтры», выберите «Собрать вручную» и составьте список: характеристику добавляете поиском, порядок задаёте перетаскиванием, лишнее убираете корзиной. Покупатель увидит колонку ровно такой.
Цена, «только в наличии», «со скидкой» и склад стали такими же строками этого списка. Раньше они стояли сверху всегда — теперь их можно убрать из раздела или поставить под характеристиками.
Рядом с характеристикой магазин пишет, у скольких товаров раздела она заполнена, а у незаполненной ставит пометку. Фильтр, по которому в разделе нечего отбирать, на витрине не появится, и теперь это видно ещё до сохранения.
Что починили
Порядок фильтров, выбранный вручную, на витрине разъезжался. Тема рисовала сначала все характеристики со списком значений, потом ползунки числовых и только затем «да/нет»: раздел, где «Объём» стоял вторым, показывал его последним. Теперь фильтры идут ровно тем порядком, каким вы их расставили.
Раздел, из которого убрали все фильтры, показывал покупателю пустую колонку. Теперь колонки просто нет, а место занимают товары.
В выпадающих списках панели не было поиска там, где он должен был быть: выбор характеристики, языка, похожих товаров и три поля в основных настройках. Теперь по этим спискам можно искать.
Что сделать после обновления
Если у вас своя тема, перенесите в неё разметку фильтров: колонка рисуется по новым данным filters.all, и без правки порядок в ней останется прежним — сначала списочные характеристики, потом числовые, потом «да/нет». Три темы из поставки уже обновлены. Как переносить, с примером разметки: https://cartixx.com/docs/theme/data
Что нового
Тема может напечатать текст страницы, который владелец пишет в дополнении «SEO-оптимизация», одной строкой — {seo_text}. В темах из поставки этим тегом теперь выводится текст внизу главной: раньше там стояла заготовка из файлов темы, а теперь показывается ваш текст, свой на каждом языке. Пока текст не написан, тема показывает прежнюю заготовку, а тема «Default» — вообще ничего, чтобы пустого блока на странице не было.
Тег работает и без дополнения: магазин объявляет его пустым, поэтому тема с ним не ломается. Для авторов тем он описан в справочнике: https://cartixx.com/docs/theme/data
Что сделать после обновления
Чтобы писать текст главной, обновите дополнение «SEO-оптимизация» до версии 1.3.0.
Что починили
В редакторе заказа при доставке курьером улица теперь подсказывается справочником перевозчика: начинаете вводить — магазин предлагает названия, и в накладную уезжает улица в том виде, в каком её знает перевозчик. Раньше менеджер набирал улицу наугад и правил адрес руками при выпуске накладной.
Адрес заказа подставляется в поля перевозчика: у заказа с курьерской доставкой улица, дом и квартира уже заполнены, а поля открывались пустыми — казалось, что адрес потерялся. Заодно эти поля больше не показываются дважды: перевозчик спрашивает их сам.
Важно перед обновлением
Настройка раздела «Показывать товары подкатегорий» раньше не влияла на сайт: раздел всегда показывал товары всех подразделов. Теперь настройка работает, и при обновлении она включается у всех разделов — магазин выглядит как прежде. Если где-то нужно показывать только свои товары, выключите её у этого раздела.
Что починили
Перенос раздела в другой раздел больше не рвёт ссылки. Раньше старый адрес отвечал «страница не найдена» вместе со всеми подразделами и товарами внутри, и позиции в поиске терялись. Теперь магазин уводит посетителей со старой ссылки на новую, как при смене адреса.
Число товаров в дереве разделов показывает то, что увидит покупатель: черновики, скрытые и архивные товары больше не считаются, а раздел «по условиям» считает и товары своих подразделов.
Возврат раздела «по условиям» к обычному больше не стирает набранные условия — переключите обратно, и они на месте.
Товар без цены не попадает в раздел «дешевле 100»: раньше пустая цена считалась нулём, и такой раздел собирал весь незаполненный каталог.
Старая цена в условиях сравнивается в валюте магазина. Товар за 150 долларов больше не попадает в раздел «старая цена до 200 ₴».
Два условия по опциям покупки теперь сходятся на одном артикуле: раздел «красные 44-го размера» собирает товары, у которых есть именно красный 44-й, а не красный отдельно и 44-й отдельно.
Ползунок числовой характеристики больше не выбрасывает товары, которых покупатель не касался: границы ползунка считаются по тем же данным, по которым идёт отбор.
Условия раздела проверяются при сохранении: значение от другой характеристики, диапазон «от–до» у характеристики со списком значений и отрицательная цена больше не сохраняются молча, а объясняются словами.
Адрес страницы для других языков (hreflang) на второй и дальше странице выдачи ведёт на ту же страницу, а не на первую.
Карта сайта пересобирается сразу после создания, правки или удаления раздела, а не через час.
В теме «Default» число товаров пишется по-человечески («1 товар», «2 товара»), а пустой раздел больше не предлагает сбросить фильтры, которых покупатель не ставил. У раздела «по условиям» убран порядок «вручную»: расставить товары мышью в таком разделе нельзя.
Что нового
Образец заголовков и описаний для страниц SEO-фильтра теперь сохраняется отдельной кнопкой — создавать страницы для этого не нужно. Под полями видно, какой заголовок получится, и сказано, что образец один для всего магазина. Если в образце строки для поиска нет значения характеристики, магазин предупредит: заголовок выйдет одинаковым у всех страниц, и поиск сочтёт их дублями.
Что починили
Работает с дополнением «SEO-фильтр» версии 1.3.1 — обновите его вместе с магазином.
Слишком длинный образец больше не обрывает создание страниц с ошибкой: текст обрезается по длине поля, а отказ написан понятными словами, без служебных названий полей.
Что сделать после обновления
Обновите дополнение «SEO-фильтр» до 1.3.1.
Что нового
В разделе «SEO → SEO-фильтр» появились образцы заголовков и описаний для страниц, которые магазин создаёт автоматически. Заголовок собирается из названия категории, названия характеристики и её значения — «Бутылки объём 300 мл», — а дальше идёт то, что вы допишете сами: «купить оптом в Киеве, цены от…». Образец пишется один раз на каждом языке магазина, и все созданные страницы получают такие тексты. Работает с дополнением «SEO-фильтр» версии 1.3.0.
Что сделать после обновления
Обновите дополнение «SEO-фильтр» до 1.3.0 — без него поля образцов сохранять некому.
Что нового
Шапку, рамку и подвал писем покупателям теперь можно править. В разделе «Уведомления» появился блок «Оформление писем» с общим шаблоном письма: в нём вы меняете цвет шапки, логотип, подпись в подвале, а переменная «Текст письма» отмечает место, куда встаёт текст каждого уведомления. Раньше шапка с названием магазина добавлялась к письму сама, и поменять её было негде.
Отдельному письму можно включить «Свой шаблон письма». Тогда общий шаблон к нему не добавляется, и письмо уходит ровно так, как написано в уведомлении, вместе с вашей шапкой и подвалом. При включении в письмо подставляется общий шаблон, чтобы было с чего начать.
На странице подборки товаров тема может показать категории над списком: и те, что выбраны в условиях подборки, и те, в которых лежат её товары, со счётом товаров в каждой. Что именно доступно шаблону, описано в справочнике: https://cartixx.com/docs/theme/data
Что сделать после обновления
Ничего делать не нужно: письма уходят в прежнем оформлении. Если вы уже писали письмо целиком, со своей шапкой, у этого уведомления сразу включён «Свой шаблон письма».
Что починили
Вёрстка, вставленная в «Исходный код» текстового редактора, после сохранения превращалась в одну строку без переносов и отступов. Теперь текст, который вы вставили и не правили в обычном режиме, сохраняется ровно таким, каким вы его вставили. Если текст правили в обычном режиме, исходный код разложен по строкам с отступами по вложенности.
Обёртки с классами, секции и встроенное видео редактор выбрасывал при первой же правке в обычном режиме: блок с классом превращался в голые абзацы. Теперь такой кусок хранится целиком и показывается в тексте плашкой «Своя вёрстка». Чтобы его изменить, дважды щёлкните по плашке: откроется исходный код.
У кнопки «Товары» на панели редактора вместо подписи была служебная надпись. Теперь там обычный текст.
Что нового
Категорию «по условиям» теперь можно собрать по цене. В условиях отбора выберите «Цена» и укажите границы, например от 0,01 до 5: в разделе окажутся товары, которые продаются по цене в этих пределах с учётом акций.
В блоке аксессуаров тема может показать, сколько штук есть в наличии: {$acc.count}. Если остаток у товара не ведётся, значение пустое.
Что починили
Категория «по условиям» на сайте была пустой, хотя в панели у неё стояло число товаров. Теперь её товары видны на витрине, в поиске внутри категории, в подборках и акциях, нацеленных на неё. Товары, привязанные к такой категории вручную, пока она была обычной, в неё больше не попадают.
Если в своей теме магазина нет шаблона страницы подборки или блога, эти страницы отвечали ошибкой. Теперь магазин берёт недостающий шаблон из стандартной темы, а шапка и подвал остаются вашими.
Что сделать после обновления
Если у вас своя тема, проверьте, есть ли в её папке templates файлы product-list.html, blog.html, blog-category.html, blog-post.html и blog-tag.html, а в папке partials файл blog-card.html. Без них подборки и блог откроются в разметке стандартной темы. Чтобы они выглядели как остальной сайт, скопируйте эти файлы из themes/default/templates в свою тему и оформите под неё. Устройство темы описано здесь: https://cartixx.com/docs/theme/structure
Что починили
Покупатель исправлял ФИО в личном кабинете, нажимал «Сохранить», и ничего не происходило: страница не обновлялась, надпись о сохранении не появлялась. Теперь после сохранения страница открывается заново с новыми данными и надписью «Профиль сохранён». Покупатель-компания может исправить в профиле и ФИО, а не только название.
Вместо «Профиль сохранён», «Пароль изменён» и «Текущий пароль неверный» в кабинете выводились служебные надписи вида storefront.profile_saved. Теперь там обычный текст на языке витрины.
В выгрузке заказов колонка «Название компании» была пустой у всех заказов компаний. Теперь название выгружается, в том числе у уже оформленных заказов. В печатных формах название компании доступно и как {$customer.company_name}.
Что нового
В SEO-фильтре страницу подбора можно собрать по числовой характеристике: объёму, весу, диаметру. В редакторе страницы у такой характеристики поля «от» и «до». Чтобы страница показывала ровно одно значение, например флаконы на 30 мл, укажите в обоих полях одно и то же число.
Что починили
Если сохранить в редакторе страницу подбора, у которой есть условие по числу, цене или «да/нет», это условие стиралось, и страница начинала показывать всю категорию. Теперь условия сохраняются целиком.
Что сделать после обновления
Обновите дополнение «SEO-фильтр» до версии 1.2.0: без него числовые характеристики в редакторе не появятся.
Что нового
На плашке склада в очереди заказов теперь стоит сумма, на которую собирает этот склад, а не количество товара. Сумма совпадает с суммой склада в счёте: стоимость строк за вычетом скидки на них. Количество и число позиций показываются в подсказке при наведении на плашку.
Что починили
Если стереть у категории meta title, meta description или описание и сохранить, в базе оставался прежний текст. Так же нельзя было стереть переводимые поля у товаров, брендов, страниц, статей, характеристик и услуг. Теперь стёртое поле стирается.
При выборе другой категории в дереве менялось только название, а описание, meta, условия и остальные поля оставались от предыдущей категории. Теперь форма открывает выбранную категорию целиком.
Что сделать после обновления
Если вы правили категории после переключения между ними, проверьте их описания и meta: поля предыдущей категории могли сохраниться в выбранную.
Что нового
Поле формы заказа теперь можно скрыть от покупателя и задать ему значение по умолчанию. Так в счёт и расходную накладную попадает обязательная строка «Договір»: покупатель на сайте о договоре не спрашивается, каждый заказ компании получает «поставки», а менеджер видит поле в заказе и вписывает настоящий договор, если он есть. Обе настройки стоят рядом с отметкой «обязательное» в настройках оформления заказа витрины.
В бланках доступны все поля покупателя по их кодам: договор печатается как {$customer.contract}, плательщик — как {$customer.payer}. Если в коде поля есть дефис, в бланке его пишут через подчёркивание: поле «rnokpp-payer» печатается как {$customer.rnokpp_payer}. Подсказка переменных в редакторе бланков показывает эти поля с их названиями. Пустое поле печатается значением по умолчанию, в том числе у заказов, оформленных до появления поля.
Что починили
PDF-файл документа собирается так же, как его печатает браузер. Если бланк печатает несколько счетов подряд, например по счёту на каждый склад, каждый счёт теперь начинается с новой страницы, а не идёт сплошной простынёй с разрывом посреди таблицы.
Отметка «обязательное» у поля в настройках оформления больше не переносит поле в конец формы.
Что нового
В выгрузке заказов появилась колонка «Товар строкой»: позиция записывается одной фразой, как в накладной для сборки, например «Ковпачок алюмінієвий (Чорний з різьбою 28х18 мм)(0104) - 50 x 4,50 грн.». Сборщику не нужно сводить название, артикул, количество и цену из разных колонок. Цена без копеек пишется целым числом.
Для файлов, которые печатают или читают глазами, добавлены «Цена с валютой», «Сумма по складу с валютой» и «Сумма с валютой»: рядом с числом стоит «грн.», и его уже не спутать с количеством. Колонки выбираются в настройках набора выгрузки.
Что починили
Если магазин переехал с Webasyst, в списке заказов у перенесённых заказов не было букв складов, хотя настройка «Показывать склад отгрузки» включена. Теперь у каждого такого заказа видно, с какого склада и сколько товара собирали. Склад заполнится сам после обновления, переносить заказы заново не нужно.
Что нового
Документ покупателю можно открывать сразу с окном печати. Раньше покупатель нажимал ссылку на счёт, видел бумагу и искал, чем её напечатать: на телефоне печать спрятана в меню «Поделиться». Теперь тема может сказать «открыть на печать», и окно печати появится само, как только страница загрузится.
Печать вызывается после полной загрузки, а не сразу: иначе лист уходит в принтер без логотипа и печати, которые не успели загрузиться.
Как это поставить в тему — с готовым куском кода, в том числе для печати без перехода на другую вкладку: https://cartixx.com/docs/theme/tags
Что сделать после обновления
Ничего. Ссылки на бланки, которые уже стоят в вашей теме, продолжают работать как раньше — окно печати появляется только там, где тема об этом попросила.
Что нового
У печатной формы теперь виден её код. Он написан в самой форме, в «Настройки» → «Печатные формы», строкой «Код бланка» рядом с выключателем, и копируется кнопкой; в списке бланков он стоит подписью под названием. Этим кодом бланк называют в теме оформления, когда показывают документ покупателю, — раньше взять его было неоткуда.
Документ покупателю можно попросить на другом языке. По умолчанию бумага выходит на языке заказа: оформляли по-украински — и счёт украинский, даже если сейчас покупатель смотрит магазин по-русски. Тема может сказать иначе и дать, например, счёт по-английски партнёру. Просить можно только язык, на котором работает ваш магазин.
Примеры для темы: https://cartixx.com/docs/theme/tags
Что починили
Ссылка на печатную форму в личном кабинете не работала: тема писала то, что сказано в справочнике, и не получала ничего. Заказ в кабинете магазин называет номером, а не внутренним кодом строки, и помощник его не узнавал. Теперь он понимает и номер, и внутренний код, и номер с оформлением вроде «№1024».
Что сделать после обновления
Ничего. Если вы уже поставили в тему ссылку на бланк и она не появлялась — после обновления появится.
Что нового
Покупатель может открыть свои бумаги по заказу сам. Раньше счёт умело показывать только дополнение «Оплата по счёту», а накладную или гарантийный талон — никто: их печатал менеджер и отправлял письмом руками.
Теперь у темы оформления есть помощник: она ставит в нужном месте ссылку на любой ваш бланк из «Настройки» → «Печатные формы». Где показывать и что именно — решаете вы вместе с тем, кто ведёт вашу тему: счёт в личном кабинете, накладную на странице «Заказ оформлен», ничего вовсе. По ссылке открывается готовая к печати страница, а рядом можно поставить и ссылку на файл PDF.
Бумага у покупателя — ровно та же, что печатает менеджер: номер и дата документа выдаются один раз, поэтому у вас в бухгалтерии и у покупателя на руках один и тот же счёт, сколько бы раз его ни открывали.
Магазин следит за двумя вещами, чтобы тема не ошиблась: ссылку получает только тот, чей это заказ, а выключенный или пустой бланк ссылки не даёт вовсе — иначе покупатель нажимал бы на кнопку, ведущую в «страница не найдена».
Как это вставить в тему, с примерами: https://cartixx.com/docs/theme/tags
Что сделать после обновления
Ничего: пока в теме не поставлена ссылка, для покупателя ничего не меняется. Если ваша тема писалась не нами, покажите разработчику страницу справочника выше — ему нужна одна строка в шаблоне заказа.
Что нового
Магазин научился решать, кому какой способ доставки и оплаты показывать. Раньше способ можно было только включить или выключить целиком: если вы принимаете оплату по счёту, её видели и компании, и частные покупатели, а наложенный платёж предлагался и на заказ в двадцать тысяч. Теперь вы описываете правила: «компаниям — только счёт», «наложенный платёж до 5000», «самовывоз только своим», «предоплата на первый заказ».
Правила живут в «Настройки» → «Оплата и доставка», третьим списком под способами. Правило состоит из четырёх вещей: что настраиваем (доставку или оплату), что сделать (скрыть выбранные способы либо оставить только их), сами способы и условия. Условия — те же, что у правил скидок: тип покупателя, сумма корзины, вес, количество товаров, товары в корзине, категория покупателя, первый ли это заказ, сколько он заказывал раньше, расписание по дням и часам. У правила оплаты есть ещё одно условие — выбранный способ доставки: так собирается «наложенный платёж только Новой Поштой».
Правило можно выключить, не удаляя: оно останется в списке и подождёт до следующего сезона. Правила только убирают способы и никогда не возвращают убранное соседним правилом, поэтому их порядок ни на что не влияет. Заказ, который заводит менеджер, правила не касаются — он оформляет по телефону и вправе выбрать любой способ.
Как всё это настроить, с примерами и снимками экрана: https://cartixx.com/docs/engine/method-rules
В выгрузке заказов появились три колонки про склад: «Сумма по складу», «Позиций со склада» и «Количество со склада». В файле со строкой на каждый товар у всех строк одного склада стоит одно и то же число, поэтому сборщик сразу видит свою часть заказа и не складывает строки в уме. Суммы всех складов заказа вместе дают «Сумму товаров».
Что починили
Количество в выгрузке заказов округлялось до целого: 8,4 м² ламината уезжали в файл как «8», и склад отгружал не то, что купили. Теперь дробное количество доезжает как есть, а целое выглядит по-прежнему — «10», а не «10,000». То же самое исправилось в колонке «Состав заказа».
Оформление заказа принимало любой способ оплаты, какой пришёл в запросе: ни принадлежность витрине, ни «выключён» не проверялись. Теперь способ обязан быть в том списке, который магазин показал покупателю.
Что сделать после обновления
Ничего обязательного: правил показа после обновления нет, и все способы видны всем покупателям, как и раньше.
Если вы заведёте правило, откройте после этого оформление заказа и посмотрите на него глазами покупателя — особенно когда выбрали «оставить только выбранные». Правило «оставить только счёт» вместе с выключенным счётом оставит покупателя без единого способа оплаты.
Что нового
Выгрузка заказов теперь умеет отделять заказы пустой строкой. В файле со строкой на каждый товар заказ занимает столько строк, сколько в нём позиций, и где он кончается, глазом было не найти. Настройка стоит в наборе выгрузки, рядом со «Строкой на каждый товар».
Строки заказа можно сортировать по складу: товары одного склада идут подряд, а не вперемешку. Сборщику больше не нужно выбирать свои строки по всему заказу. Настройка там же, в наборе выгрузки.
Покупатель, который платит по счёту, видит ссылку на оплату в своём кабинете. Раньше ссылка была только у вас в карточке заказа: покупатель заходил в «Мои заказы» и не находил ни кнопки, ни счёта, а вы отправляли ему ссылку руками.
Магазин показывает незаконченную работу. Обновление справочника перевозчика, перенос каталога в поиск и загрузка населённых пунктов идут часами и порциями, и раньше оборвавшийся заход не оставлял следа: магазин говорил «не выполняется, не закончено, ошибок нет». Теперь такая работа попадает в «Настройки → Диагностика» строкой «Незаконченная работа» — с названием той кнопки, которой вы её запускали.
Что починили
На странице оплаты заказа под кнопкой «Счёт на оплату» стояла подпись «этот заказ оплачивается при получении». Она появлялась у любого способа, который не уводит на страницу банка, и прямо противоречила кнопке: деньги идут переводом, а не курьеру.
Магазин больше не предлагает оплатить заказ, который оплачивается при получении. Раньше ссылка на оплату была и в карточке заказа, и в письме, и в SMS, и в боте: покупатель открывал её и читал «этот заказ оплачивается при получении», а потом звонил и спрашивал, что с этим делать.
Что сделать после обновления
Обновите дополнение «Оплата по счёту» до версии 1.2.0 — без него ссылка на оплату в кабинете покупателя не появится. Если у вас стоят дополнения «Telegram» и «Нова Пошта», обновите и их: 1.12.3 и 1.4.3.
Если у вас своя тема оформления, обновите в ней страницу оплаты заказа: подпись про оплату при получении теперь включает переменная $show_offline_note, и без правки темы она останется на месте. Что доступно шаблону этой страницы — https://cartixx.com/docs/theme/data
Что починили
Суммы, цены и количества в выгрузке заказов попадали в Excel текстом: итог по колонке не считался, а сортировка по сумме шла по алфавиту — «9» оказывалось больше «44990». Теперь число лежит числом, а денежная колонка показывается как «1 234,50».
Дата заказа тоже была строкой и сортировалась по первой цифре: январь следующего года вставал перед сентябрём текущего, а отбор «с 1 по 15 число» в сводной таблице не строился вовсе. Теперь это настоящая дата, и выглядит она в файле так же, как раньше.
Номер заказа, артикул, телефон с ведущим нулём, почтовый индекс и длинный штрихкод остаются текстом. Иначе у телефона пропал бы первый ноль, а штрихкод Excel округлил бы: за пятнадцатью знаками он перестаёт хранить цифры точно.
Большая выгрузка в Excel могла не открыться совсем. Магазин записывал оформление каждой ячейки отдельной строкой списка форматов, и на десяти тысячах заказов их набиралось больше, чем Excel соглашается прочитать.
Что починили
Отбор списка заказов больше не пропадает. Менеджер отбирал заказы, открывал один из них, обновлял страницу — и список снова показывал весь магазин. Теперь выбранные признаки остаются в адресе страницы: отбор переживает обновление, а ссылкой на нужную выборку можно поделиться с коллегой.
В выгрузке характеристики брались только у товара. У товара с вариантами они чаще заполнены у самого варианта — покупатель взял флакон 50 мл, а в файл уходило значение товара или пустая ячейка. Теперь берётся значение купленного варианта.
Колонки адреса мешали друг другу: если в набор попадали и «Куда везём», и «Улица» с «Областью», часть колонок выходила пустой.
Поля получателя в файле назывались так же, как поля покупателя: «Телефон» стоял рядом с «Телефоном», и понять, где чей, можно было только по порядку колонок. Теперь они подписаны «Получатель: …».
Личный набор выгрузки уволенного сотрудника оставался в магазине и появлялся у всех остальных. Теперь он уходит вместе с ним.
Что нового
Выгрузка заказов собирается из тех полей, которые нужны именно вам. Поля разложены по группам: заказ, адрес и метки, покупатель, получатель, товар, характеристики товара. Кроме привычных номера, суммы и статуса теперь можно выгрузить дату обновления и дату оплаты, остаток к доплате, курс заказа, адрес по частям — страну, область, город, улицу, дом, квартиру и индекс, — отделение перевозчика, промокод и рекламные метки.
Поля покупателя и получателя — ровно те, которые магазин спрашивает при оформлении, включая заведённые вами. Значения берутся из самого заказа, а не из карточки покупателя: карточку правят, а заказ помнит, как было в день покупки.
Появился режим «строка на каждый товар»: заказ из трёх товаров даёт в файле три строки, а номер заказа и покупатель в них повторяются. Так выгрузку читают склад и бухгалтерия. Вместе с ним доступны поля товара — название, артикул, количество, цена, стоимость строки, скидка, склад отгрузки — и характеристики товара из вашего справочника: объём, длина, вес, всё, что заполнено.
У набора выгрузки теперь есть пояснение «зачем он» и отметка «только мой»: личный набор менеджера не показывается остальным сотрудникам. Поля в наборе ищутся по названию — их больше сотни.
В отбор списка заказов добавлены пять признаков: дата обновления, дата оплаты, номер накладной, первый заказ покупателя и товар в заказе — по названию или артикулу. Включаются они там же, где остальные, в «Настройки заказов → Отбор в списке».
Что сделать после обновления
Откройте «Настройки заказов → Отбор в списке» и включите нужные новые отборы — по умолчанию список фильтров остался прежним. Наборы выгрузки править не нужно: старые работают как работали.
Что починили
Фотография товара в редакторе заказа больше не разносит строку. Размер снимку никто не задавал, и на узком экране он занимал полэкрана, а поля количества и цены ложились поверх него.
Инициалы покупателя в карточке заказа стоят по центру кружка. Они выезжали влево-вверх и красились бледно-серым, как подпись под именем.
В карточке заказа среди кнопок перевода больше нет кнопки с нынешним статусом. Она ничего не делала, а сам статус и без того написан значком рядом с номером заказа. Остались только те статусы, куда заказ действительно можно перевести; сотруднику, которому менять статусы нельзя, ряд кнопок не показывается вовсе.
Что починили
Сумма корзины в шапке снова показывается с копейками. Её собирал браузер, и он же округлял её до целого и подписывал валюту по-своему: в шапке стояло «100 грн» там, где магазин печатал «99,50 ₴». Теперь запись приходит из магазина готовой — той же, какой сумма напечатана в самой корзине и на оформлении.
Если сумма в шапке должна быть без копеек, тема просит короткую запись сама: у элемента суммы указывается data-cart-total-header="short". В темах «Маркет» и «Промо» так и сделано.
Что нового
В личном кабинете покупатель видит и правит своё отчество. Магазин спрашивает его при оформлении, а страница профиля о нём не знала: поле в теме показывало пустоту, а сохранение молча теряло введённое. Поле добавлено во все три темы из поставки. Если у вас своя тема, добавьте в форму профиля поле с именем middle_name и значением {$profile.middle_name} — магазин его примет; тема без этого поля работает как раньше, отчество в карточке остаётся нетронутым.
Что починили
Товар из блока «Рекомендуем» на странице товара снова добавляется в корзину. Если тема ставит такой блок внутри карточки, соседние товары получали вариант открытого товара, и магазин отказывался класть их в корзину. По той же причине у соседних карточек менялась цена, когда покупатель переключал цвет или размер.
Отчество покупателя видно везде, где магазин показывает имя: в списке заказов, в карточке заказа и в личном кабинете. Имя заказа собиралось из фамилии и имени, и отчество, которое покупатель написал сам, оставалось невидимым. Заодно карточка заказа показывает менеджеру все поля, которые магазин спрашивал на оформлении, — раньше там были только имя, компания, налоговый номер, телефон и почта. У покупателя, заказывающего второй раз, отчество теперь попадает и в его карточку.
Код статуса заказа принимает дефис. Статусы, приехавшие с другой платформы, магазин называет по их названию — «udalit-admin»; такой статус нельзя было ни переименовать, ни перекрасить, потому что форма отказывала в коде, который магазин записал сам.
Что изменилось в работе
Покупатель, вошедший в личный кабинет, теперь правит свою карточку прямо на оформлении: поменял фамилию или отчество в форме заказа — так стало и в карточке. Телефоны и почты при этом добавляются к прежним, а не заменяют их. У покупателя без кабинета правило прежнее: магазин дописывает только то, чего в карточке ещё нет.
Что нового
Заказы, перенесённые с другой платформы, теперь можно связать с вашими способами оплаты и доставки. Старый магазин присылает только название способа, поэтому такой заказ не знал, чем за него платили и чем везли: покупатель не видел кнопку «Оплатить» в личном кабинете, накладная не знала про наложенный платёж, а отбор по способу эти заказы не находил. Вы один раз говорите, какой ваш способ соответствует названию из старого магазина, и магазин проставляет его всем таким заказам сразу — суммы заказов при этом не меняются. Экран связывания живёт в дополнении «Переезд с других платформ»: обновите его вместе с магазином.
Тема оформления теперь знает, какой именно способ доставки и оплаты выбран в заказе покупателя. По названию способа их не различить — вы его переименовываете и переводите, — поэтому в данные заказа добавлены номера способов: тема может показать свою подсказку у самовывоза и ссылку на отслеживание у перевозчика. Что доступно теме на странице заказа, описано здесь: https://cartixx.com/docs/theme/data
Что починили
Цвет и значок статуса заказа, которые вы выбрали в «Настройках заказов», снова видны в списке заказов, в карточке заказа и в окне печати. Список красил статусы по-своему, и ваш зелёный «В работе» со своим значком выглядел так же, как все остальные, — две настройки в форме статуса ничего не меняли.
Что сделать после обновления
Если вы переносили магазин с другой платформы, обновите дополнение «Переезд с других платформ» до версии 1.12.0, откройте раздел «Переезд» и свяжите способы оплаты и доставки — там появится список названий из ваших перенесённых заказов.
Что починили
Товар, распроданный в старом магазине, после переезда попадал в каталог как товар без учёта остатка — то есть продавался как всегда доступный, и магазин набирал заказы на то, чего на складе нет. Пустой остаток означает у нас именно «остаток не ведём», а ноль означает «нет в наличии»; перенос эти два случая путал и нулевые остатки терял.
Что сделать после обновления
Если вы уже перевозили каталог со старого магазина, откройте перенос и прогоните шаг «Товары» ещё раз. Он допишет потерянные нулевые остатки и больше ничего не тронет: цены, фотографии и заказы останутся как были, а в журнале склада не появится лишних записей.
Что нового
Покупатель видит в личном кабинете весь свой заказ, а не только номер, дату и сумму. В карточке заказа появился состав с фотографиями товаров и ссылками на них, услуги к каждой позиции и старая цена, а под составом — вся разбивка суммы: товары, услуги, скидка, доставка, налог и оплата баллами. Строки складываются в итог до копейки, поэтому покупатель может проверить счёт сам и не пишет вам с вопросом «почему столько».
Рядом со статусом заказа теперь стоит состояние оплаты: «Оплачен», «Ожидает оплаты», «Оплачен частично». Его же видно в списке заказов и в сводке кабинета вместе с остатком к доплате — раньше покупатель открывал заказы по очереди, чтобы понять, за какой он ещё должен. Если заказ оплачивается через банк и деньги ещё не пришли, в карточке появляется кнопка «Оплатить», и покупателю не нужно разыскивать письмо со ссылкой.
Магазин показывает покупателю и всё, что тот о себе указал при оформлении: контактные данные, реквизиты компании, другого получателя вместе с его реквизитами, адрес доставки целиком — с областью, индексом и выбранным отделением, — просьбу перезвонить, номер накладной, время оформления и время оплаты. Поля называются теми же словами, которыми вы назвали их в разделе «Оформление заказа».
Названия сработавших скидок и промокод покупатель тоже видит: он понимает, за что ему снизили цену, а не разглядывает строку «Скидка −150 ₴» без объяснения.
Что сделать после обновления
Если вы работаете на своей теме оформления или на копии поставляемой, перенесите в неё страницу заказа и список заказов из обновлённых тем. Своя тема обновляется отдельно, и без этого новые данные покупателю не покажутся.
Что именно теперь приходит теме — поля заказа, состав с фотографиями, покупатель, другой получатель, адрес с отделением и история статусов — расписано с примерами разметки здесь: https://cartixx.com/docs/theme/data
Что нового
Магазин показывает, сколько товаров стоит за каждой характеристикой и за каждым её значением, и умеет отобрать те, за которыми не стоит ничего. Справочник растёт с каждым переездом и каждой загрузкой прайса, и отличить заведённое «на пробу» от того, на чём держится каталог, раньше было нечем.
Дубли теперь объединяются, а не удаляются. Две характеристики про одно и то же — «Цвет» и «Цвет товара» — или два написания одного значения — «Красный» и «красный» — сводятся в одну запись: товары переезжают на неё сами, вместе с ними переезжают условия подборок, правил скидок, фильтров раздела и подбора похожих товаров, а карточка бренда сохраняет описание и логотип. Объединять можно характеристики одного вида и с одинаковым способом ввода значений; системные характеристики магазин не трогает.
В разделе «Типы товаров и характеристики» появился экран «Значения справочников». Он ищет значение сразу по всем характеристикам: вы помните слово «Красный», а магазин показывает, в каких характеристиках оно живёт, в каких типах товаров встречается и сколько товаров за ним стоит. Отсюда же убираются пачкой значения, за которыми нет ни одного товара.
Значения добавляются списком. Вставьте столбец из таблицы — по одному значению в строке, — и магазин заведёт их разом, пропустив пустые строки и повторы. Для цвета код можно дописать прямо в строке: «Красный #ff0000».
Код характеристики магазин пишет сам из её названия, пока вы не поправите его вручную.
Что починили
Значение, за которым стоят товары, магазин больше не предлагает удалить. Раньше окно подтверждения обещало, что за значением не стоит ни одного товара, и только после нажатия отказывало. Теперь сразу видно, сколько товаров на нём держится, и предложено объединить его с другим значением.
Числа в сообщениях согласованы со словом: «стоит у 1 товара», а не «у 1 товаров».
Что нового
Подборку товаров и динамический раздел теперь можно собрать по числу: объёму, весу, длине — по любой характеристике, которая заполнена у товаров числом. Условие задаётся границами «от» и «до», рядом с названием характеристики стоит её единица, чтобы не гадать, миллилитры это или литры. На таких же условиях работают цели акций и каталожных скидок, поэтому акцию «на всё объёмом 30 мл» стало чем задать — раньше её нельзя было составить вовсе.
Магазин перестал спрашивать у характеристики формат раньше её вида. Числовая характеристика ведёт себя как число всюду: в массовом изменении, в загрузке прайса, при переезде с другой платформы и в отборе товаров.
Что починили
Массовое изменение записывало числовой характеристике значение из списка вместо числа. Владелец отмечал сто флаконов, выбирал объём «10» — и магазин запоминал не число, а строку справочника: на витрине пропадали миллилитры, а группа аксессуаров «к флаконам 10 мл» такие товары не находила. Теперь у числовой характеристики в форме поле для числа с единицей, а магазин не примет ссылку на справочник, откуда бы запрос ни пришёл.
Загрузка прайса заводила в справочнике новые значения из чисел: после каждой загрузки объём исчезал с витрины, а список значений рос мусором вроде «10», «12,5». Теперь такая ячейка читается числом.
Динамический раздел с условием по объёму оставался пустым, а фильтр каталога показывал одну характеристику дважды — списком, где у всех значений ноль товаров, и ползунком.
Отмена массового изменения не работала для чисел: магазин сверял записанное с тем, что лежит у товара, значения расходились в мелочи, и отмена молча пропускала все товары.
Объём и вес уходили в выгрузку и в файл для площадки как «10.000000» и без единицы. Теперь в файле стоит «10», а единица передаётся отдельным полем — площадка сама подписывает «10 мл». В списке товаров и на печатной этикетке значение тоже показывается с единицей, а характеристика «да/нет» — словом вместо галочки.
Поиск находил товар по характеристике, только если значение выбрано из списка. Число не искалось вовсе, и это било по починке каталога: пока объём лежал ссылкой на справочник, поиск по «30 мл» работал, а после перевода в число переставал.
Что сделать после обновления
Если ваш каталог переезжал с другой платформы, откройте «Настройки → Диагностика» и посмотрите проверку числовых характеристик: она стала находить и те случаи, которые пропускала раньше. Нажмите «Починить», а потом проверьте условия групп аксессуаров, разделов и подборок по объёму и весу — их нужно задать числом.
Если вы пользуетесь выгрузкой на площадки, обновите дополнение «Универсальный XML-фид»: единица измерения уходит в файл только с ним. Владельцам дополнения «Ценники и этикетки» стоит после обновления посмотреть свои макеты — значение стало длиннее на единицу измерения, и на узкой наклейке ему может не хватить места.
Что нового
В «Диагностике» появилась проверка числовых характеристик. Она находит характеристики вида «число», у которых значения заданы списком — так магазин выглядит после переезда с другой платформы, где объём или вес выбирались из готового перечня. Магазин показывает, какие это характеристики и сколько записей у товаров он может перевести в число, и чинит их кнопкой «Починить»: ни консоль, ни расписание для этого не нужны.
Значения, которые числом не читаются («без объёма», «по запросу»), магазин не трогает и говорит, сколько их осталось. Придумывать за вас число он не станет — такие товары вы правите сами в карточке.
Что починили
После переезда с Webasyst числовая характеристика приезжала списком значений, из-за чего каталог разъезжался: у части товаров объём лежал числом, у части значением из списка. В карточке товара поле стояло пустым и предлагало выбрать значение, а группа аксессуаров с условием по объёму не показывалась ни на одном товаре. Теперь переезд сразу сопоставляет тип характеристики и заводит числовую характеристику с вводом числа.
Что сделать после обновления
Если ваш каталог переезжал с другой платформы, откройте «Настройки → Диагностика» и посмотрите проверку числовых характеристик. Нашла беду — нажмите «Починить», после этого проверьте условия групп аксессуаров по объёму и весу.
Что починили
Числовая характеристика в карточке товара показывает своё значение. Объём, вес, длина, мощность приходят из магазина дробным числом, и поле их не принимало: на витрине «Об'єм 10 мл» выводился, а в карточке стояло пусто, будто характеристика не заполнена.
Характеристика вида «число», у которой заведён ещё и список значений, теперь везде спрашивает число. Раньше карточка товара рисовала для неё выпадающий список и писала «Выберите значение», хотя значение у товара было, а в условиях группы аксессуаров такую характеристику нельзя было задать числом — владелец выбирал значение из списка, которого у товаров нет, и группа не показывалась ни на одном товаре.
Что сделать после обновления
Если вы задавали группе аксессуаров условие по объёму, весу или другой числовой характеристике — откройте группу и задайте его заново: теперь там поля «от» и «до». Чтобы предложить пипетки к флаконам 10 мл, напишите 10 в обоих.
Что нового
Группу аксессуаров теперь можно привязать по объёму, длине или весу — по любой характеристике, которая у товаров заполнена числом. Чтобы предложить пипетки только к флаконам 30 мл, выберите характеристику объёма и напишите 30 в полях «от» и «до». Одну границу можно оставить пустой: «от 50» значит 50 и больше. Раньше условие принимало значения только списком, и по объёму или весу задать группу было нечем.
Группу можно убрать у одного товара, даже если она пришла правилом — по типу товара, категории или характеристике. Магазин запоминает решение по этому товару: правило и остальные товары остаются как есть, а убранная группа показана в списке отдельно и возвращается одной кнопкой.
Что починили
Группа с двумя условиями показывалась на товаре, у которого совпало хотя бы одно из них: пипетки для флаконов 30 мл предлагались и к 50, и к 100 мл. Теперь товар обязан подойти под все условия сразу. Значения одной характеристики по-прежнему остаются вариантами на выбор — «объём 30 или 50».
Что сделать после обновления
Откройте свои группы аксессуаров и проверьте условия по объёму и весу: их нужно задать заново числом, а не значением из списка.
Условия группы аксессуаров по характеристикам сужают друг друга
Группа сопутствующих товаров с двумя условиями — например «Объём 30» и «Тип горловины DIN18» — показывалась на любом товаре, у которого совпало хотя бы одно из них. Из-за этого пипетки для флаконов 30 мл предлагались и к флаконам на 50 и 100 мл: второе условие ничего не сужало.
Теперь условия читаются так, как написано на экране. Значения одной характеристики остаются вариантами на выбор («объём 30 или 50»), а разные характеристики складываются вместе: товар обязан подойти и по объёму, и по типу горловины. Товар, у которого такой характеристики нет вовсе, под условие не подходит.
Группу аксессуаров можно убрать у одного товара
Группа сопутствующих товаров попадает в карточку не только точечно: её вешают на тип товара, на категорию, на значение характеристики. Убрать такую группу у одного товара было нечем — оставалось либо менять правило для всего каталога, либо мириться с лишним блоком.
Теперь в карточке товара, в разделе «Аксессуары», убрать можно любую группу, откуда бы она ни пришла. Магазин запоминает решение по этому товару: правило и остальные товары остаются как есть, а убранная группа показана отдельно — её можно вернуть одной кнопкой.
Перенос магазина рассказывает о языках
Переезд теперь помнит не только числа («нашли 824 товара»), но и то, что источник знает о старом магазине: на каких языках заполнено содержимое и сколько там переводов. Эти сведения видны и при проверке связи, и всё время, пока идёт перенос, — даже если вы закрыли вкладку и вернулись позже.
Раньше о языках приходилось догадываться: перенос показывал только «перенесено 500 из 824», и приедут ли переводы, понять было нельзя.
Перенос магазина берёт фотографии с диска
Раньше при переезде фотографии всегда скачивались со старого сайта, а сайт отдаёт только уменьшенную копию: оригиналы лежат в закрытой папке и по сети недоступны. Теперь, если файлы старого магазина доступны — он стоит на этом же сервере или рядом с ним лежит файл-мост, — перенос берёт оригинал прямо с диска. Фотографии приезжают в полном размере и заметно быстрее.
Заодно обновление магазина обновляет и экраны установленных дополнений: раньше после обновления версия дополнения в списке была новая, а его экран открывался прежний.
Магазину нужен PHP 8.4
Магазин теперь прямо называет версию PHP, на которой он работает: 8.4 или новее. Это указано в требованиях, на экране установки и в проверке магазина. Раньше на старой версии установка обрывалась служебным сообщением, по которому нельзя было понять ни что случилось, ни что делать дальше.
Если магазин всё же откроют на старой версии, вместо пустого экрана откроется страница с объяснением: какая версия стоит на сервере сейчас, какая нужна и как переключить её в панели хостинга. Данные магазина при этом в порядке — он просто не запускается на старой версии.
Перенос магазина показывает, что происходит
Экран переезда говорил «идёт перенос» и больше ничего: на чём магазин сейчас, сколько уже перенесено и работает ли вообще что-нибудь — понять было нельзя. Теперь над кнопками стоит текущий шаг с номером («Шаг 4 из 7 — Товары и артикулы»), полоса выполнения, сколько записей перенесено из скольких найденных, сколько идёт перенос и сколько записей не прошло. Ниже — все этапы: пройденные с галочкой, текущий и те, что ждут очереди, каждый со своим счётчиком.
Объём работы магазин узнаёт на шаге подключения — там, где вы видите «нашли 824 товара, 78 категорий». Раньше эти числа терялись сразу после проверки связи, теперь переезд их помнит и по ним считает долю.
История заказов: отбор и страницы
У постоянного покупателя заказов набираются сотни, и одной страницей список превращался в простыню. Теперь заказы разбиты на страницы, а над списком стоит отбор: способ доставки, способ оплаты, статус заказа и даты «с» и «по». Выбирать можно только из того, что встречается в его собственных заказах — предлагать перевозчика, которым он никогда не пользовался, незачем.
Список перерисовывается на месте, без перезагрузки страницы, а выбранное остаётся в адресе: такую ссылку покупатель может сохранить или вернуться к ней кнопкой «назад». Отбор ведёт сам магазин, а разметку рисует тема — он работает и в теме, написанной кем-то ещё.
Заказы в кабинете покупателя стали понятнее
Список заказов теперь отвечает на вопросы, ради которых покупатель туда и заходит: рядом с номером стоят способ доставки и оплаты с логотипами, число позиций, номер накладной и оставленный комментарий. То же самое в карточке заказа. История заказа называет статусы словами — раньше там стояли служебные коды вроде «processing». Сумма в списке остаётся в валюте, в которой покупатель платил, а из номера ушла лишняя решётка. Значок текстовой страницы виден в меню и в подвале.
Оформление заказа объясняет отказы по-человечески
Незаполненный город раньше давал «Поле address.city обязательно для заполнения» — теперь «Укажите город». Так же со способом доставки, оплаты и согласием с условиями. Текст, пришедший в неизвестной кодировке, магазин отклоняет понятной ошибкой вместо того, чтобы упасть уже на сохранении заказа.
Мелочи, которые мешали
Артикул чужого товара больше не попадает в корзину молча — магазин отвечает отказом. Ссылка на предложенный аксессуар открывает именно тот вариант, который предложили. Значок сайта принимается и в формате .ico, который панель предлагала выбрать. Журналы SQL-запросов, почты и уведомлений стали дневными и подчищаются сами: включённая и забытая запись запросов набирала гигабайты и забивала диск.
Заказы в личном кабинете рассказывают о себе
Покупатель заходит в кабинет с двумя вопросами: где мой заказ и чем я платил. В списке заказов до сих пор были только номер, дата, статус и сумма — за остальным приходилось открывать каждый заказ. Теперь и список, и карточка заказа несут доставку и оплату (название способа и его логотип), комментарий, который покупатель оставил при оформлении, число позиций и номер накладной, по которому он следит за посылкой у перевозчика.
Логотип загружается у самого способа, в разделе «Оплата и доставка»: покупатель узнаёт перевозчика и платёжную систему по знакомому значку быстрее, чем по названию. Подойдёт SVG или небольшой PNG.
Магазин принимает SVG в логотипах и значках
Значки и логотипы обычно рисуют в SVG: он не мылится на плотных экранах и весит мало. Магазин такие файлы отвергал: сохранённый графическим редактором SVG начинается со служебного комментария, и сервер считает его обычным текстом — владелец видел «недопустимый формат» на совершенно нормальной картинке. Теперь SVG принимается везде, где загружается картинка магазина: логотипы и оформление, значок категории для меню, значок характеристики, логотип бренда.
Файл при этом хранится вычищенным: скрипты и обращения к чужим серверам из него удаляются, а если редактор не написал пространство имён, магазин дописывает его сам — без него браузер такой значок просто не рисует.
Значок у текстовой страницы
У страниц «Доставка», «Оплата», «Контакты» появился свой значок — загружается в карточке страницы. Тема получает его вместе со страницей и может подписать им пункт меню и ссылку в подвале.
У предлагаемого аксессуара виден артикул
Названия сопутствующих товаров бывают похожи до неразличимости — «Крышка твист 82» и «Крышка твист 82 SL» отличаются одним значком. Теперь под названием каждого аксессуара стоит его артикул: и в окне, которое магазин показывает после покупки из каталога, и в блоке «соберите комплект» на карточке товара. Артикул именно того варианта, который предлагается к покупке.
Тема получает артикул вместе с остальными данными аксессуара и может расположить его по-своему.
Окно аксессуаров показывает товар, к которому их предлагают
Покупатель нажимает «В корзину» в списке товаров, и окно с сопутствующими накрывает карточку — понять, к чему ему предлагают крышку или чехол, было уже не по чему. Теперь в шапке окна стоят снимок, название и артикул товара, который он только что положил. Показывается именно выбранный вариант: взяли синий — в окне синий, со своим фото и своим артикулом.
Тема получает эти данные и рисует их по-своему, если ведёт окно сама. Подпись «Вы добавили: …» остаётся там, где показывать нечего — у товара нет ни снимка, ни артикула.
Из корзины можно вернуться к товару
Покупатель кладёт товар из подборки, а потом хочет посмотреть его состав, фотографии или отзывы — и до сих пор искал его заново поиском. Теперь название и фотография позиции в корзине после добавления ведут на карточку товара: и в корзине, которая выезжает сбоку, и в той, что всплывает окном по центру. Ссылка открывает именно выбранный вариант — положили синий, откроется синий.
То же самое на странице оформления заказа: название позиции в составе заказа стало ссылкой, и покупатель проверяет покупку, не теряя заполненную форму. Товар, снятый с продажи, остаётся в корзине обычным текстом — битых ссылок не появляется.
Название группы аксессуаров теперь переводится
Заголовок блока «соберите комплект» покупатель читает прямо в карточке товара, а название у группы было одно на все языки: украинская витрина показывала русское, и поправить его было негде. Теперь названия групп переводятся в разделе «Настройки → Локализация» новым блоком «Аксессуары» — там же, где вы переводите характеристики, услуги, поля покупателя и статусы заказов.
На экране аксессуаров название по-прежнему пишется одним полем, на вашем языке, а остальные переводы остаются как были. Группу, которую ещё не перевели, покупатель видит названием основного языка магазина, а не пустым заголовком. Заодно раздел «Локализация» перестал закрывать открытую запись после сохранения — раньше казалось, что перевод не сохранился.
Заказ больше не упирается в «слишком много попыток»
Магазин считал частоту запросов одним числом на весь сайт: пересчёт доставки, подсказки города и само оформление складывались вместе, а срабатывал самый строгий предел. Покупатель менял адрес и способ доставки десяток раз — это обычное поведение на оформлении, — нажимал «Оформить заказ» и получал отказ. Теперь у каждого действия свой счёт, и пересчёты не мешают оформить заказ. Правило действует и на дополнения: их адреса тоже считаются отдельно.
Если запросов действительно оказалось слишком много, магазин объясняет это на своём языке и говорит, через сколько секунд повторить, вместо английской служебной строки на кнопке оформления.
Способ доставки больше не подменяется молча
Покупатель выбрал способ доставки, а при пересчёте он пропал — так бывает, когда перевозчик не везёт по этому адресу или не отвечает его сервис. Раньше магазин тихо подставлял соседний способ и менял сумму, и человек доходил до кнопки «Оформить» с доставкой, которую не выбирал. Теперь на оформлении появляется строка с объяснением: какой способ стал недоступен и что выбор нужно проверить. Текст даёт сам магазин, поэтому он появится в любой теме, в том числе написанной раньше.
Ошибка внутри дополнения перевозчика больше не роняет страницу оформления заказа. С продажи снимается только этот способ, остальные продолжают работать, а причина записывается в журнал магазина.
Работа дополнения начинается сразу
Кнопка в дополнении ставила работу в очередь и на этом всё. Очередь на обычном хостинге разбирается раз в минуту, а если планировщик не настроен — не разбирается вовсе, и работа не начиналась никогда. Теперь её выполняет тот же браузер, из которого вы нажали: результат виден сразу. Закрыли вкладку — работу доделает планировщик, как и раньше.
Видно, что у дополнения в базе
Рядом с кнопкой теперь написано, сколько записей в справочнике и когда их загружали. Пустой справочник назван пустым: подсказка города в таком магазине не работает вовсе, и об этом лучше прочитать, чем догадываться.
Название блока дополнение задаёт само: вместо общего «Действия» — «Справочник населённых пунктов» и объяснение, что здесь делают.
Видно, что происходит с работой дополнения
Вы нажимали кнопку в дополнении — «Обновить справочник», «Загрузить курсы», — и рядом висело «В очереди…», без единого пояснения и без конца. Понять, ждать или чинить, было нельзя.
Теперь рядом с кнопкой видно, сколько работа ждёт очереди, а если ожидание затянулось — магазин прямо говорит, что очередь не разбирается, и куда посмотреть. Пока работа идёт, она рассказывает о себе сама: «записано 12 000…».
Перенос с другой платформы сам замечает удалённые записи
Перенос помнит, что уже перенёс, и второй раз те же записи не создаёт. Если перенесённое потом убрали — сбросили магазин, почистили каталог, удалили товар руками, — эта память начинала мешать молча: справочники и товары значились перенесёнными и заново не создавались, а всё, что на них ссылается, не переносилось вовсе. Со стороны перенос при этом выглядел нормальным.
Теперь перед запуском перенос сверяет свою память с магазином: запись, которой больше нет, из памяти убирается и создаётся заново — как в первый раз. Ничего нажимать для этого не нужно.
Магазин после полного сброса начинается с первого номера
Сброс удалял записи, но счётчик номеров оставался прежним: магазин с восемью сотнями товаров и десятками тысяч заказов после полного сброса заводил первый товар под номером 825, а первый заказ — под 65925. Номер заказа вы показываете покупателю, и начинать с середины незачем.
Полный сброс теперь режет таблицы начисто, и нумерация идёт с первого номера. Выборочный сброс работает как прежде: там связи между записями и делают работу — в оставшемся заказе ссылка на удалённый товар обнуляется, остатки уходят вслед за артикулом.
Сброс магазина больше не уносит чужие картинки
Сброс чистил медиатеку целиком, а лежат в ней снимки всего магазина: слайды баннера, логотипы марок, изображения страниц. Владелец сбрасывал каталог и обнаруживал, что заодно пропали ранее загруженные слайды. Теперь уходят только картинки того, что вы отметили к сбросу.
Сброс убирает и память переноса с другой платформы. Она помнит, что уже перенесено, и после сброса начинала мешать: товары «уже перенесены» и в отчёте ноль, а заказы не доезжают — их позиции ссылаются на удалённые товары. Заодно перенос стало можно забыть кнопкой, не дожидаясь сброса.
Звук уведомлений вернулся
В разделе «Уведомления» появился пункт «Звук уведомлений»: включить сигнал, выбрать, о чём предупреждать, и загрузить свой звук для каждого события — заказ и заявку на звонок теперь слышно по-разному. Настройка личная, у каждого сотрудника своя. Панель снова подаёт сигнал, когда приходит новое событие.
Отделения перевозчиков стали видимыми
Дополнения доставки теперь могут показать покупателю больше, чем одно название точки: под ней помещается вторая строка — например, до скольки отделение работает сегодня и его телефон. Поля способа доставки научились подсказывать значения из справочника перевозчика прямо во время набора и объяснять, чего они ждут.
Страница «не найдено» больше не роняет витрину
Если в оформлении темы нет своей страницы для несуществующего адреса или в ней ошибка, магазин показывает свою — с понятным текстом и правильным ответом для поисковых систем. Раньше в этом случае покупатель мог получить страницу ошибки, а поломка шаблона не всплывала нигде; теперь она попадает в журнал.
Тема знает тип товара
Оформление карточки теперь можно менять по типу товара: тема получает и название типа, и его код, и номер — и на странице товара, и на плитке в каталоге, поиске, избранном и сравнении. Условие в разметке пишется по коду типа, тому самому, который вы задаёте в редакторе типа товара. Раньше теме доставалось только название, и разметка, опиравшаяся на тип, могла оставить покупателя без страницы товара.
Там же появился код характеристики — в вариантах покупки и в строках сравнения. Теперь тема отличает «цвет» от «размера» и оформляет их по-разному.
Правка темы видна сразу
Сохранение файла темы в разделе «Дизайн» само сбрасывает подготовленные шаблоны и кеш страниц витрины. Раньше правка могла не появиться на сайте, и выглядело это как сломанный редактор.
Исходный код в текстовом редакторе (кнопка «</>») снова открывается редактором кода с подсветкой разметки. Он держится в границах поля, переносит длинные строки и следует светлому или тёмному оформлению панели.
Фотография товара в корзине
Корзина, которая открывается после «В корзину», теперь показывает снимок каждой позиции — именно того варианта, который выбрал покупатель. Тот же снимок стоит на странице корзины и на шаге оформления, поэтому по дороге к заказу картинка не меняется.
Корзина показывается так, как решите вы
В оформлении появилась настройка «Как показывать корзину после добавления»: сбоку, выезжающей панелью, или окном по центру экрана. Состав и кнопки одинаковые, отличается только подача. Саму корзину теперь рисуют обычные шаблоны оформления, поэтому её вид меняется правкой вёрстки, а не программированием.
Восстановление из копии доводится до конца
Если восстановление сорвалось, магазин возвращается к тому состоянию, в котором был, и больше не остаётся закрытым на обслуживание. Старые копии убираются по заданному сроку хранения, а настройки подключения при переносе на другой сервер можно взять из самого архива.
Проверки состояния магазина стали честнее
Раздел «Диагностика» больше не пугает старыми записями: очередь задач считается по свежим, доступность фотографий проверяется настоящим запросом, а сам раздел открывается даже после смены ключа приложения.
Мелочи
В разделе «Дизайн» снова прокручивается список файлов оформления — до нижних файлов можно добраться.
Сброс магазина по частям
Раньше кнопка «Сбросить магазин» убирала всё разом, вместе с настройками: витринами, способами оплаты и доставки, бланками документов, реквизитами продавца. Теперь вы отмечаете, что именно убрать — каталог, покупателей, заказы, скидки, склады или статистику — и видите объём каждой части до нажатия. Настройки магазина остаются на месте при любом выборе, поэтому можно убрать, например, только пробные заказы и работать с собранным каталогом дальше.
Восстановление из копии стало безопаснее
Если восстановление большой базы не успевало за отведённое время, магазин оставался закрытым с табличкой «идут работы» — снять её можно было только из консоли. Теперь этого не случится. Копия переливается из хранилища потоком, поэтому большие резервные копии больше не упираются в предел памяти, а после восстановления магазин сам сбрасывает страницы витрины и перезапускает фоновые задачи. Если копия сделана на более новой версии магазина, вы увидите предупреждение.
Товары и витрина
Товар из архива теперь можно удалить прямо из списка товаров — раньше это было доступно только через массовые изменения. В отборе товаров появился тип товара. Витрина больше не отказывается сохраняться из-за языка, который убрали из магазина: такой язык убирается из витрин сам.
Панель управления работает с телефона и планшета
Панелью теперь можно пользоваться с любого экрана. Разделы «Маркетинг», «Рассылки», «Акции», «Подарки», «Оптовые цены», «Отчёты», «Банкинг», «Настройки» и системные страницы перестроены под узкий экран: длинные строки складываются в карточки, где сверху стоит название, а под ним — суммы, сроки и кнопки. Открытая запись сама подводится к глазам, поэтому нажатие на строку больше не выглядит так, будто ничего не произошло.
Правка артикулов в списке товаров помещается на экран ноутбука целиком: раньше колонки с остатком и состоянием оставались за краем, а на телефоне были видны только название и код. На узком экране каждый артикул показывается карточкой с кодом, ценами и остатком.
Реестр операций банкинга показывает сумму сразу, без прокрутки вбок. Отчёты складывают числа по два в ряд, а таблицу показывают карточками с подписями колонок. Каталог дополнений читается на телефоне: название целиком, описание во всю ширину, кнопки под ними.
Отдельно исправлены названия на графиках: воронка продаж и отчёт по товарам показывали нули вместо «Просмотр товара», «В корзину» и названий товаров. Подписи под графиками больше не слипаются в сплошную ленту. Раздел «Логирование» назван «Журналы» — как и заголовок внутри него.
Склад в строке заказа и правка номера базы кеша
В строке списка заказов у каждого склада теперь своё число — сколько товара уходит именно с него. Раньше стояло общее количество позиций и буквы складов без чисел, и собирающему это ничего не говорило: непонятно, что откуда брать. Общий счётчик при включённых складах больше не показывается, а в подсказке — название склада, количество и в скольких позициях заказа.
Номер базы Redis и порт больше не отклоняются при сохранении. Магазин отвечал «Поле settings.REDIS_CACHE_DB должно быть строкой» ровно тогда, когда владелец сам правил номер, — настройки хранилища лежат в файле окружения строками, а панель присылала число. Заодно порт перестал показываться как «6 379»: разряды в номере порта разделять незачем.
Исходный код в редакторе, настройки списка заказов и проверка Redis
Кнопка «</>» в текстовом редакторе открывала разметку кодовым редактором панели — тем же, которым правят шаблоны темы: он занимал всё поле и вымахивал далеко за его границы. Теперь разметка показывается обычным полем внутри редактора, ровно в тех же границах, что и текст.
Настройки строки списка заказов заработали и в рабочем столе. Раньше «Красить строку в цвет статуса», склад отгрузки, способ доставки и оплаты читала только таблица, а рабочий стол показывал одно и то же независимо от них. Открытый заказ и заказ с заминкой цветом статуса не красятся: у них левая полоса занята своим смыслом.
Проверка соединения с Redis отвечала «Redis не отвечает» в магазине, который уже работает на Redis. Теперь проверка поднимает своё соединение и на нём же пишет и читает пробное значение, а недоступный сервер отвечает понятной ошибкой, а не молчанием. В настройках хранилища поля встали в одну колонку, и заданный пароль виден по самому полю.
Текст для покупателя набирается редактором
Описание категории и товара, текст страницы, рассказ о бренде, подборку и тег вы теперь пишете в редакторе, а не в поле с разметкой. Есть заголовки и списки, выделение, выравнивание, таблицы и цитаты, ссылки с выбором «открывать в новой вкладке» и «не передавать вес». Картинку можно загрузить прямо из окна редактора и сразу задать ей подпись для поиска, ширину и ссылку. Кому привычнее править разметку руками — кнопка «</>» показывает исходный код с подсветкой.
В текст можно вставить готовый кусок витрины: карусель, подборку товаров, блок дополнения. Вставка живёт отдельным блоком, в тексте показывается плашкой, а покупатель видит готовый результат.
Заодно исправлено: рассказ о бренде, текст подборки и текст страницы тега показывались как есть, вместе с разметкой; описание для поисковика бралось из текста страницы вместе с тегами; у подборки товаров текст страницы на основном языке магазина негде было написать.
Ключ страницы магазин ставит сам
Чтобы запрос из браузера прошёл, странице нужен ключ — без него покупатель нажимает «В корзину», а магазин молчит. Раньше этот ключ ставила тема отдельной строкой в разметке, и забыть её было проще простого: тема выглядела рабочей, а корзина не наполнялась.
Теперь ключ печатает сам магазин и отдаёт его скриптам вместе с остальными настройками витрины. Темам поставки строка больше не нужна, а тема, написанная по прежней инструкции, продолжает работать как раньше. Что именно приходит скриптам, описано в справочнике: https://cartixx.com/docs/theme/behavior
Тема ведёт окно аксессуаров, а настройки витрины приходят одним объектом
Окно «возьмите к этому», которое магазин показывает после покупки из каталога, теперь может рисовать сама тема: положите в неё templates/partials/accessories-popup.html, и магазин нарисует окно по вашему шаблону, оставив за собой поведение — выбор, живой итог, добавление в корзину. Оформление и поведение тоже забираются своими файлами. Шаблона в теме нет — окно собирает магазин, как и раньше, поэтому тема, написанная кем-то ещё, ничего не теряет. Надписи окна берутся из словаря темы, так что владелец правит их там же, где остальные тексты витрины.
Адреса действий магазина тема больше не прописывает руками. Раньше на теге body висели пятнадцать data-атрибутов: половина из них ничего не делала, а забытый ломал корзину молча. Теперь магазин печатает объект window.CartiX — адреса уже с языковым префиксом витрины, валюта, раздел страницы и настройки окна аксессуаров. Темы, написанные по прежней инструкции, продолжают работать. Как этим пользоваться, описано в справочнике: https://cartixx.com/docs/theme/behavior
Выгрузка заказов перестала упираться в память на колонке «Состав заказа». Позиции читались все сразу, и на магазине с большими заказами файл не собирался вовсе. Теперь состав собирается построчно, а из базы поднимается только то, что просят выбранные колонки — выгрузка стала втрое быстрее и не зависит от числа позиций в заказе.
Окно набора экспорта больше не белеет. Включив колонку у нижнего края длинного списка, вы получали пустое окно, из которого было не выбраться, — теперь окно остаётся на месте.
Порядок характеристик из типа товара теперь соблюдается на сайте
Вы расставляете характеристики мышью внутри типа товара — «Предназначение» вторым у банок, десятым у бутылок, — и раньше этот порядок оставался только в панели: сайт показывал характеристики в общем порядке справочника. Теперь порядок типа соблюдают страница товара, плитки в каталоге и подборках, переключатель вариантов покупки и сравнение товаров. Характеристики, отмеченные «для всех типов», идут следом — так же, как панель показывает их в конце списка типа.
У характеристики появился значок
В редакторе характеристики можно загрузить картинку — гирьку у «Веса», щит у «Гарантии». Подходят PNG, JPG, WebP и SVG до 2 МБ; растровый магазин уменьшает сам, SVG остаётся чётким на любом экране. Значок появляется рядом с названием характеристики в карточке товара. Если вы делаете свою тему, адрес значка приходит в поле icon: https://cartixx.com/docs/theme/features
Панель управления в этом выпуске окончательно перестала уезжать вбок на телефоне: поправлены разделы настроек и системный, а плиточные сетки во всей панели больше не могут распереть страницу.
Каталог и покупатели открываются с телефона
Список товаров с телефона был почти бесполезен: страница уезжала вбок на полтысячи точек, и видно было только снимок и название — цену, остаток и состояние приходилось искать прокруткой вправо. Теперь на узком экране строка складывается в карточку: сверху снимок, название и кнопка действий, ниже по строке на каждую колонку с её подписью. Колонки остаются вашими: что вы выбрали показывать в списке, то в карточке и появится, включая характеристики.
Так же сложились покупатели и заказы в карточке покупателя, а журнал движений остатка оставляет на телефоне главное: когда, что произошло, на сколько и сколько стало. Раздел «Категории» больше не уезжает вбок вместе с кнопкой «Сохранить», когда открыта правка.
Вы решаете, как часто предлагать аксессуары
Окно с аксессуарами после покупки из каталога показывалось один раз на товар за визит, и понять это со стороны было нельзя: вы добавляете товар — окно появляется, добавляете его же ещё раз — ничего. Теперь в настройках аксессуаров есть выбор: предлагать на каждую покупку, один раз на товар за визит (как было, остаётся по умолчанию) или один раз за визит. Когда проверяете окно сами, поставьте «на каждую покупку» — оно будет приходить всегда.
Кнопка «Назначить аксессуары» в списке товаров больше не исчезает, если вы нажали «Выбрать все найденные»: теперь группу можно назначить всему отбору сразу — например, всем светильникам каталога. Этой же кнопкой привязки снимаются со всего отбора. Как всё это настраивается, подробно описано в справочнике: https://cartixx.com/docs/catalog/accessories
Контакты, сотрудники и права открываются с телефона
Разделы CRM продолжили работу над панелью на небольших экранах. Списки контактов, полей карточки и сотрудников были таблицами шириной около тысячи точек: на телефоне и планшете они уезжали вбок, и до телефона человека, переключателя поля или роли сотрудника приходилось листать вправо. Теперь строка складывается в карточку — всё видно сразу, а полная таблица возвращается на широком экране.
Заодно поправлена шапка любого экрана панели: кнопки уходят под заголовок сами, когда рядом с ним уже не помещаются, — раньше на планшете название сжималось в две строки, подпись под ним обрывалась на середине, а подпись кнопки рвалась пополам. В ролях выбранная роль сама подводится к глазам: на телефоне права стоят под списком, и нажатие выглядело так, будто ничего не произошло.
Полоса сводки над списком встала ровно на телефоне
В разделах «Брошенные корзины», «Заявки на звонок» и «Уведомления о поступлении» полоса сводки над списком разъезжалась на узком экране: главная строка занимала левую половину, а числа рядом с ней вставали узкой лесенкой. Теперь полоса складывается — сверху главная строка во всю ширину, под ней три числа в ряд.
Заодно эта строка перестала обрезаться многоточием: на телефоне из-за него пропадал сам смысл предложения.
Панель управления открывается с планшета и телефона
Панелью теперь можно пользоваться не только за компьютером. Раньше на узком экране список разделов пропадал: зайдя в сводку с планшета, вы не могли уйти ни в заказы, ни к покупателям. Теперь он выезжает по кнопке в шапке и по значку слева, а закрывается сам, как только вы выбрали раздел.
Разделы «Дашборда» перестроены под небольшие экраны. Сводка сама решает, сколько плиток и колонок поставить в ряд, — на ноутбуке с узким окном она больше не выглядит телефонной. Рабочий стол заказов работает в два шага: сначала очередь, затем открытый заказ с возвратом к списку, — раньше он уезжал вбок целиком, и сумму заказа приходилось искать прокруткой. Список заказов помещается на экран телефона: остаются номер со статусом, покупатель и сумма. В редакторе заказа количество и цена встали в строку и перестали обрезаться. В разделах со списком и подробностями открытая запись подводится к глазам сама. Кнопки на телефоне стали компактнее.
Разделы и склады показываются тем витринам, которым их отдали
Если у магазина несколько витрин, для раздела, марки, склада или подборки можно выбрать, где они показываются. Раньше выбор сохранялся и ни на что не влиял: все витрины показывали всё, а на втором домене покупатель видел разделы первого. Теперь отметки работают, а витрина берётся из самого запроса.
Переименовали раздел — старая ссылка ведёт на новый
При смене адреса раздела, товара или страницы магазин сообщает об этом дополнению «Редиректы», и оно само заводит правило со старого адреса на новый. Раздел уходит вместе с подразделами и товарами, а повторное переименование не выстраивает цепочку переходов: посетитель с самой первой ссылки попадает сразу на последний адрес.
Кнопки, которых не хватало в панели
Порядок фотографий товара задаётся мышью или стрелками, у каждой фотографии появились подпись для поиска и всплывающая подсказка. Метки-дубли объединяются в одну: товары переезжают на выбранную, лишние удаляются. Склады и типы товаров выстраиваются в нужном порядке. В настройках рекомендаций можно посмотреть, что подберётся покупателю прямо сейчас. В подборке по правилам появился выбор «любое из условий», а найденные товары переносятся в список вручную порциями — и магазин говорит, сколько их всего. В списке товаров появился выбор порядка: сначала новые или старые, по названию, сначала дешёвые или дорогие.
Магазин не обрезает списки молча
Отзывы и вопросы на карточке товара, а также история изменений товара в панели показываются последними полусотней. Теперь под списком стоит строка «показаны последние 50 из 214» — раньше список просто обрывался.
Фильтры и быстродействие
Выключенная марка больше не предлагается в фильтрах раздела, а у видимой рядом с названием показывается логотип. Цена, по которой товары сортируются и попадают в диапазон ползунка, теперь лежит готовым числом: большой раздел перестал перебираться целиком при каждой сортировке и каждом движении ползунка.
Выбор варианта и отбор товаров работают в любой теме
Переключение цвета и размера, а также отбор товаров в разделе раньше были частью каждой темы. Тема, написанная не нами, получала карточку и раздел, где ничего не работает. Теперь это делает сам магазин: цена, старая цена, размер скидки, код, наличие, кнопка покупки и характеристики варианта, а в разделе — галочки, ползунок цены, порядок, «показать ещё» и панель отбора на телефоне.
Если ваша тема ведёт выбор варианта или отбор своими силами, укажите в разметке data-sku-runtime="theme" или data-catalog-runtime="theme" — магазин отойдёт в сторону.
Карточка товара больше не теряет данные
Сохранение карточки уносило с собой то, о чём его не просили: выбор размера и цвета пропадал с витрины, вес и габариты обнулялись, а у варианта слетали главное фото и валюта — товар, заведённый в долларах, начинал продаваться по той же цифре в гривне. Теперь всё, о чём форма молчит, остаётся как было, а характеристику можно очистить, оставив её пустой.
Тем же порядком закрыты соседние места. Сохранение услуги больше не стирает её привязку к товарам, выключенное «продаётся только упаковками» не удаляет заведённые упаковки, а переключение подборки в ручной режим не забывает правила отбора. Характеристика с одним значением из списка снова показывает выбранное и не пропадает при попытке его сменить. Если у товара заполнены характеристики, которых нет у его типа (так бывает после переезда или импорта), карточка их наконец показывает — раньше их было видно только на витрине.
Покупатель получает то, что видит
Отобрал в каталоге размер 37 — в корзину уходит именно он, а не основной вариант товара. Наличие на карточке тоже считается по отобранному варианту. Вошедший покупатель больше не получает страницу, посчитанную для гостя: он видит своё имя в шапке и свои цены, а не розничные.
Товар не может оказаться сразу на двух страницах раздела: у сортировок появился последний различитель, и часть каталога перестала теряться между страницами.
Деньги
Акции со сроком начинаются и заканчиваются по часам магазина, а не сервера — раньше «по 24 августа» в Киеве действовала до трёх часов ночи. Блок «Похожие товары» сравнивает цены в одной валюте и показывает цену товара, а не цену варианта. Массовая правка цен не принимает снижение больше ста процентов: раньше «минус 150%» делало пачку товаров бесплатными.
Склад, на котором ещё лежит товар, удалить нельзя, а удаление опустевшего пересчитывает остатки. Значение характеристики, которое стоит у товаров, тоже не удаляется молча — магазин скажет, у скольких товаров оно используется. Удалённые подкатегории уходят из поиска витрины вместе с родителем.
Настройки, которые раньше только сохранялись
«Выбрать вручную» в фильтрах раздела оставляет покупателю ровно те характеристики, которые вы отметили, и в вашем порядке. «Вручную, порядок в категории» расставляет товары так, как решили вы. «Товаров на странице» и «Догружать при прокрутке» дошли до списка товаров. «Мало» и «критично» в списке считаются по порогам ваших складов, а не по зашитому числу. Услугу можно сделать обязательной. Рассказ о бренде, ссылка на его сайт и описание тега видны на своих страницах.
Видео и услуги видны в любой теме
Видео товара магазин умел хранить и показывать в панели, но покупателю его не показывала ни одна тема. Теперь ролики стоят под галереей, а проигрыватель подключается только по нажатию. Доп-услуги (упаковка, гарантия, установка) появились в теме по умолчанию — раньше их рисовали две темы из трёх.
Внимание: право «Смотреть каталог» заработало
Оно выдаётся менеджеру и кладовщику с самого начала, но не открывало ничего — раздел просто пропадал из меню. Теперь по нему открыт каталог на чтение: списки, карточки, справочники и остатки. Менять каталог по-прежнему можно только с правом на управление. Проверьте роли сотрудников, если каталог кому-то был закрыт именно этой стороной.
Условия показа аксессуаров работают так, как их читают
Группа аксессуаров показывается там, где вы указали: тип товара, категория, значение характеристики. Раньше эти условия работали по отдельности — достаточно было совпадения любого одного. Заполнив категорию «Стеклянные банки Твист» и объём «30», владелец получал группу на всех банках подряд, а условие по объёму не сужало ничего.
Теперь заполненные условия обязаны сойтись все: категория и характеристика и тип. Незаполненное условие ничего не ограничивает — группа, где указана только категория, работает как прежде. Внутри одного условия ничего не изменилось: подходит любая из выбранных категорий и любое из перечисленных значений.
«Отдельные товары» остались отдельно: товару, выбранному вами вручную, остальные условия не указ.
Проверьте свои группы, если условий было несколько
Если в группе заполнено сразу несколько условий, она теперь показывается на пересечении, а не на объединении: товаров станет меньше, и это как раз то, чего от неё обычно и ждут. У групп с одним условием ничего не изменилось.
Подсказка под «Где показывать» переписана: раньше она об этом молчала.
Покупатель видит, когда товар снова появится
В карточке товара появилось поле «Дата поступления». Заполните его — и дата сама покажется покупателю: строкой в каталоге и рядом с наличием на странице товара. Настраивать больше нечего.
Показывается она, только пока товара нет в наличии. Товар появился — дата исчезает сама, очищать поле не нужно. Прошедшую дату магазин тоже не показывает: «ждите 20 августа», прочитанное в сентябре, отталкивает сильнее, чем молчание.
Если у вас разрешён предзаказ, дата видна и рядом с кнопкой предзаказа — покупателю она в этом случае нужна тем более.
Дата задаётся у товара целиком, как и само «нет в наличии». Как вывести её в своей теме: https://cartixx.com/docs/theme/product
Аксессуары предлагаются прямо в каталоге
Покупатель добавил товар с карточки в списке — магазин показывает окно с аксессуарами к этому товару: фото, цена, отмечено то, что вы пометили основным. Отметил нужное, нажал «Добавить в корзину» — и они там, со скидкой группы. Открывать карточку товара ради этого больше не нужно.
Возможность включается в настройках аксессуаров, по умолчанию выключена. Пока она выключена, витрина за неё не платит ничем.
Окно магазин рисует сам, поэтому оно работает в любой теме оформления — и в наших, и в вашей собственной. Теме для этого не нужно ни строчки. Подробности для верстальщика: https://cartixx.com/docs/theme/behavior
У каждого аксессуара своя кнопка покупки
Раньше аксессуары можно было взять только комплектом. Теперь у каждого есть своя кнопка: покупатель берёт одну крышку, не собирая набор и не снимая остальных отметок. Кнопка появилась и в окне каталога, и в конфигураторе на странице товара.
Скидка аксессуара — это скидка за покупку вместе с товаром. Взятый отдельно аксессуар идёт по обычной цене, а как только основной товар окажется в корзине, цена пересчитается сама. У аксессуаров без скидки цена одна и та же везде.
Мелочи, которые мешали
Группу с одиночным выбором теперь можно снять повторным нажатием: покупатель, передумавший брать предложенное по умолчанию, больше не обязан его покупать. Один и тот же товар, стоящий сразу в двух группах и отмеченный в обеих, кладётся в корзину один раз, а не двумя штуками.
Покупки через конфигуратор аксессуаров теперь попадают в воронку продаж и в счётчики аналитики — раньше они там не считались вовсе.
А ещё правки оформления витрины доезжают до покупателей сразу: файл стилей подписывался версией соседнего файла, и браузеры продолжали показывать прежнее оформление, пока не менялось что-то ещё.
Тип налогообложения в реквизитах продавца
В профиле реквизитов появилось поле «Тип налогообложения». Это обычная строка, и пишете вы её так, как её ведёт ваш бухгалтер: «Платник єдиного податку 3 групи, 5%», «Платник ПДВ», «ФОП без ПДВ». Поле своё у каждого профиля — если витрины торгуют от разных компаний, у каждой печатается собственная формулировка.
В печатных формах оно доступно как переменная тип налогообложения продавца и стоит в списке подстановок редактора рядом с налоговым номером, так что вставить его в счёт или накладную можно нажатием. Как править бланки: https://cartixx.com/docs/engine/print-templates
Готовые бланки мы не меняли: строка про налогообложение нужна не каждому магазину, и место для неё вы выбираете сами. Пустое поле в документ, как и раньше, не попадает.
Магазин называет ту версию, на которой работает
Раздел «Что нового» мог одновременно показывать «сейчас 2.7.1» и «доступно обновление 2.7.1»: версию для маркетплейса магазин брал из записи о последнем обновлении через кнопку. Если магазин обновляли файлами — а так делают разработчики и хостинг-провайдеры, — запись оставалась старой навсегда, и магазин объявлял себя версией годовой давности.
Тот же перекос мешал ставить дополнения: магазин мог отказать со словами «дополнению нужна версия 2.1.0, а у вас 1.9.0», работая на 2.4. Теперь версия берётся бОльшая из двух — записанной и той, что лежит в файлах магазина, — и все экраны говорят одно и то же.
Характеристика с несколькими значениями показывается одной строкой
Таблица характеристик на странице товара выдавала отдельную строку на каждое значение: у смартфона с пятью способами связи «Интернет» повторялся пять раз подряд, а «Цвет» у товара двух цветов — дважды. В списках товаров такого никогда не было, и один и тот же товар выглядел по-разному на своей странице и на плитке в подборке. На нашем демо-магазине у смартфона было 41 строка при 36 характеристиках.
Теперь строка одна на характеристику, а значения перечисляются в ней через запятую: «Интернет: WAP, 4G, 3G, EDGE, GPRS». Ничего настраивать не нужно, товары показываются так сразу после обновления.
Что это даёт теме оформления
Значения приходят в тему и по отдельности, поэтому их можно показать не только строкой через запятую. У каждого значения есть своя подпись, свой цвет из справочника и своя ссылка на подборку: цветные значения рисуются кружками, а покупатель, кликнув по «синему», попадает в подборку синих товаров, а не всей строки сразу.
Как это разметить в своей теме, с примерами: https://cartixx.com/docs/theme/features
Базовая тема, «Маркет» и «Промо» уже обновлены — в них значения выводит общий кусок разметки, который можно взять за образец.
Значения вариантов покупки остались раздельными
Если вес или другое значение задано конкретному варианту товара, оно по-прежнему живёт своей строкой и меняется вместе с выбором варианта: покупатель переключает фасовку и видит её собственный вес, а не соседний.
Ссылки в описании обновления открываются
Раздел «Что нового» и экран обновления показывали описание выпуска обычным текстом, и адрес приходилось переписывать руками. Теперь по ссылке из описания можно просто перейти.
Покупатель видит вес корзины
Магазин может показывать в корзине общий вес покупки, и он меняется сразу, как только покупатель правит количество. Возможность вы включаете в настройках оформления заказа, отдельно для каждой витрины; по умолчанию она выключена.
Вес берётся из характеристики товара «Вес» — той же, по которой считается доставка, поэтому в корзине и в накладной будет одно и то же число. Вес меньше килограмма показывается в граммах. У товаров, где характеристика не заполнена, строка веса не появляется.
Магазин стал заметно экономнее к серверу
Каждая страница витрины делала десятки лишних обращений к базе: свои настройки отдельным запросом читало каждое установленное дополнение, языки магазина спрашивались заново из каждого места, а счётчики значений в фильтрах считались по два запроса на характеристику. На магазине с шестью десятками дополнений это полсотни запросов на каждый заход покупателя — независимо от размера каталога.
Теперь всё это читается один раз на страницу. На хостинге, где база стоит на отдельной машине, разница чувствуется сразу.
Где магазин хранит кеш — теперь ваш выбор
В разделе «Система → Обслуживание» появился выбор хранилища: файлы, база данных, Redis или Memcached. У каждого написано, когда его стоит выбирать, а недоступное объясняет причину. Соединение проверяется до сохранения: магазин не даст переключиться на хранилище, которое не отвечает.
Новые магазины ставятся на файловый кеш вместо базы. Уже работающих это не касается — ваш выбор остаётся прежним, пока вы сами не решите иначе.
Вид характеристики задаётся один раз
Сменить вид или формат уже заведённой характеристики больше нельзя, и магазин объясняет почему. Раньше переключение формата со «списка» на «одно значение» молча стирало значения у всех товаров и артикулов — вернуть их было нельзя. Нужен другой вид — заведите новую характеристику и перенесите значения.
Разбор двух сплошных проверок панели. Убранная из заказа позиция возвращает товар складу. Товар из панели встаёт по цене, по которой продаётся, — с учётом акций и валюты артикула. Баллы не сгорают сверх стоимости заказа. Каталожная акция с пустым выбором больше не роняет цены на весь каталог. Кабинет чужого покупателя закрыт: сменить его пароль нельзя. Выгрузка и загрузка данных разведены по правам. Строка сводки открывает ровно столько заказов, сколько назвала. Заказ на компанию оформляется из панели, покупатель выбирается из базы, заказ удаляется. Покупатель узнаёт судьбу промокода. Появились категории покупателей, вход в магазин из карточки и выгрузка контактов.
Неудачное обновление больше не оставляет магазин закрытым
На время обновления магазин закрывается табличкой «Ведутся работы» и открывается по окончании. Если обновление не доезжало, магазин возвращался к прежней версии — но при неудачном возврате он мог остаться закрытым, и снаружи это выглядело как упавший сайт. Теперь магазин открывается в любом случае, чем бы обновление ни закончилось.
Возврат к прежней версии стал устойчивее: один файл, который не удалось вернуть, больше не отменяет возврат остальных, а о невозвращённых магазин прямо сообщает. Отдельно добавлена страховка на случай, когда обновление обрывается совсем — например, у сервера закончилась память: магазин сам заметит это в течение нескольких минут и откроется, а обновление пометит несостоявшимся.
Обновлены графики в панели
Библиотека графиков в панели переведена на новую версию: свежие подсказки, аккуратнее анимация при смене периода, поддержка жестов на планшете. Заодно поправлены подписи вертикальной оси — при обновлении библиотеки они начали выводиться сырыми числами вроде «200000.00» вместо «200 тыс.», теперь снова сокращаются.
Из панели убрана библиотека, которая давно ничем не пользовалась, — поставка стала чуть легче.
Обновление начинки магазина
Магазин переведён на свежие версии того, на чём он работает: Laravel 13.26, Symfony 8.1.4, обновлены библиотеки работы с изображениями, телефонными номерами, выгрузками в таблицы и входом через соцсети. На стороне панели обновились сборщик Vite и Vue со всем окружением. Для вас это ничего не меняет внешне — те же экраны и те же настройки, — но магазин получает исправления и заплатки безопасности, которые вышли в этих библиотеках за последнее время.
Обновляться можно обычной кнопкой: ни настройки, ни данные это не затрагивает.
Переменные в письмах понимаются в обоих написаниях
В магазине переменные пишутся по-разному: в печатных бланках это {'$'}имя в одинарных скобках, в письмах — имя в двойных. Перепутать их проще простого, и покупателю уходило письмо, где вместо номера заказа в теме стояли скобки с названием переменной. Теперь письма понимают оба написания, и переписывать уже настроенные тексты не нужно.
Заодно в настройках дополнений под полем с текстом письма появился список того, что можно подставить: название по-человечески, рядом — как это выглядит в тексте. Нажатие вставляет переменную в поле, так что помнить её название наизусть больше не требуется.
Видно, что даёт обновление и как оно идёт
В разделе обновлений под номером новой версии теперь написано, что в ней появилось: раньше магазин показывал только «Доступна 2.4.1», и решать, обновляться ли сейчас, приходилось вслепую. То же самое и у дополнений — их «что нового» стало читаемым, а не сплошной строкой со служебными знаками.
Ход самого обновления виден шагами: проверяем версию, скачиваем, проверяем подпись, устанавливаем, готово. Раньше после нажатия кнопки всплывало сообщение, и дальше было тихо — обновление двигалось само по себе не быстрее раза в минуту. Теперь работу двигает та вкладка, в которой вы нажали кнопку, а если обновление уже идёт, экран показывает это сразу при открытии. Закрыть вкладку по-прежнему можно: начатое обновление доделается само.
Видно, что заказ оформила компания
В карточке заказа блок «Покупатель» теперь прямо говорит, что заказ оформляли компанией, и показывает её название и налоговый номер. Раньше менеджер видел только имя, телефон и почту, а реквизиты, по которым выставлять счёт, приходилось искать в правке заказа.
Компания больше не попадает в заказ из карточки покупателя, если он оформлял как частное лицо. У покупателей, перенесённых с другой платформы, поле «Компания» заполнено сплошь и рядом при виде «физлицо», и оттуда оно уезжало в каждый их заказ — заказ выглядел как заказ юрлица, хотя им не был.
Остатки и покупатель в оформлении витрины, отметка о новой версии
Оформление магазина теперь знает о товаре больше. У товара появился остаток: сколько его всего и сколько на каждом складе, который вы согласились показывать покупателю. Пустое значение означает «остаток у этого товара не считают», и это не то же самое, что ноль, — надпись «осталось 0 шт.» на таком товаре не появится. Аксессуары можно вывести не только в карточке товара, а где угодно: в подборке на главной, в списке, в корзине. Имя покупателя приходит в оформление по частям — фамилия, имя и отчество отдельно, — поэтому обратиться к нему по имени и подставить его данные в форму стало можно без разбора строки.
Телефон покупателя больше не задваивается в карточке. Один и тот же номер, записанный в старом магазине по-разному, после переезда превращался в несколько одинаковых строк, и менеджер не понимал, по какому звонить; теперь номера сверяются уже приведёнными к единому виду, а накопившиеся повторы магазин убирает сам при обновлении. В шапке панели рядом с «Что нового» появляется отметка, когда выходит новая версия магазина, — чтобы узнать об этом, больше не нужно заходить в раздел обновлений.
Подпись и печать доходят до файла PDF
Счёт и накладная, сохранённые в PDF, выходили без подписи и печати: в браузере бланк выглядел как надо, а в файле на их месте оставалась пустота. Магазин искал картинку на диске по точному совпадению её адреса с адресом магазина, и хватало «www» или http вместо https, чтобы она потерялась.
Теперь адрес разбирается так же, как это делает браузер: домен не сверяется, а файл ищется и в открытой папке сайта, и прямо в хранилище — на случай, когда ссылки на него не создано. Если картинки бланка на диске всё-таки нет, магазин пишет об этом в журнал, а не выпускает документ без печати молча.
Покупатель в заказе: кто он, что покупал и как до него дойти
Заказ теперь помнит, оформлял его человек как физлицо или как компанию, и больше не спорит с карточкой покупателя. Правка заказа спрашивает те же поля, что и оформление на сайте, отбор по виду покупателя такие заказы находит, а название компании в форме больше не остаётся пустым. Реквизиты, которые покупатель ввёл при оформлении, дописываются в его карточку, если там пусто, — в следующий раз вводить их заново не придётся.
Из заказа можно перейти в карточку покупателя, из карточки — в его контакт, а «Все заказы покупателя» открывают список, отобранный по этому человеку. Число покупок в заказе считается по всей истории: и то, что человек купил гостем, и то, что купил после регистрации. Поиск по контактам снова находит людей по адресу почты — раньше на такой запрос не находилось ничего.
График продаж товара и ручной выбор рекомендаций
В карточке товара на вкладке «Основное» появился график: просмотры, продажи и выручка за выбранный срок. Цифры магазин считает так же, как в отчётах: суммы приведены к основной валюте по курсу заказа, отменённые заказы в продажи не идут. Срок выбирается прямо над графиком — за неделю, месяц или три месяца. Если товар за этот срок никто не смотрел и не покупал, вы увидите об этом надпись, а не пустую сетку. История изменений и движение остатков остались под графиком.
В блоках рекомендаций режим «Выбрать вручную» теперь делает то, что обещает: под ним появилось поле подбора товаров с поиском по названию и артикулу. Покупатель увидит выбранные товары в том порядке, в каком вы их поставили.
Согласия покупателя и метки в карточке
В карточке покупателя появился блок с настоящими сведениями о человеке: какой товар он берёт чаще всего, что у него сейчас лежит в незавершённой корзине и что он разрешил магазину. Из корзины можно сразу оформить заказ — менеджеру больше не нужно собирать её заново руками.
Магазин запоминает два разных согласия. Галочку «я согласен с условиями» на оформлении заказа он теперь сохраняет: раньше её требовали, но нигде не отмечали. Согласие получать письма о новинках покупатель даёт сам — при оформлении заказа или при регистрации, если вы включили такое предложение в настройках витрины, — и в любой момент отказывается от него в личном кабинете. Сотрудник может отметить отказ в карточке, услышав его по телефону. Рассылка обходит тех, кто просил не писать, и обещанное число получателей считается так же.
Покупателям можно ставить метки: «оптовик», «звонить вечером», что угодно. Метка заводится прямо в карточке — наберите название и нажмите Enter, — видна и в карточке контакта, и в карточке покупателя, а список покупателей умеет отбирать по ней.
Журнал показывает историю целиком
«Что нового» показывало только два десятка последних версий каждого дополнения и самого магазина, а остальное молча обрезалось — хотя у движка версий под сотню.
Теперь в журнал приходит вся история. На экране сразу сорок свежих выпусков, остальные добираются кнопкой внизу — страница не грузит сотни описаний, пока вы их не попросите.
«Что нового» стало настоящим журналом
Раньше раздел показывал только те обновления, которые магазин застал сам: свежая копия открывала пустой экран, хотя за спиной у движка десятки версий.
Теперь журнал собирает всю историю — и магазина, и установленных дополнений, — с описанием каждой версии, по месяцам. У тех версий, которые уже стоят у вас, видно и дату установки. Обновления, поставленные файлом, из журнала не пропадают, а если связи с маркетплейсом нет, раздел показывает то, что знает сам.
Рабочий стол заказов не моргает
При переходе к другому заказу список слева перечитывался заново и на секунду показывал заглушку, хотя заказы в нём те же. Теперь список остаётся на месте, а заглушка появляется только там, где содержимое действительно меняется.
Заодно управление заказом справа больше не показывает данные прежнего заказа, пока открывается новый: суммы, статус оплаты и кнопки ждут вместе с карточкой. При смене группы слева заглушка накрывает все три колонки — в новой группе откроется другой заказ.
Письма магазина умеют нести документ
Раньше письмо покупателю могло только рассказать и дать ссылку. Теперь к нему прикладывается файл: счёт, накладная, инструкция. На этом уже работает новое дополнение «Счёт покупателю на почту» — оно отправляет покупателю счёт прямо из заказа.
Обложки дополнений в каталоге
В разделе «Инсталлер» у каждого дополнения появилась картинка: в списке видно, о чём оно, ещё до того, как вы откроете описание.
Экспорт заказов
В списке заказов появилась кнопка «Экспорт заказов». Файл собирается ровно по тому отбору, который сейчас на экране: без фильтров уйдут все заказы, в группе — заказы группы, с фильтрами — то, что нашлось.
Что попадёт в файл, вы задаёте сами наборами в разделе «Настройки заказов». В наборе вы выбираете колонки и их порядок, формат файла (CSV, книга Excel или таблица OpenOffice), разделитель и кодировку для CSV, а также нужна ли первая строка с названиями колонок. Наборов можно завести сколько угодно: курьеру хватает номера, покупателя и телефона, бухгалтерии нужна вся карточка заказа. При выгрузке менеджер выбирает набор, а формат спрашивать не приходится — он записан в самом наборе. Названия колонок и содержимое приходят на том языке, на котором работает сотрудник.
Накладная перевозчика оформляется в окне
Накладная теперь создаётся в отдельном окне: поля описывает сам перевозчик, города и отделения подсказываются по мере ввода, стоимость доставки пересчитывается сразу. Номер накладной, её состояние и ссылки на печать видны прямо в заказе.
Раздел «Что нового»
В разделе «Система» появился журнал обновлений. Вы видите, какие обновления магазина и дополнений приехали, когда это произошло и что именно в них изменилось.
Вид панели
Кнопки дополнений и размер строк в очередях приведены к одному виду: заявки на звонок, уведомления о поступлении и брошенные корзины теперь выглядят одинаково, а кнопка «Настроить» открывает нужное дополнение сразу на его настройках.
Раздел «Дополнения»: весь ваш магазин целиком
Раздел показывает все установленные дополнения, а не только те, у которых есть форма настроек. Раньше из 59 дополнений в разделе было видно 23 — остальные для владельца просто не существовали, и их искали по другим экранам. Дополнению, у которого настраивать нечего, теперь так и написано. Выключенные тоже в списке, с пометкой, и включить их можно прямо здесь. Дополнения сгруппированы по разделам, есть поиск по названию, у каждого видно версию, что мешает ему работать и куда оно встраивается в оформление магазина.
Счётчики дел прямо в меню
У разделов появились числа: сколько заказов ждёт менеджера, сколько переписок без ответа, сколько отзывов на проверке, сколько вопросов о товарах, сколько заявок на звонок и сколько покупателей ждут поступления товара. Числа живые — панель пересчитывает их каждые десять секунд, сразу после вашей правки и при возвращении на вкладку, а значок гаснет, когда дела разобраны. Считает каждый раздел по вашим правам: менеджер, который ведёт только свои заказы, видит в значке только их. На колокольчике вместо точки теперь число непрочитанных.
Дополнение приносит свои настройки само
Дополнение описывает свои настройки у себя, а раздел рисует форму по описанию — движку для этого больше не нужно ни строчки кода, и выключенное дополнение ничего не занимает в панели. Настройки бывают своими у каждой витрины: над формой появляется выбор витрины, а значения хранятся по витринам. Дополнение узнаёт, что его настройки сохранили, и обновляет то, что готовило заранее, — новый счётчик аналитики появляется на витрине сразу, а не после истечения кеша.
Дополнение может принести и целый экран, если формой его не выразить: профили форм, меню бота, мастер переезда. Такой экран живёт в самом дополнении и уезжает вместе с ним.
Настройки списка заказов и фото товара
Три переключателя в настройках заказов сохранялись и ни на что не влияли: догрузка при прокрутке, цвет строки по статусу и колонка складов. Теперь работают, а «Заказов на странице» задаёт и то, сколько заказов магазин отдаёт за раз. В подборе товара и в составе заказа вместо снимка рисовался значок коробки — теперь видно фотографию.
Счётчики дел прямо в меню
Теперь у разделов есть числа: сколько заказов ждёт менеджера, сколько переписок без ответа, сколько отзывов на проверке, сколько вопросов о товарах без ответа, сколько заявок на звонок и сколько покупателей ждут поступления товара. Не нужно заходить в раздел, чтобы понять, есть ли там работа.
Числа живые: панель пересчитывает их сама каждые десять секунд, сразу после вашей правки и при возвращении на вкладку. Значок гаснет, когда дела разобраны. Считает каждый раздел по вашим правам: менеджер, который ведёт только свои заказы, видит в значке только их. Какие статусы заказов считать, вы выбираете в настройках заказов. На колокольчике вместо точки теперь число непрочитанных.
Настройки списка заказов заработали
Три переключателя в настройках сохранялись и ни на что не влияли. «Догружать при прокрутке» — список добирает заказы сам, страницы при этом не нужны. «Красить строку в цвет статуса» — строка красится тем цветом, который вы задали статусу. «Показывать склад отгрузки» — в списке появилась колонка со складами и суммой по каждому. Настройка «Заказов на странице» теперь задаёт и то, сколько заказов магазин отдаёт за один раз.
Фото товара в заказе
При подборе товара и в составе заказа вместо снимка рисовался значок коробки. Теперь видно фотографию — товар узнаётся глазом, а не по названию из десяти слов. Правило выбора снимка стало общим для всего магазина: главное фото артикула, затем фото галереи этого артикула, затем первое фото товара.
Фискальные чеки переехали в дополнение
Экран чеков в заказе, кнопки выдачи и возврата и все их тексты теперь принадлежат дополнению «Чекбокс» — движок даёт только место в карточке заказа. Дополнения научились показывать в заказе свои блоки и выполнять действия прямо из них.
Деньги магазина — по праву доступа
Теперь вы решаете, кто из сотрудников видит деньги. В правах появился раздел «Финансы»: выручка и средний чек на сводке, отчёты по деньгам и себестоимость товара показываются только тем, кому вы это разрешили. Менеджер без такого права работает как раньше — видит заказы, товары и покупателей, но не общие цифры магазина.
Заодно закрыт доступ к чужим заказам: сотруднику, который ведёт только свои заказы, чужие теперь недоступны везде — в письмах покупателю, документах и чеках, а не только в списке.
Заказы работают правильнее
Отмена заказа возвращает товар на склад, отменяет скидки и возвращает покупателю списанные баллы. Если заказ возвращают из отмены, баллы списываются снова, а когда их уже не хватает — заказ пересчитывается по обычной цене. Смена состояния оплаты больше не оставляет суммы от прошлого состояния.
Искать заказ стало быстрее: вы пишете номер, имя, телефон или почту, магазин подсказывает найденное списком, и по нажатию заказ открывается. Отдельного поля «искать по» больше нет — оно не нужно.
Фильтры списка вы собираете сами
В настройках заказов вы выбираете, по чему отбирать: состояние, оплата и её способ, доставка, тип покупателя, витрина, ответственный, дата, сумма, город, склад. На кнопке «Фильтры» видно, сколько отборов включено, — заказы больше не «пропадают» незаметно. В способах доставки и оплаты показываются и те, которыми заказы уже оформлены, даже если вы убрали их из настроек.
Печать документов сразу на несколько заказов и кнопки дополнений (например, печать этикеток) переехали в шапку списка: их видно, не открывая заказ.
Дополнения делают больше
Кнопка дополнения теперь умеет снять картинку заказа в буфер обмена, спросить подтверждение перед работой, сначала спросить, по каким заказам работать, и увести вас на нужный экран. Дополнения показывают свои блоки прямо в карточке заказа и свои кнопки в карточке товара.
Витрина
Характеристики товара отдаёт сам магазин — в карточке, в списке и в подборках. Теме больше не нужно доставать их самой, и характеристики доступны везде, где выводится товар. Товар, уже лежащий в корзине, отмечается на витрине и после перезагрузки страницы.
Числа в панели склоняются по-человечески: «1 заказ», «2 заказа», «5 заказов».
Настройки способов показывают то, с чем работают
Настройка с умолчанием открывалась выключенной, хотя работала включённой: у Новой Почты «Доставка в отделение» стояла выключенной, а отделения покупателю предлагались. Владелец щёлкал переключатель туда-обратно «чтобы включить» — и вот тогда настройка выключалась по-настоящему; сняв так все три типа получения, можно было потерять способ с оформления заказа целиком.
Теперь форма подставляет умолчания при открытии, и настройки сохраняются полностью: вы видите ровно то, с чем работает магазин. Ваш выбор умолчанием не перебивается — выключенное остаётся выключенным. Касается настроек доставки, оплаты, каналов связи и касс.
Номер профиля реквизитов виден в настройках
Печатный бланк объявляет компанию номером её профиля, а достать этот номер было неоткуда: приходилось печатать документ и смотреть, чьи реквизиты вышли. Теперь номер стоит над формой профиля и копируется кнопкой, а в переключателе профилей — рядом с названием.
Вместе с номером склада, который появился раньше, эти два числа и связывают склад с его юрлицом: в бланке с несколькими продавцами вы задаёте соответствие явно и больше не считаете профили по порядку.
Предпросмотр бланка на нужном заказе
Бумагу в редакторе печатных форм показывали на последнем заказе, а правку бланка вы затеваете из-за конкретного: заказ от юрлица, заказ с двумя складами, заказ с услугой в позиции. В панели предпросмотра появилось поле номера заказа — введите номер, и бумага соберётся на нём.
Номер пишется так, как он выглядит в списке заказов: и «№1005», и просто «1005» приведут к одному заказу, даже если в базе у него другой номер, а остальное приклеивает формат. Оставьте поле пустым — как и раньше, покажем последний заказ с товарами; такого номера в магазине нет — скажем об этом словами.
Видно, какие данные есть в шаблоне
Правя тему или печатный бланк, вы больше не гадаете, что лежит в заказе. Поставьте в шаблон {dump} — и увидите перечень всего, что доступно этому шаблону: имя значения, его вид и размер. {dump var=$order} покажет значение целиком, а {dumpc var=$order} отправит его в консоль браузера, не портя бумагу. В подсказке печатной формы для этого появилась своя группа.
Данные видит только сотрудник, вошедший в панель: покупателю такой тег не покажет ничего, даже если вы забудете его в теме. Пароли, ключи и подписи заменяются звёздочками, длинные списки и глубокая вложенность обрезаются.
Редактор бланка и страница, которая больше не падает
Печатную форму вы правите редактором кода: подсветка разметки, номера строк, поиск по шаблону, сворачивание блоков и сохранение по Ctrl+S. Высоту редактора можно потянуть за угол, а подстановка из списка теперь встаёт туда, где стоит курсор, а не в конец шаблона. Тем же заходом это починено и в письмах покупателю.
Магазин перестал отдавать ошибку вместо страницы, когда каталог служебных файлов создают сразу несколько посетителей. Такое случалось после обслуживания и после обновления: первый запрос каталог создавал, остальные падали на том, что он уже есть. Так же поправлены каталоги для печати документов — их часто печатают пачкой и из нескольких вкладок сразу.
Компанию в документе выбирает бланк
Над кнопками печати в заказе стоял список компаний — от какой из них печатать документ. Пользы от него не было: бланк, который объявляет продавца сам, этот выбор не замечал, а нигде не сохранялся — тот же счёт при повторной печати мог уйти уже от другого юрлица, покупателю же он всегда приходил от продавца витрины.
Теперь компания в документе везде одна и та же: её задаёт витрина заказа, а бланк вправе объявить свою тегом {profile id=…}. Счёт от второго юрлица вы делаете отдельным бланком — и на бумаге, и в письме покупателю он выглядит одинаково.
Номер склада виден в списке складов
Раздел «Каталог → Склады» показывает номер рядом с названием каждого склада. По нему печатный бланк отличает склады друг от друга, когда заказ разложен на несколько, и открывать ради номера карточку склада больше не нужно.
Обновление справочников перевозчиков и адрес получения в документах
Кнопка «Обновить города и отделения» в настройках дополнения теперь показывает, что происходит: «Загружаем города: 1 200» и итог с числом городов и отделений. Раньше она оставалась в положении «В очереди…», даже когда справочник уже загружался, а у «Нової Пошти» города не скачивались вовсе.
В печатных формах адрес получения снова полный. При доставке в отделение улица в адрес заказа не пишется, поэтому в бланке печатался один город; теперь туда попадает выбранное отделение или пункт выдачи, а для отдельных граф есть новые подстановки: отделение, его номер и город. То же самое покупатель видит в личном кабинете.
Номер склада показан в его настройках и копируется кнопкой — по нему бланк отличает склады, когда заказ разложен по нескольким. Сохранённый ключ доступа теперь подписан словами «Ключ сохранён».
Способ доставки говорит, когда работать не может
Дополнение перевозчика можно поставить, ключ ввести, способ включить — и не нажать «Обновить города и отделения». Способ выглядит рабочим, а покупатель на витрине его не видит: выбрать город и отделение не из чего. Раньше об этом сообщал покупатель, теперь панель сама пишет, чего не хватает, — в списке способов, в оформлении заказа витрины и в настройках дополнения, где стоит кнопка обновления справочника.
Оплата и доставка получили свой раздел
Способы доставки и оплаты переехали из карточки витрины в «Настройки → Оплата и доставка». Способ теперь заводится один раз на магазин, а витрины его включают: отметкой «на всех витринах» или поимённо, со своим порядком показа. Магазину с двумя витринами больше не нужны две «Нови Пошти» с одинаковыми ключами.
Оформление заказа тоже стало своим разделом: витрины перечислены слева, шаги — Корзина, Контактная информация, Доставка, Оплата, Подтверждение — раскрываются по одному. В шаге доставки видно только то, что показывать покупателю и в каком порядке.
Дополнения в панели разложены по разделам — доставка, оплата, уведомления, маркетинг — и ищутся по названию.
Заказ больше не оформить без адреса доставки
Способ доставки может потребовать своего: точку выдачи, адрес, номер отделения. Покупатель не проскочит такое поле мимо — раньше заказ оформлялся с посчитанной доставкой и пустым адресом.
Печатные формы
В бланк добавились склады заказа: у позиции видно, откуда она отгружается, а заказ доступен разложенным по складам — со своими позициями и суммой у каждого. Магазин, у которого склады принадлежат разным юрлицам, печатает счёт от нужной компании, объявляя её тегом {profile}. В подсказке редактора лежит готовая заготовка такого счёта.
Скрытые характеристики товара теперь тоже попадают в документ: покупателю на витрине их не показывают, а накладной они нужны. И появился способ получения заказа одним словом — отделение, почтомат или курьер, — чтобы бланк печатал нужное.
Настройки, которые заполняются таблицей
Дополнение может попросить у вас список, а не одно значение: города и адреса, куда вы возите заказы. Строка добавляется кнопкой, переставляется стрелками и удаляется корзиной.
Поля настроек больше не принимают подсказки браузера и не подсвечиваются им жёлтым.
Скидки, корзина и заказ считаются точнее
Проверка скидок вживую нашла места, где магазин показывал одну сумму, а списывал другую. Предохранители правила («не больше 500», «не дешевле 300») больше не стираются при повторном сохранении, скидка по промокоду переживает правку заказа менеджером, а корзина показывает суммы на текущий момент: акция, которая началась или закончилась, пересчитывается сразу. Доля скидки распределяется только на те товары, которых она касается, поэтому возврат такого товара возвращает верную сумму. Заказ больше не переоценивается по сегодняшнему тарифу доставки от одного нажатия «Сохранить».
Настройки витрины снова сохраняются: язык, выключенный в региональных настройках, больше не запирает форму, а настройка, указывающая на удалённую запись, не блокирует весь экран. Если сервер отказал, вы видите причину, а не молчаливую кнопку. Название магазина доходит до покупателя — в заголовок вкладки, подвал, письма и разметку для поисковиков, — а название способа доставки, которое вы написали для покупателя, больше не подменяется именем перевозчика.
Товар можно продавать упаковками
Теперь вы задаёте товару упаковки, в которых его отпускаете: «Упаковка, 50 шт», «Пачка, 1,4 м²». Покупатель в карточке товара переключается между упаковками и единицами, вводит нужное число пачек и сразу видит, сколько это будет метров или штук и сколько он заплатит. Если товар отпускается только целыми упаковками, магазин сам дотянет количество до целой пачки. Упаковка запоминается в заказе, поэтому и в корзине, и в письме покупателю, и в накладной позиция читается так, как её называл покупатель: «6 уп. (8,4 м²)».
Вес и габариты товара доехали туда, где они нужны: в печатные формы, в расчёт доставки, в выгрузку товаров и в товарные фиды. Вес можно указать как всему товару, так и отдельному варианту покупки. В бланк теперь подставляются характеристики товара — все списком или любая по её коду, — а размерности переведены на все языки магазина. В письме покупателю появился состав заказа: он видит, что именно у него заказано, а не только «товаров: 2». Параметры отправления в заказе показываются, только если вы их включили, и в накладную попадает то, что ввёл менеджер, а не подставленная единица.
Подстановки в бланке подписаны по-человечески
Список «что можно подставить в бланк» был сплошной лентой кодов вроде $order.items_total — приходилось разбирать их по буквам. Теперь это карточки: сверху понятное название «Сумма товаров», под ним код, который встанет в бланк по нажатию. Так же подписаны поля другого получателя и данные, которые добавляют дополнения.
Разделы настроек поиска приведены к общему виду панели: поля важности выстроены сеткой с подписью сверху, а кнопки «Добавить» и «Очистить» переехали в шапку раздела — раньше они стояли в строке с пояснением и читались как часть текста.
В бланк можно подставить способ доставки и оплаты
В печатных формах появились номер и код способа доставки и оплаты: .id, .code, .id, .code. По ним в бланке пишутся условия — например, печатать банковские реквизиты только тогда, когда покупатель выбрал оплату по счёту. Раньше проверять было не по чему, кроме названия способа, а название вы переименуете или переведёте — и условие тихо перестанет срабатывать.
В подсказке под редактором бланка заодно появились внутренний номер заказа, его состояние, дата создания и название документа. Они и раньше подставлялись, но узнать о них было неоткуда.
Тёмное оформление панели починено
В тёмном оформлении часть элементов оставалась светлой: заметнее всего это было в редакторе печатных форм, где список подстановок для бланка выглядел белыми плашками без текста. Причина была общей для всей панели, поэтому исправление задело её целиком — списки, таблицы, дерево категорий, редактор оформления и настройки теперь выдержаны в одном тоне.
Другой получатель виден в заказе
Если заказ забирает не тот, кто его сделал, это теперь видно сразу: в карточке заказа появился выделенный блок «Другой получатель» с его фамилией, телефоном и остальными полями, которые вы спрашиваете на оформлении. Раньше на рабочем столе получателя не было видно вовсе — менеджер вписывал его в правке, возвращался в карточку и видел только заказчика.
Из блока есть ссылка «Изменить»: она открывает правку заказа сразу на полях получателя.
Файлы показываются списком
Раздел «Файлы» открывается списком: название, размер и дата видны сразу, а нужная строка находится быстрее, чем в сетке картинок. Показ плитками с миниатюрами остался — он переключается кнопкой рядом с поиском, и магазин запоминает ваш выбор.
Раздел с вашими файлами
В панели управления появился экран для ваших собственных файлов: прайсов, инструкций, сертификатов и картинок для описаний. Файлы лежат по папкам, загружаются перетаскиванием, и на каждый из них есть ссылка, которую можно вставить в описание товара или отправить покупателю.
Сам раздел включает дополнение «Файловый менеджер» — поставьте его из каталога дополнений.
«Что нового» стало читаемым
Заметки к выпуску показывались в разделе «Инсталлер → Обновления» вместе со служебными знаками разметки: перед каждым заголовком стояли решётки, а текст шёл сплошным куском. Теперь заголовки, абзацы и списки выводятся как положено, и по описанию видно, ради чего выходила версия.
Документы печатаются от нужной компании
Реквизиты продавца теперь целиком берутся из профиля, который вы выбрали. Пустое поле профиля больше не добирается из основных настроек магазина: раньше счёт второй компании уходил покупателю с телефоном и адресом первой, и заметить это можно было только из его вопроса. То, чем магазин пользовался через подстановку, перенесено в основной профиль — заполнять заново ничего не нужно.
У профиля появилось своё название магазина: под ним компания известна покупателю. Логотип, подпись и печать снова загружаются файлом — раньше поле принимало только ссылку, хотя подпись под ним предлагала перетащить картинку.
Бланк сам знает, от кого печатается
Поставьте в начале бланка {profile id=2} — и он будет печататься от этой компании. Так «Счёт от ФОП» и «Счёт от ТОВ» становятся разными бланками, и выбирать компанию при каждой печати не нужно, а в письме со счётом выбирать и некому. Номера компаний подсказывает сам редактор.
Язык и печать прямо на странице документа
Над документом появилась панель: языки, на которых бланк заполнен, кнопка печати и кнопка «Скачать PDF». Раньше документ открывался только на языке заказа, и счёт зарубежному покупателю приходилось переписывать руками. На бумагу панель не идёт.
Файл PDF теперь сохраняется под понятным именем: раньше он ложился в загрузки набором случайных букв и вовсе без расширения.
Другого получателя вы описываете сами
Что спрашивать у того, кому вручить заказ, задаёте вы — во вкладке «Оформление заказа» рядом с полями покупателя. Раньше получателя описывали два поля, зашитых в магазин: имя и телефон. Теперь можно добавить фамилию отдельной строкой (её просит перевозчик), отчество, почту для уведомления о вручении — что нужно вашему магазину. Телефон стоит всегда: по нему звонит курьер.
Заказ забирает компания — отметьте у нужных полей «только для компании», и покупатель увидит их, лишь поставив галочку на чекауте. В накладной Новой Почты такой заказ оформляется на организацию по коду ЄДРПОУ, а не на частное лицо.
Получатель печатается в счёте и накладной отдельным блоком; в своём бланке он доступен как $recipient, и его наличие можно проверить условием.
Редактор печатных форм
Предпросмотр документа переехал в выезжающую панель — редактору досталась вся ширина экрана, а бумага перестала показываться обрезком. В подсказке «что можно подставить» не хватало полутора десятков значений, которые в документ уходят, — включая те, что уже стояли в заводских бланках.
Документы заказа файлом и свой значок у каждого дополнения
Любой печатный документ заказа теперь можно не только распечатать, но и скачать файлом PDF — из карточки заказа и из списка бланков, в том числе сразу по нескольким заказам. Кнопки дополнений в заказе стали умнее: дополнение может показывать свою кнопку только на тех заказах, где она уместна, — например, при определённых способах оплаты.
В разделе «Плагины» и в списке установленного у каждого дополнения появился свой значок вместо одинаковых коробок: нужное дополнение находится взглядом, а не чтением всего списка.
Мастер первой настройки магазина
Свежий магазин встречает вас мастером: язык, валюта, название, страна и часовой пояс — и можно начинать работу. Тот же мастер открывается после сброса магазина, ведь сброшенная копия ничем не отличается от только что поставленной.
На последнем шаге магазин предлагает заполнить каталог демо-товарами: 194 товара с фотографиями, категориями и характеристиками пяти тематик сразу. Так видно, как выглядят каталог, карточка товара и корзина, ещё до того, как вы заведёте свой первый товар. Позже эти товары удаляются одной кнопкой или заменяются вашими.
Установленное дополнение работает сразу
Раньше дополнение, установленное в магазине, могло открыться пустым разделом: магазин продолжал отвечать по прежнему списку адресов, и все запросы нового раздела заканчивались ошибкой «страница не найдена». Выглядело это как сломанное дополнение, хотя установлено было верно. Теперь магазин забывает прежние списки сразу после установки.
Цены стали одинаковыми во всех местах магазина
Старая зачёркнутая цена, которую вы задаёте у артикула, теперь доходит до корзины. Раньше покупатель видел скидку в каталоге, а в корзине товар выглядел так, будто скидки нет. Цена считается одним общим правилом в списке товаров, в карточке, в корзине и в документах, поэтому суммы больше не могут разойтись между экранами.
Единица продажи пишется словом: покупатель видит «шт», «кг» и «м», а не служебный код. Дополнения теперь могут показывать покупателю свою цену — оптовую для оптовиков, свою для постоянных, — и магазин возьмёт с него ровно ту сумму, которую показал.
Переезд с других платформ
Раздел, у которого собственные товары лежат в подразделах, больше не открывается пустым: настройка «показывать товары подразделов» переносится вместе с каталогом. Единицы обычных числовых характеристик тоже переезжают — раньше «10 таблеток» и «гарантия 12 мес.» приезжали голым числом.
Обновление не роняет магазин из-за старого дополнения
Дополнение перевозчика, выпущенное до появления выключателя окна накладной, переставало подходить обновлённому ядру, и сайт отвечал ошибкой целиком — вместе с витриной и админкой. Выключатель стал необязательным: дополнение, которое о нём не знает, работает как раньше. Обновляться можно в любом порядке.
У ошибки появился код обращения
Страница ошибки больше не показывает голое «500». На ней стоит код обращения, и он же попадает в журнал магазина — назовите его тому, кто ведёт магазин, и запись найдётся поиском. Технических подробностей посетителю больше не видно.
Окно проверки накладной можно выключить
Магазину, где отправляют однотипные посылки, лишнее окно только мешает: места и габариты и так заданы в самом заказе. В настройках дополнения перевозчика появился переключатель — при выключенном окне кнопка выпускает накладную сразу.
Отделение и город доезжают до накладной
Данные точки, которую покупатель выбрал при оформлении, теперь передаются перевозчику вместе с её названием, а не одним кодом.
Накладную видно до того, как она уйдёт перевозчику
Магазин больше не выпускает накладную одним нажатием. Кнопка открывает окно, где видно всё, что уедет перевозчику: отправитель, получатель, куда везём, места, вес, габариты и оплата. Там же показаны дата доставки и её стоимость, и они пересчитываются, пока вы правите поля. Накладная уходит только по кнопке в этом окне.
Параметры отправления живут в заказе
Рядом с кнопкой выпуска появились количество мест, габариты, общий вес и поддон. Их вводит тот, кто пакует; они сохраняются в заказе, подставляются в окно и не пропадают, если накладную удалить и выписать заново.
Накладная знает, сколько взять с получателя
Если покупатель платит при получении, магазин передаёт перевозчику остаток суммы заказа наложенным платежом. Раньше в накладную уходил ноль, и посылку отдавали без денег. Частичная предоплата учитывается: с получателя возьмут только то, что осталось доплатить.
В заказе видно, где посылка
Состояние отправления магазин запоминает и показывает в карточке заказа вместе со временем последней проверки. Заказ, оформленный на компанию, уходит перевозчику как отправление юридическому лицу, а если посылку забирает другой человек, накладная оформляется на него. В настройках дополнений появились таблицы сопоставления: слева состояния стороннего сервиса, справа ваши статусы.
Выбранные заказы видно всегда
В окне «На несколько заказов» отметки переживают листание и смену фильтра — так и собирают пачку. Но стоило сменить статус, и отмеченные заказы уходили с экрана: печаталось больше, чем было видно.
Теперь выбранные заказы показаны строкой над списком. Каждый убирается нажатием, рядом — «Снять все».
Выбор заказов для дополнений
Окно «На несколько заказов», которым магазин печатает бланки пачкой, теперь могут открывать и дополнения. Кнопка дополнения в заказе спрашивает, по каким заказам работать: тот заказ, из которого её нажали, отмечен сразу, к нему добавляются остальные. Такие кнопки появились и в шапке списка заказов, рядом с печатью бланков.
Первым этим пользуется дополнение «Ценники и этикетки»: наклейки на дневную отгрузку печатаются одной пачкой. В выборе видны только те заказы, которые сотруднику доступны.
Штрихкод товара и основа для печати этикеток
У каждого варианта товара появилось поле «Штрихкод» — раньше код с упаковки хранить было негде. По нему товар находится поиском наравне с артикулом: достаточно поднести сканер.
В магазин заложена основа для печати ярлыков и этикеток: каталог и карточка товара теперь умеют показывать кнопки дополнений. Сама печать появляется вместе с дополнением «Ценники и этикетки» — оно устанавливается отдельно из маркетплейса.
Вариант товара подписан так, как его назвал магазин
Если у товара несколько артикулов без опций покупки, переключатель вариантов теперь подписан их названиями («чёрный», «белый») — так, как их назвал владелец магазина. Раньше при заведённой числовой характеристике артикула подписи молча заменялись на её значения («275 г», «290 г»). Характеристика подставляется только там, где названий у артикулов нет.
Характеристики артикула и выбор варианта в карточке
Характеристику теперь можно задать не только товару, но и каждому артикулу — число, текст, дату или «да/нет». Раньше флаг «задать значения для артикулов» работал только для характеристик со списком значений: числовую с ним магазин сохранял, но задать её артикулу было негде.
Товар с несколькими артикулами, которые не различаются опциями покупки, теперь даёт покупателю выбор: переключатель собирается по числовой характеристике артикула («10 таблеток» / «30 таблеток»), а если её нет — по названиям артикулов. Раньше выбора не было вовсе и товар всегда продавался основным артикулом. Собственные характеристики артикула видны в карточке и меняются вместе с выбранным вариантом.
Баллы видны там, где на них смотрят
В карточке заказа появилась строка «Оплачено баллами» — раньше менеджер видел итог и не понимал, из чего он сложился. В карточке покупателя теперь есть счёт: остаток, история движений со ссылками на заказы и сроками сгорания, а также начисление и списание вручную — за задержку, за отзыв, в качестве извинения. Каждое такое движение подписано сотрудником.
Оформление заказа
Набранная покупателем сумма баллов сразу пересчитывает заказ, а не только кнопка «Все». Обе правки — из живой проверки: поле принимало число, а сумма оставалась прежней.
Бонусные баллы покупателей
У покупателя появился бонусный счёт: он видит остаток и историю в кабинете и оплачивает баллами часть заказа прямо в оформлении. Списанное показано отдельной строкой в итогах, а отменённый заказ возвращает баллы обратно.
Сколько начислять и сколько разрешать тратить — задаёт дополнение «Бонусы и лояльность». Магазин же следит за тем, чтобы баллами нельзя было заплатить больше, чем их есть, и чтобы сумма заказа сходилась до копейки.
Мелочи
Журнал заказа больше не подписывает сотрудником действие покупателя.
Уведомления в браузере и магазин на телефоне
Магазин получил бесплатный канал связи: покупатель один раз разрешает уведомления и узнаёт о заказе, поступлении товара и скидке даже с закрытым сайтом. Уведомления встают рядом с почтой и SMS — те же события, те же тексты, тот же журнал — и ими же можно сделать рассылку.
Тем же дополнением витрина становится приложением: покупатель ставит магазин на главный экран телефона.
Рассылка больше не врёт об успехе
Рассылка, у которой канал недоступен, честно останавливается с объяснением. Раньше она помечалась отправленной, не отправив ни одного сообщения. Установка дополнения теперь сама перезапускает обработчик задач — новый канал работает сразу, а не после перезапуска сервера.
Помощник отвечает на частые вопросы
Вы задаёте слова покупателя и готовый ответ — магазин отвечает сам, показывает подходящие товары или зовёт менеджера. В переписке видно, что отвечал не человек, поэтому менеджер не повторяет одно и то же.
Заказ прямо из переписки
Покупатель перечисляет коды товаров — магазин узнаёт их с количествами и предлагает положить всё сразу, а менеджеру открывает форму заказа с готовым составом.
Видно, что покупатель уже выбрал
В карточке собеседника показано содержимое его корзины — вместе с самим вопросом, а не после него. Половина вопросов в чате именно о том, что человек уже положил.
Видно, с кем говоришь
Вместе с вопросом приходит карточка собеседника: узнанный покупатель — с телефоном и покупками, гость — со страницей, устройством и тем, откуда пришёл. Отвечать можно обычным сообщением, «ответить» больше не требуется.
Вопрос с сайта приходит в Telegram
Сообщение покупателя из чата на сайте дублируется отвечающему в Telegram, а его ответ возвращается покупателю. Отвечать можно с телефона, не заходя в магазин.
Разделы админки стали одинаковыми
Шапка раздела, кнопки, панели и вкладки теперь выглядят и работают одинаково везде. Раньше каждый экран верстался отдельно, и разделы понемногу разъезжались между собой.
Разделы дополнений — «Заявки на звонок», «Уведомления о поступлении», «Короткие ссылки» — приведены к тому же виду: содержимое лежит в карточке раздела, отбор по состоянию переехал в левую панель со счётчиками.
Поиск товаров в админке ищет как на витрине
Раньше подбор товара в заказе искал по-своему — строго по совпадению названия. Менеджер не находил того, что покупатель на витрине находил.
Теперь во всех местах, где выбирают товар — состав заказа, аксессуары, подборки, подарки, скидки, акции, рассылки — работает тот же поиск и те же настройки, что у покупателя: синонимы, неправильная раскладка, латиница и кириллица, порядок по важности. В подсказках появились фотографии товара. Точный артикул находится всегда, даже если артикулы убраны из поиска витрины.
Правка заказа переписана
- У правки появился свой адрес: ссылку можно дать коллеге, «назад» возвращает к просмотру.
- Из рабочего стола «Редактировать» открывает правку сразу — раньше приходилось нажимать кнопку второй раз уже в карточке.
- Слева покупатель, справа состав заказа, под ним доставка и оплата.
- Позиция занимает одну строку: количество, цена и сумма справа.
- Способ доставки выбирается списком, поля перевозчика подгружаются после выбора.
Мелочи, которые заметны
- Поля выбора больше не стоят пустыми без подсказки — по всей админке.
- У поля «Название магазина» появилось пояснение, где покупатель его увидит.
- Подсказка к имени списка товаров написана человеческим языком.
Повтор заказа
Менеджер открывает новый заказ с готовым составом прежнего — цены и наличие проверяются заново.
Подарки к заказу
Магазин умеет отдавать товар подарком: его цена не пересчитывается скидками и остаётся нулевой до самого оформления.
Товары в заказе — по складу
Позиции заказа сортируются так, как удобно собирать: по складу.
Уведомление на любой статус заказа
Письмо или сообщение покупателю можно привязать к любому статусу, включая ваши собственные.
Колонки товаров в вашем порядке
Порядок колонок в таблице товаров остаётся таким, каким вы его задали.
Заказ помнит нужные вам поля покупателя
Поля, которые вы настроили в оформлении, сохраняются в заказе и показываются менеджеру.
Установка и сброс не оставляют магазин без витрины
После установки и после сброса магазин остаётся рабочим: витрина, тема и настройки на месте.
Один покупатель — одна карточка. Телефон везде хранится в международном виде, поэтому «0671234567» и «+380671234567» больше не считаются разными людьми, а в поле телефона нельзя оставить что попало. Гостю с номером, на который уже есть личный кабинет, магазин предлагает войти вместо того, чтобы завести ещё одну карточку. Регистрация и вход через соцсеть подхватывают карточку человека, который раньше покупал гостем, а правка карточки в админке переносит телефон и почту в его кабинет. Накопленные дубли разбираются кнопкой «Найти дубли» в контактах: заказы, переписка и значения полей переезжают в выбранную карточку.
Названия статусов заказа теперь переводятся на языки магазина. Покупатель видит статус в личном кабинете и в письмах на своём языке, а названия для каждого языка задаются в разделе «Локализация → Статусы заказов». Существующие названия сохраняются как основной язык магазина.
Печать сразу на несколько заказов
Выделили заказы на рабочем столе — и печатаете накладные или бланки пачкой, а не по одному.
Акции со сроками снова включаются и выключаются сами: задача, которая за это отвечает, падала при каждом запуске, и закончившаяся акция продолжала действовать.
Письмо о восстановлении пароля переехало в раздел «Уведомления» — его текст, язык и канал теперь настраиваются как у остальных писем покупателю.
В настройках канала «E-mail» появился переключатель «Не проверять сертификат сервера»: он нужен, если почтовый сервер ваш собственный и сертификат выписан им самим.
Проверка почты в диагностике смотрит на настройки магазина, а не на файл конфигурации, и показывает ваш почтовый сервер.
Исправлена отправка проверочного письма из настроек канала: адрес получателя терялся при сохранении.
Ссылка на магазин выглядит опрятно
У раздела своя картинка для соцсетей, у страницы — своё описание: ссылка, которой поделились, показывает то, что нужно.
Оформление магазина под себя
Значок вкладки загружается прямо в настройках, а не вписывается адресом. Меню админки собирает владелец: свой состав пунктов, раздельные меню магазина и статей, верхнее меню в одну строку.
Исправлено: ссылка на заказ в личном кабинете покупателя вела на пустую страницу. Тема «Промо»: выровнено оформление — единый вид кнопок, одинаковая высота карточек товара, на телефоне ленты товаров листаются и видно, что их можно листать, заработала кнопка «Каталог» в нижней панели.
Реквизиты продавца стали профилями: если витрины торгуют от разных юрлиц, каждая печатает документы со своими данными, а при печати можно выбрать, от чьего имени выставить счёт. Живут они теперь во вкладке «Реквизиты» раздела «Печатные формы»; заполненное раньше переезжает само. Номер заказа: в магазине хранится сам номер, а приставка вроде «#100» добавляется при показе — поэтому перенесённые заказы тоже с ней, а формат можно поменять в любой момент. После переезда новые заказы продолжают нумерацию старого магазина. Счётчик у пункта «Заказы» считает те статусы, которые вы выберете в настройках заказов.
Исправлен перенос категорий: в прошлой версии они не переносились вовсе. Проверка связи с базой старого магазина больше не путает недоступную базу с чужой — причина отказа приходит от самого сервера базы и остаётся на экране. Значения характеристик и названия категорий и товаров приезжают заполненными на всех языках магазина, даже если старый магазин перевёл не всё. В рабочем столе заказов появились печатные формы и кнопки дополнений — раньше они были только в полной карточке заказа.
Переезд с другой платформы больше не зависит от планировщика: перенос идёт из окна магазина, порция за порцией, и две порции больше не наступают друг другу на пятки — от этого раньше терялись отдельные товары. Значения характеристик приезжают заполненными на всех языках магазина, даже если старый магазин перевёл только названия. Заказ теперь можно напечатать: счёт на оплату и расходная накладная, бланки правятся в разделе «Печатные формы». Дополнения научились добавлять свои кнопки и блоки прямо в карточку заказа.
Заказ теперь можно напечатать: счёт на оплату и расходная накладная. Бланки правятся под вашу бухгалтерию в разделе «Настройки → Печатные формы» — с предпросмотром на настоящем заказе и возвратом к заводскому виду. Реквизиты продавца задаются в «Настройки → Реквизиты». Связывание справочников при переезде стало понятнее: блоки свёрнуты, видно, что с чем свяжется, есть поиск и связывание совпадающих названий одним нажатием. Типы товаров в характеристике отмечаются списком.
Раздел «Инсталлер»: магазин дополнений и тем, всё установленное, обновления и установка из файла — теперь в одном месте. Обновление начинается сразу по кнопке и больше не ждёт расписания. Перед обновлением видно, готов ли к нему сервер, что из установленного может перестать работать и есть ли свежая резервная копия. Настройки установленных плагинов переехали в свой раздел «Плагины».
Обновление начинается сразу по кнопке, а не по расписанию, и показывает честный ход установки. Названия статусов старого магазина при переезде.
Две темы оформления со светлым и тёмным видом. Варианты покупки прямо в каталоге: покупатель выбирает цвет или объём памяти на карточке, меняются фото, цена и наличие. Доп-услуги товара доходят до корзины. Раздел «Акции»: страница акции со сроком и скидкой на подборку. Темы ставятся из маркетплейса. Исправлен переезд с Webasyst напрямую из базы.
Перенос заказов больше не останавливается на десятитысячном и не выдаёт себя за завершённый.
Старый магазин на части номеров отвечает неверно: на «заказы после 10000» отдаёт заказы с самого начала, а число записей выдумывает. Перенос этому верил, дальше пройти не мог и объявлял себя готовым — доезжало около 15% заказов. Теперь заказы забираются по счёту записей, каждая порция сверяется, а при неудаче перенос останавливается с причиной.
Названия вариантов покупки теперь переводятся. Раньше у товара, категории и характеристики перевод был, а у варианта («40 Вт», «Синій», «XL») — нет, и на магазине с несколькими языками карточка оставалась наполовину непереведённой.
Итоги покупок магазин досчитывает сам. Если очередь задач останавливалась, раздел «Покупатели» мог показать нули у всех — теперь недосчитанное чинится без вашего участия.
Резервные копии базы данных работают на хостингах, которые запрещают запуск вспомогательных программ. Раньше на таких копия не снималась и не восстанавливалась вовсе.
Диагностика показывает ограничения вашего хостинга и объясняет, что каждое из них меняет для магазина, — до того, как что-то сломается.
Кнопка «Открыть доступ к фотографиям» объясняет, что делать, вместо технической ошибки.
Перенос магазина с другой платформы, переданный серверу, больше не останавливается. Он не делал ни одного шага: счётчик замирал, а перенос числился идущим.
Перенос покупателей идёт заметно быстрее. Поиск уже заведённых людей перебирал всю базу контактов на каждого человека, и с каждой тысячей перенос замедлялся.
Кнопка «Остановить» у переноса теперь работает: раньше он сам продолжался через три минуты. А перенос, вставший по настоящей причине, больше не поднимается бесконечно — он останавливается и показывает причину.
Резервные копии базы данных работают на хостингах, которые запрещают запуск вспомогательных программ. Раньше на таких хостингах копия не снималась и не восстанавливалась вовсе, а владелец видел техническую ошибку.
Диагностика показывает ограничения вашего хостинга и объясняет, что каждое из них меняет для магазина, — до того, как что-то сломается, а не после.
Очередь задач больше не отчитывается о работе, которой не делала: письма покупателям, выгрузки и обновления доходят до конца. В режиме обслуживания задачи тоже выполняются — раньше обновление, включившее этот режим, не могло завершиться.
Кнопка «Открыть доступ к фотографиям» объясняет, что делать, вместо технической ошибки.
Очередь задач теперь разбирается и на хостингах, где запрещены функции pcntl: раньше её обработчик падал, и не уходили письма, не применялись обновления, стоял фоновый перенос.
Расписание теперь работает на хостингах, где запрещены proc_open и pcntl: раньше из-за них не выполнялась НИ ОДНА задача — не уходили письма, не разбиралась очередь, стоял перенос, а cron рапортовал об успехе.
Диагностика больше не говорит «планировщик не запускается» при работающем cron. Фоновый перенос сам продолжается, если цепочка оборвалась, и счётчик на экране больше не замирает.
Главное: планировщик падал на хостингах, где запрещены функции pcntl — из-за этого не работали ни очередь, ни фоновый перенос, хотя cron отрабатывал. Незаконченный перенос теперь открывается сам после перезагрузки страницы. Перенесённые покупатели видны в разделе сразу, не дожидаясь заказов.
Исправлено: один оборванный запуск задачи глушил расписание на сутки, и диагностика говорила «планировщик не запускается» при работающем cron. Добавлена кнопка «Снять замки планировщика».
Обновление теперь рассказывает, что делает: «в очереди», «загружаем пакет», «проверяем подпись», «заменяем файлы». Все подписи и описание обновления приходят на языке админки.
Перенос магазина теперь идёт на сервере: вкладку можно закрыть. Продолжение продолжает с места остановки, а не начинает заново. После переезда пересчитываются итоги покупок.
В карточке покупателя появились покупки: итоги и история заказов. Категории покупателей пересчитываются ночью — условие «покупал за последние N дней» теперь срабатывает само.
Раздел «Покупатели»: шапка встала вровень с остальными разделами, у числовых полей появились подсказки.
Режим обслуживания: сотрудник теперь видит полосу «магазин закрыт», а страницы, открытые сотрудником, больше не попадают в общий кеш витрины. В архив добавлена инструкция по настройке сервера.
Появился раздел «Покупатели»: кто покупает, сколько принёс, история заказов, категории покупателей со своими названиями и автоназначением по покупкам. Фотографии больше не нарезаются все сразу при загрузке — перенос ускорился в сотни раз. Мастер установки открывает доступ к фотографиям сам и показывает, что нужно настроить на сервере.
Скидка в корзине теперь объяснена: прежняя цена зачёркнута, рядом название акции, в итогах — «Ваша выгода». Акция на категорию применяется сразу при сохранении, а не через минуту. Переключатель языков остаётся на том же домене. Один знак валюты на всём экране.
Названия и описания плагинов теперь на языке админки — и у установленных, и в списке доступных к установке. Ссылка на скачивание обновления живёт сутки вместо получаса.
Появилась кнопка «Сбросить магазин»: возвращает копию к состоянию после установки, сохраняя плагины, лицензию и сотрудников. Витрина и язык интерфейса берутся из того, что указали при установке. Перенос с другой платформы больше не спотыкается на длинных ключевых словах, не замирает на фотографиях, а о непрошедших записях сообщает понятным текстом.
Отозванная лицензия теперь распознаётся магазином, а не остаётся активной навсегда. В диагностике видно, работает ли планировщик и когда он отработал. Маркетплейс разбит по категориям целиком. Мастер установки задаёт языком магазина тот язык, на котором его проходили.
Фоновые задачи наконец выполняются: письма покупателям, выгрузки и обновления больше не копятся молча. Неактивированная копия не получает платные разделы. Переезд с другой платформы работает без настройки сервера и показывает ход работы.
Установка на чистом сервере проверена целиком: исправлен посев данных на нескольких языках, мастер больше не закрывается на шаге администратора, копия ставится в рабочем режиме, а не в отладочном.
Установка в базу, где остались таблицы от прошлой попытки, объясняется словами, а не ошибкой SQL, и базу можно очистить прямо из мастера. Исправлено имя индекса, из-за которого установка обрывалась посреди миграций. В мастере появился фирменный знак.
Установка на чистом сервере доводится до конца: мастер больше не спотыкается на переходе к настроенной базе. Сам мастер теперь на трёх языках — открывается на украинском, переключается на русский и английский.
Первый релиз CartiX: каталог, заказы, доставка и оплата, админка, витрина.