Приветствую.
Ситуация неприятная. Установлен сниппет getRelated. Выводит похожие материалы по заголовку материала и дополнительному полю Авто-метка. Есть около 50 тегов, по некоторым выводит похожие статьи, а по некоторым нет. Решил разобраться в чем дело — написал теги на английском (заработало), а с русским языком какие-то проблемы — если даже убрать все теги и назначить двум статьям по одному тегу, то «работает 50/50». Решил перебрать символы русского языка побуквенно от А до Я. Итог: сниппет выводит только те статьи, в которых отсутствуют определенные буквы:
- абвгдежзийклмноп + я — с этими буквами все в порядке, с ними похожие материалы выводятся
- рстуфхцчшщъьэю — а если использовать любую из этих, то ничего не выводится
абвгдежзийклмноп рстуфхцчшщъьэю я (зачеркнутым написано то, с чем не работает)
Такая вот ситуация. Что делать — не знаю.
Есть идеи?
P.S.
Было как-то дело — правил этот файл: core/components/translit/model/modx/translit/tables/russian.php но не знаю, могло ли это как-то повлиять на работу. Восстанавливать этот файл боязно, вдруг, URL'ы изменятся.
Также посмотрел записи в БД — с любыми буквами записи идентичны, даже с теми с которыми не работает.
Буду признателен за помощь!
P.P.S.
Проверил на чистом MODX на Modhost — ситуация та же самая. Как побороть? Куда копать?
Проблема, возможно, у всех!?
Игорь Сухинин 25.01.2018 09:30 #
Проверьте, что у Вас в БД везде (ТОЧНО ВЕЗДЕ) используется UTF-8.
Также стоит проверить, что файл russian.php сохранен корректно в UTF-8 без BOM (Byte Order Mark). Возможно, проще всего это сделать в Notepad++.
weranda 25.01.2018 09:46 #
А файла russian.php нигде нет за исключением компонента translit, но даже без него (на тестовом чистом MODX) такая фигня происходит.
Какие еще варианты?
Игорь Сухинин 25.01.2018 10:02 #
weranda 25.01.2018 10:07 #
— Кодировка: UTF-8 Unicode (utf8)
— Сравнение: utf8_general_ci
Игорь Сухинин 25.01.2018 10:15 #
weranda 25.01.2018 10:25 #
weranda 25.01.2018 10:31 #
http://joxi.ru/E2pq3v0tBkR14A
Там где иероглиф прописана как раз одна из букв из-за которой не работает. Есть идеи?
Игорь Сухинин 25.01.2018 10:40 #
Другими словами, как-то так: strtolower на mb_strtolower, substr на mb_substr, ..., и так далее. Сохранить, выгрузить на сервер и посмотреть, что получилось.
weranda 25.01.2018 10:46 #
weranda 25.01.2018 11:01 #
Прям, даже не знаю, что за фигня такая.
Игорь Сухинин 25.01.2018 11:09 #
Хотя… есть еще одна мысль. Смотрите, в этой строке есть код, который жестко вырезает все «подозрительные» символы.
Автор даже попытался включить в «разрешенные» символы кириллического алфавита. По какой-то причине у Вас это может не работать. Попробуйте также заменить эту функцию на mb_ereg_replace, однако при этом нужно слегка поменять ее так:
Может быть, Вам повезет ;)
weranda 25.01.2018 11:16 #
Игорь Сухинин 25.01.2018 11:20 #
weranda 25.01.2018 16:11 #
Что сделал:
— поменял на «мультибайтных собратьев» (стали вырезаться неработавшие символы)
— поменял функцию замены
— дело в шляпе и в совете Игоря.
Еще раз благодарю вас. Успехов!
Игорь Сухинин 25.01.2018 16:25 #
Отметьте, пожалуйста, как решение один из моих комментов выше. Будет видно, что решение нашлось.