Статті та новини
Знижки на модулі та шаблони у березні

Актуальні знижки на модулі оплати, вивантаження в Яндекс, модулі від Serbulenko та opencart-cms.ru, шаблон Юнішоп2 та фільтр GigantFilter.

 
 
 
 
 
Найбільш продавані у лютому 2026 року шаблони та доповнення

Найбільш продавані у лютому 2026 року шаблони та доповнення: Komplekt-Expert, Telegram сповіщення, IMDBOptimizer (OC 3) - Оптимізація бази даних, #FX Sitemap - Надшвидка карта сайту, шаблон Lightshop.

 
 
 
 
 
Добірка нових модулів для OpenCart за лютий 2026

Новинки за лютий 2026 року: Квіз для OpenCart, Redirect & Loop Monitor, Адмін-панель на сайті, Колекція брендів.

 
 
 
 
 
ЛайвСтор на Бігет
26 февраля 2026
ЛайвСтор на Бігет

Наша збірка з'явилася у швидкій установці CMS хостингу beget

 
 
 
 
 

Як використовувати Emoji (емодзі) в CMS Opencart?

Emoji в OpenCart: кодування MySQL і редагування mysqli.php для правильного зберігання
Як використовувати Emoji (емодзі) в CMS Opencart?

Якщо ви намагаєтеся зберегти емодзі в OpenCart (наприклад, в описі товару, огляді, категорії чи навіть у полях SEO), часто трапляється одне з наступного: символи перетворюються на ????, не зберігаються взагалі або викликають помилку запису в базу даних. Майже завжди причина та сама – база даних і/або підключення до MySQL використовує кодування utf8 (насправді utf8mb3), яке не підтримує 4-байтові символи.

Емодзі — це 4-байтові символи, тому, щоб вони правильно працювали в OpenCart, потрібно перейти на utf8mb4.

Чому стандартний utf8 у MySQL не підходить

  • utf8 inMySQLє не повною UTF-8, а її 3-байтовою версією (utf8mb3).
  • Будь-які символи, які вимагають 4 байти (емодзі, деякі ієрогліфи, рідкісні символи), не зберігаються в цьому кодуванні.
  • MySQL замінює їх на ? або відмовляє в записі.
  • Єдиним правильним рішенням є використання utf8mb4.

Де OpenCart насправді використовує смайли

На практиці емодзі найчастіше використовуються не тільки в текстах, але і в елементах маркетингу:

  • Назва та опис продукту
  • Опис і назва категорії
  • Відгуки та коментарі
  • Поля SEO: назва, опис
  • Назви статей, блогів, інформаційних сторінок
  • Тексти листів (розсилок, повідомлень)

Тому важливо перекодувати саме ті таблиці, де насправді зберігаються такі дані.

План дій

  1. Зробіть резервну копію бази даних.
  2. Перетворіть базу даних і таблиці на utf8mb4.
  3. Виправте з’єднання OpenCart із MySQL (mysqli.php).
  4. Перевірте збереження та відображення даних.

Крок 1. Резервне копіювання бази даних

Перед будь-якими змінами обов’язково зробіть скид бази даних:

<код>mysqldump -u КОРИСТУВАЧ -p ІМ'Я_БД > backup.sql

Для великих баз даних рекомендується негайно стискати:

<код>mysqldump -u КОРИСТУВАЧ -p ІМ'Я_БД | gzip> backup.sql.gz

Крок 2. Перетворення бази даних і таблиць на utf8mb4

2.1. Базове кодування за замовчуванням

ALTER DATABASE `DB_NAME`
  НАБІР СИМВОЛІВ utf8mb4
  COLLATE utf8mb4_unicode_ci;

Цевстановлює стандартне кодування, але не завжди автоматично перекодує існуючі таблиці.

2.2. Перекодування таблиць

Основні таблиці OpenCart, де найчастіше потрібні емодзі:

  • oc_product, oc_product_description
  • oc_category, oc_category_description
  • oc_review
  • oc_information, oc_information_description

Приклад команди:

ALTER TABLE oc_product_description
  ПЕРЕТВОРЕННЯ НА НАБІР СИМВОЛІВutf8mb4
  COLLATE utf8mb4_unicode_ci;

Повторіть для всіх необхідних таблиць.

2.3. Перевірка стовпців

ПОКАЗАТИ ПОВНІ СТОВПЦІ З oc_product_description;

Якщо окремі поля залишаються в utf8, їх можна змінювати пункт за пунктом:

ALTER TABLE oc_product_description
  ЗМІНИТИ ДОВГИЙ ТЕКСТ `опису`
  НАБІР СИМВОЛІВ utf8mb4
  COLLATE utf8mb4_unicode_ci;

Крок 3. Виправлення підключення MySQL в OpenCart

Навіть якщо кодування таблиці правильне, емодзі не буде збережено, якщо підключення до MySQL встановлено в utf8.

Відкрийте файл:

system/library/db/mysqli.php

Знайдіть рядок:

$this->connection->set_charset("utf8");

І замініть його на:

$this->connection->set_charset("utf8mb4");

Якщо проект використовує інший драйвер (mpdo, mysql), перевірте те саме налаштування там.

Крок 4. Перевірка результату

  1. Додайте емодзі до опису продукту, категорії чи огляду.
  2. Збережіть свої дані.
  3. Перевірте вміст таблиці безпосередньо вбаза даних.
  4. Переконайтеся, що дані правильно відображаються на сайті.

Приклад емодзі для перевірки

Щоб швидко перевірити, чи кодування utf8mb4 працює правильно, використовуйте емодзі, які гарантовано складаються з 4-байтових символів.

Скопіюйте та вставте наведений нижче текст у будь-яке текстове поле OpenCart:

Тест Emoji: 😀 🚀 🔥 👍 💡 ❤️ ⭐ 🛒

Якщо після збереження емодзі правильно зберігаються в базі даних і відображаються на вітрині сайту, то кодування та підключення до MySQL налаштовано правильно.

Якщо символи перетворюються на знаки питання або зникають, це означає, що десь в іншому місціutf8 використовується замість utf8mb4.

Типові проблеми

Емодзі зберігаються як знаки запитання

  • З’єднання не виправлено (set_charset усе ще utf8).
  • Не всі таблиці або поля були перекодовані.
  • Дані імпортовано зі старого дампа з неправильним кодуванням.

У базі все правильно, але на веб-сайті відображається некоректно

  • Перевірте <meta charset="UTF-8"> у шаблоні.
  • Перевірте, чи є фільтри, які ріжуть абоконвертувати текст.
  • Очистіть кеш OpenCart і шаблонів.

Після цього емодзі буде стабільно зберігатися і коректно відображатися у всіх частинах магазину - від опису товару до SEO полів і букв.


Рекомендуємо переглянути
Рекомендуємо прочитати


Написати новий коментар (для відповіді використовуйте посилання під потрібним коментарем)