Специальные символы в CS-Cart

Добрый день!

Пытаемся разнообразить немного метатеги description, в частности путем внедрения специальных символов, а-ля ➔, :+1:, :phone:, :ballot_box_with_check: и т.п. Видим, что:

  1. часть символов (например, стрелочки, телефон, галочка в квадрате) отображаются,
  2. часть символов (например, большой палец вверх) при вставке отображается, после сохранения становится четырьмя вопросительными знаками “???”,
  3. часть символов (например, любые эмоджи вроде :100: или :office:) при вставке отображаются, но сохранение приводит к тому, что все поле становится пустым (т.е. до сохранения был заполненный дескрипшн, после вставки и сохранения эмоджи он стал пустым).

Версия CS-Cart старая, 4.7, но вроде не настолько уж допотопная.

Дело в самом движке cs-cart, или что-то неправильно настроено? Из того, что я вижу, кодировка MySQL UTF-8, в исходном коде сайта charset=utf-8"

1 лайк

Проверьте какая у вас стоит кодировка в базе данных.

Для работы с emoji нужна utf8mb4_bin.

Если соберетесь делать конвертацию базы, обязательно сделайте ее бекап.

3 лайка

Есть обсуждение (правда, на английском языке и про email’ы) на международном баг-трекере: https://forum.cs-cart.com/tracker/issue-6937-emoji-to-emails/?view=findpost&p=27351 Возможно, поможет.

Задача на добавление этого в ядро тоже есть, но запросов с тех пор было немного. Написал в задаче, что был ещё один запрос на эту тему.

1 лайк

Есть запрос!
Тоже не смогли в Meta description добавить эмодзи

1 лайк

Добрый день.
И от меня запрос. Я уже использую пару, тех которые сохраняются и отображаются без проблем.

2 лайка

Да было бы здорово если бы появилась возможность использовать emojji в метаданных сайта в целом (проблема не только в тайтле и дискрипте, на сайте в целом нельзя использовать эмоджи, поля очищаются при их вставке)

1 лайк

От меня тоже запрос на эмоджи

очень актуально, пожалуйста порегулируйте этот момент.

Подскажите пожалуйста как это сделать в phpmyadmin?

Разобрался как в title (Название страницы) добавлять emoji.

  1. Необходимо преобразовать таблицу БД cscart_product_descriptions в utf8mb4

SET foreign_key_checks = 0;
ALTER TABLE cscart_product_descriptions CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE cscart_category_descriptions CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET foreign_key_checks = 1;

С помощью этой команды в phpmyadmin, во вкладке SQL

  1. В файле “app/Tygh/Database/Connection.php” изменил

if (empty($params[‘names’])) {
$params[‘names’] = ‘utf8’;
}

на

if (empty($params['names'])) {
     $params['names'] = 'utf8mb4';
}

После этих не сложных манипуляций эмодзи стали сохранятся и в описании товара)))

image

Изменил) Еще нужно перевести в utf4mb4 таблицу ‘cscart_category_descriptions’

4 лайка

Размер базы не увеличился после конвертации? И по скорости работы тоже интересно

Размер не увеличился, а скорость не измерял. По ощущениям ничего не поменялось)

Очень нужны эмодзи в Description!
+1 запрос на изменение.

Вручную изменения внёс, всё работает.

1 лайк

Так как обращения на эту тему были (не только здесь), мы изучили добавление эмодзи в CS-Cart и попытались внедрить.

В процессе выплыли технические сложности:

  • часть возникла бы только у тех, кто обновляется с прошлых версий;
  • но есть и такие проблемы, которые были бы у всех.

В результате от массового внедрения в продукт пока решили отказаться. Но есть два варианта решения:

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