4.6.1

Новая функциональность и улучшения

[+] REST API: Добавлена сущность ‘cart_content’ для работы с содержимым корзины.

[+] Безопасность: Улучшена защита от CSRF-атак для клиентской зоны магазина.

[+] Модули: Boxberry: Добавлен новый модуль для взаимодействия со службой доставки Boxberry.

[+] Модули: Google Analytics: Теперь в отчетах Google Аналитики отображаются реальные адреса, по которым пользователи попадали на страницу 404 (/index.php?dispatch=_no_page).

[+] Модули: RetailCRM (Бета-версия): Добавлен модуль для обмена информацией о заказах, товарах и покупателях с retailCRM.

[+] Модули: АТОЛ Онлайн: Добавлен модуль для интеграции магазина с сервисом аренды онлайн-касс “АТОЛ Онлайн” (54-ФЗ).

[+] Модули: Вариации товаров (Бета-версия): Добавлены вариации товаров. На витрине они выглядят как комбинации опций, но в панели администратора ведут себя как дочерние товары.

[+] Модули: Платежи через PayPal: Теперь при создании способов оплаты, использующих PayPal Express Checkout, можно автоматически настроить способ оплаты и зарегистрировать учетную запись PayPal из панели администратора CS-Cart.

[+] Модули: Российские способы оплаты: Добавлена возможность пересылки данных для чека в Яндекс.Кассу (54-ФЗ). Способ оплаты Yandex.Money переименован в Яндекс.Кассу.

[+] Обновление: Резервные копии: Добавлена возможность создания резервной копии базы данных через mysqldump.

[+] Хуки: В функцию ‘fn_format_price()’ добавлен pre-хук. Он позволяет изменять формат цены (валюту, саму цену и количество знаков после запятой).

[+] Хуки: Добавлен новый хук ‘set_notification_pre’; он позволяет изменять всплывающие уведомления.

[+] Центр обновлений: В интерфейсе добавлена галочка, которая позволяет пропустить резервное копирование файлов и базы данных при обновлении. Галочка появляется только при обновлении до Service Pack, и только если обновление не затрагивает базу данных.

Изменения в существующей функциональности

[*] HTML-редакторы: Редактор CKEditor был вырезан.

[*] Веб-сайт: SEO: robots.txt: Добавлена возможность редактировать robots.txt отдельно для каждой витрины.

[*] Дизайн: Оформление заказа: Способы доставки: Теперь при оформлении заказа отображаются иконки способов доставки.

[*] Магазины: При создании витрины добавлена возможность одним нажатием проставить/снять все галочки в разделе “Копировать данные из магазина”.

[*] Модули: CommerceML: Теперь модуль всегда совершает обмен по HTTP, даже если для всего сайта включен HTTPS. Это было сделано потому, что при включенном HTTPS часто не удавалось совершить обмен с 1C.

[*] Модули: YML экспорт: Вкладка “YML экспорт” была убрана со страницы создания категории; теперь эта вкладка доступна только при редактировании уже созданных категорий.

[*] Модули: YML экспорт: Добавлена выгрузка поля model, если у товара или категории выбран упрощённый тип описания товарного предложения.

[*] Модули: Поиск ближайших магазинов: Теперь по умолчанию выбраны карты от Яндекса, а не от Google.

[*] Модули: Яндекс.Доставка: Добавлен тип доставки “Курьером”.

[*] Модули: Яндекс.Доставка: Изменён порядок вкладок и места некоторых полей в форме размещения заказа Яндекс.Доставки.

[*] Модули: Яндекс.Маркет: Из модуля убрана возможность генерации YML-файла. Теперь для этого необходимо использовать модуль “YML экспорт”.

[*] Настройки: Электронная почта: SMTP: Магазины: Теперь можно задать разные настройки SMTP-сервера для каждой витрины.

[*] Управление заказами: Добавление товаров: Теперь в панели администратора можно ввести часть названия товара и выбрать товар, чтобы сразу добавить его к заказу.

[*] Управление заказами: Добавление товаров: Теперь при редактировании заказа в панели администратора у каждого товара во всплывающем окне есть кнопка “Добавить в корзину” рядом с количеством. Можно добавить товары с разных страниц, не закрывая всплывающее окно.

[*] Установка: Изменено описание в файле install.html.

[*] Хуки: Добавлена возможность повлиять на процесс применения промо-акций при расчёте содержимого корзины с помощью хука ‘calculate_cart_items’.

[*] Экспорт/Импорт: Заказы: Добавлен экспорт и импорт идентификатора менеджера заказа.

[*] Ядро: Безопасное соединение: Добавлена возможность запретить редирект с HTTP на HTTPS для определенных контроллеров, даже если включено безопасное соединение для всего сайта.

[*] {#6720} Маркетинг: Незавершенные покупки: Теперь на странице “Незавершённые покупки” отображаются номера телефонов покупателей. Если незарегистрированный покупатель ввел номер телефона при попытке оформления заказа, то этот номер тоже отобразится.

Исправления ошибок

[!] REST API: Сущность ‘orders’: Заказ мог быть размещен от лица покупателя, не относящегося к данному магазину, даже если общая база пользователей для всех магазинов была выключена. Исправлено.

[!] Модули: Яндекс.Доставка: Если на сервере использовался PHP 7.1, то при расчёте стоимости доставки возникала критическая ошибка. Исправлено.

[!] Модули: YML экспорт: При импорте товаров через модуль CommerceML сбрасывалась настройка исключения товара из экспорта в YML файл. Исправлено.

[!] Модули: СДЭК: Когда у нескольких городов было одинаковое название, то при создании отгрузки мог быть назначен неправильный город. Исправлено.

[!] Модули: YML экспорт: Если основная категория у товара была выключена или скрыта, но при этом была включена дополнительная категория, то товар всё равно выгружался с ID основной категории. Исправлено.

[!] Дизайн: Витрина: Всплывающее окно корзины: Если у товара было 7 или больше опций, то при добавлении товара в корзину всплывающее окно корзины отображалось неправильно. Исправлено.

[!] Дизайн: Категории: Если на мобильных устройствах со страницы категории добавить товар в корзину или в список отложенных товаров, то страница категории прокручивалась вверх. Исправлено.

[!] Дизайн: Редактировать контент: При редактировании содержимого “HTML блока” или “HTML блока с поддержкой Smarty” у конкретной страницы, это содержимое сохранялось для всех страниц, кроме редактируемой. Исправлено.

[!] Дизайн: Темы: Bright theme: Настройка “Включить быстрый просмотр” не влияла на то, появится ли кнопка “Просмотр” у товаров в блоке “Товары” с шаблоном “Скроллер”. Исправлено.

[!] Каталог: Когда магазин работал на PHP 7.1, а покупатель открывал страницу товара, у которого были запрещённые комбинации опций, возникала ошибка PHP 7. Исправлено.

[!] Категории: Если удалить основную категорию товара, ни одна из его дополнительных категорий не становилась основной автоматически. Исправлено.

[!] Магазины: При создании витрины не работал индикатор прогресса. Исправлено.

[!] Макеты: Блоки: Баннеры: В блоке “Баннеры” с заполнением “Новые поступления” отображалась настройка “Фильтр по категориям”, которой там не должно было быть. Исправлено.

[!] Модули: CommerceML: Если администратор был в группе, у которой не было привилегии “Обмен в формате CommerceML”, то администратор все равно видел меню “Модули → CommerceML”. Исправлено.

[!] Модули: CommerceML: Класс365: В магазин не загружались свойства товаров, если идентификатор свойства был в числовом формате. Исправлено.

[!] Модули: CommerceML: Класс365: При проверке подключения к Класс365 возникала ошибка и выгрузка не выполнялась. Исправлено.

[!] Модули: CommerceML: Комбинации опций: Если перестроить комбинации опций у товара, то поле “Код товара (external_id)” очищалось. Исправлено.

[!] Модули: CommerceML: При выгрузке заказов значение для номера телефона бралось только из контактной информации; если номер телефона был указан только в адресе доставки/плательщика, этот номер не выгружался. Исправлено.

[!] Модули: CommerceML: При загрузке цен из систем учёта в CS-Cart не работала проверка загружаемых цен. Исправлено.

[!] Модули: CommerceML: При обмене с системами учета, файлы import.xml и offers xml загружались пустыми. Исправлено.

[!] Модули: Email-маркетинг: REST API: Не работало добавление подписчика через REST API, так как у company_id всегда выставлялось значение 0. Исправлено.

[!] Модули: Email-маркетинг: Привилегии администратора не работали: любой администратор всегда мог просмотреть и отредактировать список подписчиков. Исправлено.

[!] Модули: Google reCAPTCHA: На некоторых веб-хостингах модуль работал некорректно, т.к. функция file_get_contents завершалась неудачно. Как результат, пользователи не могли пройти проверку. Исправлено.

[!] Модули: SEO: HTML-теги не удалялись из сниппета для поисковой выдачи. Исправлено.

[!] Модули: SEO: Поиск ближайших магазинов: У страницы “Расположение магазина” (index.php?dispatch=store_locator.search) не было канонической ссылки. Исправлено.

[!] Модули: Searchanise: Выполнялись дублирующие SQL-запросы. Исправлено.

[!] Модули: Unisender: Если покупатель оплатил заказ с помощью онлайн-платежа, то сообщения о смене статуса заказа ему не приходили. Исправлено.

[!] Модули: YML экспорт: Возникали предупреждения PHP при выгрузке прайс-листа с характеристиками типа “Дата”. Исправлено.

[!] Модули: YML экспорт: Если у товаров было много характеристик, долго генерировался YML-файл. Исправлено.

[!] Модули: YML экспорт: При сохранении прайс-листа могла поменяться его принадлежность к витрине, если в другой вкладке в это время была открыта панель администратора с другой выбранной витриной. Исправлено.

[!] Модули: Возврат товаров: Отсутствовала проверка прав доступа на оформление возврата заказа. Злоумышленник мог оформить возврат на заказ, не принадлежащий ему, если знал техническую информацию о покупателе и заказе. Исправлено.

[!] Модули: Защита от мошенничества: Модуль не работал с новыми учетными записями MaxMind. Исправлено; интеграция с сервисом minFraud обновлена.

[!] Модули: Обратный звонок: Не создавался заказ при нажатии на кнопку “Купить в один клик” в блоке “Новинки”. Исправлено.

[!] Модули: Ограничение доступа: Доступ к сайту мог быть получен с запрещенных IP путем передачи HTTP заголовка X-Forwarded-For. Исправлено.

[!] Модули: Отзывы и комментарии: Рейтинги товара на странице товара и на странице категории могли быть разными, так как округлялись по-разному. Исправлено.

[!] Модули: Отложенные товары: Даже при отключении модуля “Отложенные товары”, ссылка на список отложенных товаров все еще оставалась в блоке “Кабинет покупателя”. Исправлено.

[!] Модули: Платежи через PayPal: Неверно сохранялась стоимость доставки после обработки IPN. Исправлено.

[!] Модули: Поиск ближайших магазинов: Карта Google не загружалась на странице редактирования местоположения магазина, если для панели администратора был включен HTTPS. Исправлено.

[!] Модули: Поставщики: На странице со списком поставщиков в панели администратора вместо даты и времени регистрации поставщика отображалась текущая дата и время. Исправлено.

[!] Модули: Рассылки: Подписчики: Если подписчик не был подписан ни на одну из рассылок, то изменение языка подписчика в панели администратора не сохранялось. Исправлено.

[!] Модули: Российские способы оплаты: В счете на оплату неверно выводилось название налога, а все налоги отображались в одной строке. Исправлено.

[!] Модули: СДЭК: Администраторы не могли включить или выключить обсуждение в заказах со способом доставки СДЭК. Исправлено.

[!] Модули: СДЭК: Если в заказе было несколько экземпляров одного товара, но с разными выбранными опциями, то в квитанции СДЭК они отображались одной строкой, а сумма заказа в квитанции была неверной. Исправлено.

[!] Модули: СДЭК: Если вес товара был меньше 100 граммов, то этот вес неверно передавался в СДЭК при расчёте стоимости доставки. Исправлено.

[!] Модули: СДЭК: Страница “Заказы службы доставки СДЭК” открывалась долго. Исправлено.

[!] Модули: Самовывоз: Если дополнительный сбор у всех пунктов самовывоза был одинаковым, то при оформлении заказа всегда выбирался последний пункт самовывоза. Исправлено.

[!] Модули: Самовывоз: Способ доставки “Самовывоз” не отображался, если валюта “Рубли” была выключена. Исправлено.

[!] Модули: Сбербанк Онлайн, Альфа-Банк: Если для способа оплаты с процессором Sberbank Online или Alfabank был установлен дополнительный сбор, то заказ получал неправильный статус, а покупатели возвращались на страницу оформления заказа и видели ошибку. Исправлено.

[!] Модули: Хиты продаж и товары со скидкой: Расширенный поиск: При вводе значения в поле “Количество продаж” поиск не выполнялся и выводилась ошибка. Исправлено.

[!] Модули: Яндекс Доставка: Если отключить настройку “Журнал событий” у способа доставки, то в журнал событий всё равно попадали результаты запросов от Яндекс.Доставки. Исправлено.

[!] Модули: Яндекс.Доставка: Некорректно определялся пункт доставки, если существовало несколько населённых пунктов с одинаковым названием. Исправлено.

[!] Модули: Яндекс.Касса: MWS: Не работал возврат платежа для способа оплаты Яндекс.Касса. Исправлено.

[!] Модули: Яндекс.Метрика: Переключение между страницами с использованием AJAX-паджинации (например, между страницами списка товаров) не учитывалось как переход на другую страницу. Исправлено.

[!] Оформление заказа как гость: Поля профиля: Если в магазине было поле профиля из раздела “Контактная информация”, которое являлось обязательным при оформлении заказа, то гостю необходимо было ввести свой электронный адрес. Однако раньше формат электронного адреса не проверялся, и можно было ввести любое значение. Исправлено.

[!] Оформление заказа: Если покупатель при оформлении заказа как гость переходил на 3 шаг (“Выбор способа доставки”), а потом регистрировался, то при повторном переходе на страницу оформления заказа он не мог редактировать данные, введённые во 2 шаге (“Адрес доставки”). Исправлено.

[!] Оформление заказа: Поля профиля: На странице оформления заказа после ввода значения в поле профиля с типом “Дата” в адресе доставки/плательщика отображалась неверная дата. Исправлено.

[!] Оформление заказа: Уведомление о платеже от платёжной системы могло быть отправлено не на ту витрину, если настройка “Перенаправлять посетителей этого магазина в другой, где есть страны, к которым принадлежит IP посетителя” у витрины была включена. Исправлено.

[!] Оформление заказа: Яндекс.Карта: Если был настроен способ доставки, который использовал Яндекс.Карту, то покупатели при оформлении заказа могли увидеть сообщение “Script error”. Проблема возникала в браузере Firefox, когда покупатели выбирали другой пункт самовывоза или переходили на предыдущий шаг оформления заказа, а потом возвращались на шаг 3 (“Выбор способа доставки”). Исправлено.

[!] Подсказки: Ссылки на документацию вели на статьи из устаревшей Базы Знаний, а не на документацию CS-Cart. Исправлено.

[!] Пользователи: Если удалить главного администратора, новым главным администратором мог быть назначен покупатель. Исправлено.

[!] Способы доставки: DHL: Если цена доставки возвращалась не в основной валюте магазина, стоимость доставки пересчитывалась с ошибками. Исправлено.

[!] Способы доставки: Temando: При получении стоимости доставки могли возникать ошибки PHP. Исправлено.

[!] Способы оплаты: Skrill: Не работали ссылки для проверки адреса электронной почты и секретного слова. Исправлено; функциональность проверки email и секретного слова была вырезана, так как она теперь не используется.

[!] Товары: Оптовые скидки: Цены товаров могли отображатся с большим количеством знаков после запятой, чем указано в настройках валюты, и эти лишние знаки отображались как нули. Исправлено.

[!] Товары: Редактировать выбранные: Если редактировать только максимальное или минимальное количество товаров в заказе и применить значения ко всем выделенным товарам, то изменения сохранялись, но возникала ошибка PHP Notice. Исправлено.

[!] Товары: Редактировать выбранные: При массовом редактировании товаров, в цене отображалось больше знаков после запятой, чем должно было отображаться. Исправлено.

[!] Управление заказами: Когда администратор добавлял новый заказ и выбирал варианты опций товара, то выбранные варианты сбрасывались после того, как администратор выбирал покупателя, способ оплаты или способ доставки. Исправлено.

[!] Управление заказами: Опции товаров: Когда администратор пытался отредактировать заказ в браузере Chrome и изменить выбранный вариант у опции с типом “Радиогруппа”, то радиокнопки могли отобразиться так, как будто не выбран ни один из вариантов. Исправлено.

[!] Управление заказами: Счёт: При использовании нескольких витрин на счёте мог отображаться неверный логотип. Проблема возникала на любой витрине, кроме первой, но только если счёт просматривали или отправляли в режиме “Все магазины”, а у витрин были разные темы. Исправлено.

[!] Центр обновлений: 32-битные операционные системы: После обновления магазина на 32-битной операционной системе могли возникнуть проблемы с комбинациями опций и незавершёнными заказами.

[!] Ядро: Mailer: Attachments: Из имени прикрепленного файла удалялись все нелатинские символы. Исправлено.

[!] Ядро: Неверно обрабатывалось время, если до разделителя часов и минут была только одна цифра, например 8:45, а не 08:45. Исправлено.

[!] Языки: Экспорт: Если одновременно экспортировать более 10 000 значений языковых переменных, то значения у некоторых переменных в экспортированном файле заменялись на случайные значения других переменных. Исправлено.

[!] {#4892} Модули: Конструктор прайс-листов: При экспорте прайс-листа одной из витрин неправильно экспортировались данные товаров, принадлежавших другой витрине, но доступных на этой витрине. Исправлено.

[!] {#6623} Модули: Яндекс.Доставка: При оформлении заказа были тормоза, если было настроено несколько способов доставки от Яндекса. Исправлено.

[!] {#6713} Заказы: Шаблоны email-уведомлений: Если покупатель при оформлении заказа выбрал небазовую валюту, то в счёте и в уведомлениях о размещении/изменении статуса заказа использовалась неверная валюта. Исправлено.

[!] {#6725} Модули: YML экспорт: Вместо изображений комбинаций опций выгружалось основное изображение товара. Исправлено.

[!] {#6734} Способы оплаты: Срок действия кредитной карты расценивался как конфиденциальные сведения и удалялся из платежной информации. Исправлено.

[!] {#6739} Управление заказами: Если изменить статус заказа на списке заказов, то количество заказов, отображаемых на странице, изменялось на значение настройки “Количество элементов на странице”. Исправлено.

[!] {#6740} Оформление заказа: Выбор способа доставки: Лимит веса, заданный для способа доставки, неправильно влиял на доступность этого способа доставки на странице оформления заказа. Исправлено.

[!] {#6750} Модули: СДЭК: При оформлении отгрузки СДЭК сбрасывался пункт самовывоза, выбранный ранее. Исправлено.

[!] {#6753} Отчёты о продажах: Если отчёт был таблицей, у которой объектом для анализа были налоги, то вместо таблицы отображалось уведомление об ошибке. Исправлено.

[!] {#6767} Дизайн: Шаблоны email-уведомлений: Не работал импорт шаблонов почтовых уведомлений. Исправлено.

[!] {#6774} Модули: Яндекс.Маркет: Если у способа доставки не была заполнена настройка “Перенести доставку на следующий день для заказов, размещённых после”, то в CS-Cart возникала ошибка PHP Notice при добавлении товара в корзину на стороне Яндекс.Маркета. Исправлено.

[!] {#6781} Способы оплаты: ServiRed (Redsys): Платёж не обрабатывался при размещении заказа через панель администратора. Исправлено.