Поиск
Последние записи:
- Нестандартные шрифты для сайта. Использование и рецепты.
- Определение региона посетителя сайта
- Команды работы с сервером для web-разработчика
- Настройки TinyMCE в MODx
- Как выбрать хостинг для сайта?
- CSS хаки. Особенности кроссбраузерной верстки.
- Уязвимости e107
- Установка DISQUS на сайт. Внешняя система комментариев
- Новогодний подарок для разработчиков сайтов
- 301 Редирект на Ucoz и не только…
Самое популярное:
- MODx Revolution vs MODx Evolution
- Дублирование контента в MODx
- Мета-теги и заголовки MODx
- Карта сайта и google sitemap в MODx
- Как подключить lightbox
- Проблема c кодировками MODx
- Мета-теги в MODx 1.0.2
- RSS лента на MODx
- CSS хаки. Особенности кроссбраузерной верстки.
- Установка DISQUS на сайт. Внешняя система комментариев
Мета
Категории:
Полезное
Архив
Проблема c кодировками MODx
Категория 5 августа 2009 in MODx
Как известно, в достаточно популярной CMS MODx существует проблема отображения русскоязычных сайтов. Она кочует из версии в версию и от дистрибутива к дистрибутиву.
Суть вопроса несколько глубже, чем настроить корректную выдачу страниц, важно настроить и локализовать основные сниппеты (Ditto, Jot, AjaxSearch, Wayfinder и др.). Я решал соответствующие проблемы на старых 0.9** версиях CMS MODx, но сейчас хочу показать, как это делается на версии продукта 1.0.0 MODx Evolution. Скачать эту версию CMS можно здесь, но чтобы все заработало придется дистрибутив немного изменить.
Ниже рассказано как установить MODx.
Уточню, что я проверял работу не всех сниппетов, но впоследствии расширю список. Также все советы касаются исключительно сайтов в кодировке utf-8.
1 Проблема. Проблема с кодировкой UTF-8.
Для ее решения я использовал стандартный прием — добавление строчек:
mysql_query("SET NAMES 'utf8';", $this->conn);
mysql_query("SET character_set_results = 'utf8';", $this->conn);
mysql_query("SET collation_connection = 'utf8_general_ci';", $this->conn);
Приведенный код надо добавить после инициации соединения и выбора базы данных. Исправленный файл можно скачать здесь.
Загрузить файлик надо вместо manager\includes\extenders\dbapi.mysql.class.inc.php. Оптимально это сделать до установки MODx, т. е. в дистрибутиве.
2. Проблема. Кодировка соединения modx и настройка конфигурации.
Собственно на этом этапе проблем нет. От того, какие настройки мы выберем здесь зависит отсутствие багов в дальнейшем. Прежде всего необходимо создать базу данных. Это можно сделать с помощью запроса:
CREATE DATABASE `<ваша бд>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
В этом запросе кодировка новой БД принудительно выставлена UTF-8. Однако, некоторые хостеры не дают выполнять подобного рода запросы на сервере и предлагают использовать уже созданные базы данных. В этом случае имеет смысл выполнить запрос :
ALTER DATABASE `<ваша бд>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
После этого, используя мастер установки можно смело установить CMS. Замечу, что установку целесообразно проводить, используя английский язык, так как русский язык может отображаться некорректно.
На этапе установки надо выбрать database connection method «SET CHARACTER SET» и кодировку utf8_general_ci (это значения по умолчанию).
Затем необходимо просто поменять в настройках modx (tools->configuration->language) английский язык на Russian-UTF8.
3. Проблема. Проблема в обрезании текста.
Суть проблемы состоит в том, что при использовании расширения сниппета Ditto «summary» текст анонса иногда обрезается некорректно, вследствие чего анонс заканчивается черными символами знака вопроса. Пролема решается одной строчкой в файле summary.extender.inc.php перед строкой «return $summary»:
$summary=iconv('utf-8', 'utf-8', $summary);
Измененный скрипт доступен здесь. Загрузить файлик надо вместо manager\assets\snippets\ditto\extenders\summary.extender.inc.php.
Таким образом, заменив в дистрибутиве modx версии 1.0.0 всего два файла мы избавляемся от проблем с кодировкой.
13 Ответов на “Проблема c кодировками MODx”
Оставить комментарий
Вы можете подписаться на RSS ленту комментариев.



августа 31, 2009 at 19:30
Я вот попробовал установить MODX себе, а он почемуто создал поумолчанию все таблицы в БД с кодировкой сравнения португалии.
августа 31, 2009 at 20:19
Попробуйте вот этот дистрибутив. Я его проверял неоднократно. В нем все проблемы устранены.
апреля 15, 2010 at 11:29
Я попробывал скачать Ваш дистрибутив, поставил, админка работает, сайт нет. sapr.lti-gti.ru
Не подскажете, как это можно исправить?
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sapr.lti-gti.ru/manager/includes/browsercheck.inc.php on line 16 такую ошибку выдает
апреля 15, 2010 at 21:43
а в чем собственно проблема? Что не получается?
апреля 16, 2010 at 6:38
админка работает, сайт нет
апреля 16, 2010 at 6:39
сейчас перезалил modx последней версии, так теперь проблема с кодировкой.
апреля 17, 2010 at 17:27
Я смотрю, все заработало. Вероятно вы использовали рекомендации, описанные в моей статье)))
мая 31, 2010 at 21:24
огромное спасибо за наводку. в моем случае была проблема в том, что БД можно создать только из панели хостера, а там по-умолчанию cp1251_general_ci в качестве Collation. А сайт уже установлен и работает. используя phpMyAdmin пришлось менять на utf8-general-ci каждое нужное поле в таблицах templates, sitecontent и htmlsnippets. Т.е. удалось не переставляя сайт сделать фикс и заставить modx корректно сохранять/читать unicod’ные символы в/из базы и соответственно отображать.
июля 6, 2010 at 8:49
спасибо
апреля 22, 2011 at 23:43
модх не отображал польские символы, хотя и кодировка была утф8. теперь все ок
Большое спасибо за файлик.
июня 17, 2011 at 19:45
Здравствуйте. Направьте пожалуйста новичка. При создании ресурса или шаблона, если я пишу название на русском языке, то создаётся ресурс или шаблон без названия. Что делать? оО Кодировка в админ-панели выбрана ютф8.
июня 18, 2011 at 16:51
Выполнить запрос:
ALTER DATABASE `< ваша бд>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Или переустановить MODx по инструкции.
июня 18, 2011 at 21:15
Прошу прощения, моя невнимательность. Вся соль оказывается состояла в том, что в админ-панели у меня был выбран язык Russian а не Russian-UTF8 =) Большое спасибо за помощь