Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

Еще одна глубоко скрытая неприятность


После решения проблем с DirectResize и ManagerManager мы было успокоились. Всё работатет, всё правильно отображается.

Но, вдруг откуда ни возьмись...

 

При попытке добавить ссылку на другой документ сайта в редакторе TinyMCE обнаружилась совсем неожиданная ошибка - выпадающий список дерева сайта отображается в неправильной кодировке:

Испорченный список ссылок

Испорченный список ссылок

Ситуация вообще-то странная по следующим причинам:

1. Весь контент сайта и всё оформление отображается в правильной кодировке.

2. Само диалоговое окно отображается в правильной кодировке.

3. Анализ кода файла, формирующего этот список показал, что список берется из глобального масива MODx, не читается из базы (здесь могли бы быть ошибки).

Пришлось взять файл  assets/plugins/tinymce213afm/tinymce.linklist.php, вставить в него через echo сведения о charset и о массиве строк, передаваемых в окно. Выполнив этот PHP-скрипт через адресную строку браузера, мы увидели искаженные строки. При этом кодировка браузера была принудительно установлена на windows-1251. Переключив кодировку вручную на UTF-8 мы увидели правильные строки.

Вот теперь стало понятно, что к чему. Дело в том, что на нашем сервере почти все сайты работают в кодировке windows-1251. В настройках Apache указана кодировка по умолчанию windows-1251.

Для нашего виртуального хоста кодировка задана UTF-8.  Сделано это с помощью директивы

AddDefaultCharset utf8

В результате в ответы на запросы браузеров сервер посылает в http-заголовке указание о том, что кодировка страниц этого сайта utf8

Однако эта опция не действует на PHP-скрипты

Пришлось вписать для нашего виртуального хоста директиву

php_admin_value default_charset utf8

И всё заработало!  Список ссылок стал показываться правильно:

Правильный список ссылок

  Замечание. Конечно никто не даст вам лазить в настройки виртуального хоста.
Это исключительная привилегия злобного сурового админа.

Мы попытались записать эту директиву в свой файл .htaccess. Оказалось, что этого делать нельзя - сервер выдает ошибку 500.

23-04-2009 15:40:35



    Содержание раздела «Проблема со списком ссылок»:
Комментарии любых посетителей

Написать комментарий