Jump to content
100napb

Эмодзи VS Opencart. Кодировки в Mysql и правки mysqli.php

Recommended Posts

Здравствуйте, уважаемые. Пропустим ту часть, в которой обсуждался бы вопрос откуда у Вас могут появиться всякие няшные смайлики. Скажу лишь, что лепить их направо и налево со всяких гаджетов любит каждый, в том числе, оставляя отзывы у Вас на сайте.

Spoiler

image.png.ee696010495c7ef2a3b4b69389ad1a4e.png

 

Так вот, задался вопросом, как сохранить и не исказить все эти дорогие эмоции. Потому что ОпернКарт с ними не дружит. Для себя нашел следующие решение:

  1. Прежде всего, текст со смайлами или без них хранится в БД. Для этого данные должны быть в хипстерской кодировке utf8mb4. И сама БД ее должна поддерживать. Не у всех стоят последние версии Mysql, где все это работает не просто из коробки, а по умолчанию.
  2. Что бы перевести таблицу на кодировку с эмодзи выполним ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; где table_name заменяем на нужные таблицы. Можно и всю базу так заальтерить, но я чет очканул. Мне хватило таблиц oc_review и oc_comment (привет Markimax). Обновлять версию мускуля не обязательно. Если только он настолько старый, что о такой кодировке даже не знает.
  3. В настройках коннекта к БД опенкарта так же сменим кодировку: файл /system/library/db/mysqli.php,  $this->connection->set_charset("utf8mb4");
  4. Вроде бы все... ах да, возможно, нужно менять параметры кодировки в файлах mpdo.php и mysql.php. Я менял. Может быть придется еще рестартануть службы. Под спойлером результат.

 

Может кому пригодиться.

Ну и вопрос для сведущих: можно было как-то проще\грамотнее это сделать?

Edited by 100napb
  • +1 2

Share this post


Link to post
Share on other sites

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

Вот так в истории заказов:

Spoiler

image.png.8c4805f53c32c3878b2a4d74b9b94d40.png

А вот так у получателя:

Spoiler

IMG_2385.thumb.JPG.5885e8528885eb39f2f4e0f3e90a208f.JPG

 

Edited by 100napb

Share this post


Link to post
Share on other sites
В 21.08.2018 в 16:25, 100napb сказал:
  Показать контент

image.png.ee696010495c7ef2a3b4b69389ad1a4e.png

 

Так вот, задался вопросом, как сохранить и не исказить все эти дорогие эмоции. Потому что ОпернКарт с ними не дружит. Для себя нашел следующие решение:

  1. Прежде всего, текст со смайлами или без них хранится в БД. Для этого данные должны быть в хипстерской кодировке utf8mb4. И сама БД ее должна поддерживать. Не у всех стоят последние версии Mysql, где все это работает не просто из коробки, а по умолчанию.
  2. Что бы перевести таблицу на кодировку с эмодзи выполним ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; где table_name заменяем на нужные таблицы. Можно и всю базу так заальтерить, но я чет очканул. Мне хватило таблиц oc_review и oc_comment (привет Markimax). Обновлять версию мускуля не обязательно. Если только он настолько старый, что о такой кодировке даже не знает. 
  3. В настройках коннекта к БД опенкарта так же сменим кодировку: файл /system/library/db/mysqli.php,  $this->connection->set_charset("utf8mb4");
  4. Вроде бы все... ах да, возможно, нужно менять параметры кодировки в файлах mpdo.php и mysql.php. Я менял. Может быть придется еще рестартануть службы. Под спойлером результат.

 

А у меня парадокс получился ))

На первом сайте (дефолтный шаблон стоит)  Второй и третий пункт сделал как у вас. И все ок)

А на втором (другой шаблон) пошли крякозяблики. Проторчал пол дня, что я только не менял. В итоге вернул резервные файлы. И начал по порядку. Так вот на пункте 2 закончил и все работает.

Спасибо Вам за решение со смайликами))

Share this post


Link to post
Share on other sites
Posted (edited)

Супер! То, что доктор прописал8-)

 

Emoji нельзя использовать при вставке через модификатор. Если у кого способ решения?

Edited by krluch

Share this post


Link to post
Share on other sites
В 18.07.2019 в 14:50, krluch сказал:

Супер! То, что доктор прописал

Нихрена не супер :blink:

 

сайт перестал работать, пришлось бекап восстанавливать. Проблема была в кодировке

@100napb вы не сталкивались с такой проблемой? Может есть рецепт как запустить сайт с emoji?

Share this post


Link to post
Share on other sites
34 minutes ago, krluch said:

сайт перестал работать, пришлось бекап восстанавливать. Проблема была в кодировке

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

 

43 minutes ago, krluch said:

Может есть рецепт как запустить сайт с emoji?

что Вы имеете ввиду?

у меня, например, есть проект, на котором эмодзи могут содержаться в отзывах клиентов, описаниях продуктов\статьях и в комментариях к заказам (отправяляются на почту клиентам). Исправно работает больше года по рецепту, которым делился выше.

 

Если нужна помощь, а не совет, то пишите в ЛС.

Share this post


Link to post
Share on other sites

На ocStore лучше сразу для всех таблиц

ALTER TABLE oc_review CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oc_review_article CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oc_article_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oc_blog_category_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oc_category_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oc_information_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oc_product_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

Share this post


Link to post
Share on other sites
В 21.08.2018 в 16:25, 100napb сказал:

Здравствуйте, уважаемые. Пропустим ту часть, в которой обсуждался бы вопрос откуда у Вас могут появиться всякие няшные смайлики. Скажу лишь, что лепить их направо и налево со всяких гаджетов любит каждый, в том числе, оставляя отзывы у Вас на сайте.

  Показать контент

image.png.ee696010495c7ef2a3b4b69389ad1a4e.png

 

Так вот, задался вопросом, как сохранить и не исказить все эти дорогие эмоции. Потому что ОпернКарт с ними не дружит. Для себя нашел следующие решение:

  1. Прежде всего, текст со смайлами или без них хранится в БД. Для этого данные должны быть в хипстерской кодировке utf8mb4. И сама БД ее должна поддерживать. Не у всех стоят последние версии Mysql, где все это работает не просто из коробки, а по умолчанию.
  2. Что бы перевести таблицу на кодировку с эмодзи выполним ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; где table_name заменяем на нужные таблицы. Можно и всю базу так заальтерить, но я чет очканул. Мне хватило таблиц oc_review и oc_comment (привет Markimax). Обновлять версию мускуля не обязательно. Если только он настолько старый, что о такой кодировке даже не знает.
  3. В настройках коннекта к БД опенкарта так же сменим кодировку: файл /system/library/db/mysqli.php,  $this->connection->set_charset("utf8mb4");
  4. Вроде бы все... ах да, возможно, нужно менять параметры кодировки в файлах mpdo.php и mysql.php. Я менял. Может быть придется еще рестартануть службы. Под спойлером результат.

 

Может кому пригодиться.

Ну и вопрос для сведущих: можно было как-то проще\грамотнее это сделать?

Тоже актуально.

Share this post


Link to post
Share on other sites
В 21.08.2018 в 16:25, 100napb сказал:

Ну и вопрос для сведущих: можно было как-то проще\грамотнее это сделать?

Сделали такой модуль, для редактора summernote без изменений в базе.

 

 

Share this post


Link to post
Share on other sites
19 minutes ago, smartcoder said:

Сделали такой модуль, для редактора summernote без изменений в базе.

звучит здорово.

 

Из любопытства и для большего понимания (думаю, не мне одному может быть интересно): получается, вы научили редактор саммернот в админке сохранять что-то вроде bb-кодов для эмодзи, а сами эмотиконы выводятся на страничках сайта не как текст\шрифт, а как картинки? оригинальненько.

ниже пару скринов с демо-сайта модуля

Spoiler

image.thumb.png.9e6a0af3db263b736ab9430c4f984f85.png

 

image.thumb.png.6a966c84debc057a857409429f9d8bd6.png

 

Share this post


Link to post
Share on other sites
16 минут назад, 100napb сказал:

вы научили редактор саммернот в админке сохранять что-то вроде bb-кодов для эмодзи, а сами эмотиконы выводятся на страничках сайта не как текст\шрифт, а как картинки? оригинальненько.

Да, выводятся как картинки. Поэтому никаких изменений с бд делать не нужно для этого модуля.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By smartcoder
      Emoji для Opencart 🔥😍❤️🧐👍🤔
      Добавляйте любимые смайлы Emoji в описание к товарам, категориям, статьям!
       
      Как работает модификатор?
      Данный модификатор работает с редактором Summernote, где добавляется окно вставки Emoji
       

       
      После того, как сохранили описание с Emoji, можем посмотреть как это выглядит:
       

       
       
      Где посмотреть демо?
       
      Демо админ:
      https://demo30.opencart-shop.ru/admin/index.php?route=catalog/product/edit&product_id=42
      Логин: demo
      Пароль: demo
       
      Демо фронт:
      https://demo30.opencart-shop.ru/index.php?route=product/product&product_id=42
       
      Установка:
      Установка простая, добавляются смайлы модификатором.

    • By smartcoder
      500.00 руб
      Скачать/Купить дополнение


      Emoji - смайлы в описании товаров, категорий, статей
      Emoji для Opencart 🔥😍❤️🧐👍🤔
      Добавляйте любимые смайлы Emoji в описание к товарам, категориям, статьям!
       
      Как работает модификатор?
      Данный модификатор работает с редактором Summernote, где добавляется окно вставки Emoji
       

       
      После того, как сохранили описание с Emoji, можем посмотреть как это выглядит:
       

       
       
      Где посмотреть демо?
       
      Демо админ:
      https://demo30.opencart-shop.ru/admin/index.php?route=catalog/product/edit&product_id=42
      Логин: demo
      Пароль: demo
       
      Демо фронт:
      https://demo30.opencart-shop.ru/index.php?route=product/product&product_id=42
       
      Установка:
      Установка простая, добавляются смайлы модификатором.

      Добавил smartcoder Добавлено 21.08.2019 Категория Меню, дизайн, внешний вид Системные требования Сайт разработчика https://smart-coder.ru Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore Несовместим OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет  
    • By fduw
      Как подключить mysql через unix socket?
      В инете не нашел рабочей инфы
       
      Стандартная конфа

       Так не работает
      define('DB_HOSTNAME', 'unix:/tmp/mysql.sock'); define('DB_HOSTNAME', 'localhost/tmp/mysql.sock'); define('DB_HOSTNAME', 'tmp/mysql.sock');  
    • By perebor
      Ребят привет, нужна помощь, прошу не пинаться) я пока не силен в оптимизации БД, но очень интересно было бы разобраться самому.
      На сервере где-то раз в месяц происходят скачки по нагрузке и кол-ву запросов. Последний был 27 числа, админка при этом пару раз отдавала 503 ошибку. Хостинг шлет предупреждения.
      Есть лог запросов, но все, что пока понимаю, так это то, что основную нагрузку подбрасывают запросы из мегафильтра. Собственно вопрос в том, что бы понять что это за запросы и как это дело оптимизировать, или может вообще стоит хостинг сменить. Буду благодарен если направите в правильное русло)

      сайт: nice-office.ru
      хостинг: ihc.ru
      Slow log:
       
       

    • By Tinyled
      Добрый день, столкнулся с задачей, выборки данных из таблицы в бд
      сама задача состоит в том что бы получить из таблицы записи сгруппированные по телефону (phone), но перед этим отсортированные по дате (datetime DESC), при этом с лимитом в 200 записей (LIMIT 0,200)
      прошу помочь понять, как можно сформировать запрос к бд, дабы не нагружать сильно бд, и выполнить все условия.
      Или может быть я ошибаюсь, и конечную сортировку лучше делать на php?
      пробовал запросом 
      SELECT sends.* FROM (SELECT * FROM `oc_watsappchat_send` WHERE creator="" ORDER BY `id` DESC) as sends GROUP BY sends.phone ORDER BY `id` DESC LIMIT 0,200 но запрос выходит достаточно долгим, и как я понимаю при увеличении числа записей в таблице время будет также увеличиваться
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.