Автор Тема: Проблема с тегами - в 1.7  (Прочитано 826 раз)

15 Март 2018, 02:28:27
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет!

Такая трабла: у товаров прописаны теги на русском, и при переходе по любому тегу из карточки товара (куда они выводятся) получаю в строке браузера /search?tag=%25D0%2594%25D0%25B5%25D1%2582%25D0%25B8 вместо слова "дети" после равно.
Если вместо кракозябров написать в адресной строке прям по русски "дети", то поиск срабатывает и товары выводятся по тегу...

Подскажите, пожалуйста куда копать - желательно как для чайника.

Спасибо!
15 Март 2018, 09:11:04
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Нет никакой проблемы, кириллицу так показывает. Можешь так и оставить.
15 Март 2018, 10:00:06
Ответ #2
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет никакой проблемы, кириллицу так показывает. Можешь так и оставить.

Я бы с радостью, но не работает поиск по тегам - на фронтеде сообщение: Ничего не найдено.
Если в прмяо в строке браузера пишу взамен этой псевдо-кирилицы по русски - то поиск работает!
При этом всем, обычный поиск на сайте работает на русском без проблем.

Вот где собака порылась, пока не могу понять.
15 Март 2018, 11:02:27
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Проболема в кодировке базы данных. У вас бд создана автоматом с дефолтными настройками хостинга. Чтобы русский выводился читабельно, нужно установить кодировку utf8 (везде, соединения, бд, табл, поля).
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
15 Март 2018, 13:29:54
Ответ #4
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проболема в кодировке базы данных. У вас бд создана автоматом с дефолтными настройками хостинга. Чтобы русский выводился читабельно, нужно установить кодировку utf8 (везде, соединения, бд, табл, поля).

Большое спасибо за наводку, но я к сожалению профан в общении с базами данных и с панелью ISP Manager ))
Если вас не затруднит, напишите развернуто что и где нужно проверить и изменить... (изменить я так понимаю нужно кодировку на UTF8), но вот где конкретно это сделать?

Спасибо!

--
нашел поиском
ps_connections - это я так понимаю соединение
SELECT *  FROM `mybd`.`ps_connections` WHERE (CONVERT(`id_connections` USING utf8) LIKE '%search%' OR CONVERT(`id_shop_group` USING utf8) LIKE '%search%' OR CONVERT(`id_shop` USING utf8) LIKE '%search%' OR CONVERT(`id_guest` USING utf8) LIKE '%search%' OR CONVERT(`id_page` USING utf8) LIKE '%search%' OR CONVERT(`ip_address` USING utf8) LIKE '%search%' OR CONVERT(`date_add` USING utf8) LIKE '%search%' OR CONVERT(`http_referer` USING utf8) LIKE '%search%')

сама бд тоже в utf8

осталось найти и проверить поля
15 Март 2018, 17:23:50
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
15 Март 2018, 20:08:10
Ответ #6
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");

Ребята, я же полный нолик)) расскажите пожалуйста где это искать и как или куда это нужно добавить?
В БД поиском в таблицах такого нет, это в конфигурации сервера должно быть написано или в РНР? объясните чуть более подробно пожалуйста.
15 Март 2018, 20:56:05
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Тут почитай про кодировку в mysql
https://habrahabr.ru/post/10983/
понятно написано.
15 Март 2018, 23:28:39
Ответ #8
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо! Статья действительно очень подробная и понятная.

В итоге вот что у меня с БД

Variable_name
Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8
character_set_filesystem binary
character_set_results utf8mb4
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

По факту получается что проблема не базе данных, так как вроде бы все в порядке. Или я не прав?
16 Март 2018, 11:25:48
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Шаблон модуля тегов проверьте, файл должен быть в кодировке utf8 и у вывода названия тега
{$tag.name|escape:html:'UTF-8'}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
16 Март 2018, 11:39:37
Ответ #10
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Так как с базой все ок. Тогда заново проиндексируйте товары, проверьте привязку тегов к товару.
/search?tag=%25D0%2594%25D0%25B5%25D1%2582%25D0%25B8для браузера это правильный адрес, который включает кириллицу. С ссылкой нет проблем. Не находит товары потому что не проиндексированы или товарам не присвоены теги, еще нужно проверить сами теги, пересохранить пару для теста и попробывать искать по этим тегам.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Март 2018, 12:08:31
Ответ #11
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Шаблон модуля тегов проверьте, файл должен быть в кодировке utf8 и у вывода названия тега
{$tag.name|escape:html:'UTF-8'}

Спасибо за направление - куда рыть!

Вот что я обнаружил и что смог найти по этому поводу в поисковике.

Есть у меня вот такой файл в шаблоне тегов:
{if isset($tags) && is_array($tags) && $tags|count}
{foreach from=$tags item=tag name=myLoop}
<a
class="{$tag.class} text_color tag_item"
href="{url entity='search' params=['tag' => $tag.name|urlencode]}"
title="{l s='More about' d='Shop.Theme.Transformer'} {$tag.name}"
>
{$tag.name}
</a>
{/foreach}
{else}
{l s='No tags' d='Shop.Theme.Transformer'}
{/if}

Судя по этой строчке:    href="{url entity='search' params=['tag' => $tag.name|urlencode]}"

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

Ребята! Без вас уже никак, все что нарыл очень далеко от моего случая и я не знаю, что делать дальше.
Провел следующие эксперименты.
1. Во первых выполнил все советы (переиндексировал весь поиск, добавлял и удалял теги и смотрел что будет) - пока тоже самое
2. Выяснил, что если написать ручками  русское слово вместо лабуды - то поиск срабатывает
3. Добавил тег на английской раскладке - в таком случае поиск работает успешно
4. Пробовал писать тег в транслите - но поиск в таком случае не работает (тогда зачим urlencode)

Я снова запутался и не понимаю, что дальше)) Прошу вашей помощи!
18 Март 2018, 15:44:30
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблонах происходит кодирование поискового слова, а в контроллере обратная операция - urldecode.
У вас не отрабатывает функция декодирования.
18 Март 2018, 22:37:28
Ответ #13
  • Новичок
  • *
  • Сообщений: 37
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблонах происходит кодирование поискового слова, а в контроллере обратная операция - urldecode.
У вас не отрабатывает функция декодирования.

И...?
19 Март 2018, 11:26:07
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!