УРАААА
I DID IT
Представьте, просидел несколько суток
Значит так.. Опишу, что сделал. Дабы народу помочь, если кому понадобится, да и самому не забыть опосля
1. Перед установкой MODx, ищем в папке install файл
setup.sql и перед каждым TYPE=MyISAM добавляем DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci . Например, чтобы вместо:
CREATE TABLE IF NOT EXISTS `{PREFIX}active_users` (
`internalKey` int(9) NOT NULL default '0',
`username` varchar(50) NOT NULL default '',
`lasthit` int(20) NOT NULL default '0',
`id` int(10) default NULL,
`action` varchar(10) NOT NULL default '',
`ip` varchar(20) NOT NULL default '',
PRIMARY KEY (`internalKey`)
) TYPE=MyISAM COMMENT='Contains data about active users.';
получилось примерно так:
CREATE TABLE IF NOT EXISTS `{PREFIX}active_users` (
`internalKey` int(9) NOT NULL default '0',
`username` varchar(50) NOT NULL default '',
`lasthit` int(20) NOT NULL default '0',
`id` int(10) default NULL,
`action` varchar(10) NOT NULL default '',
`ip` varchar(20) NOT NULL default '',
PRIMARY KEY (`internalKey`)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci TYPE=MyISAM COMMENT='Contains data about active users.';
P.S.: Проще всего использовать замену ") TYPE" на ") DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci TYPE"
P.S.2: Таким образом мы принудительно заставляем базу данных использовать кодировку UTF8 независимо от того, какие настройки выставлены для нее по умолчанию.
2. Находим в папке manager файл
index.php. В нем находим (примерно 133 строка)
// connect to the database
if(@!$modxDBConn = mysql_connect($database_server, $database_user, $database_password)) {
die("<h2>Failed to create the database connection!</h2>. Please run the MODx <a href='../install'>install utility</a>");
} else {
mysql_select_db($dbase);
}
и заменяем на
// connect to the database
if(@!$modxDBConn = mysql_connect($database_server, $database_user, $database_password)) {
die("<h2>Failed to create the database connection!</h2>. Please run the MODx <a href='../install'>install utility</a>");
} else {
mysql_select_db($dbase);
mysql_query("SET NAMES 'utf8';",$modxDBConn);
mysql_query("SET CHARACTER SET 'utf8';",$modxDBConn);
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';",$modxDBConn);
}
3. Проделываем похожую процедуру с файлом manager/includes/extenders/dbapi.mysql.class.inc.php:
Находим в файле
dbapi.mysql.class.inc.php (примерно 90 строка, функция connect):
if (!@ mysql_select_db($dbase)) {
$modx->messageQuit("Failed to select the database '" . $dbase . "'!");
exit;
}
$tend = $modx->getMicroTime();
И заменяем на следующий код:
if (!@ mysql_select_db($dbase)) {
$modx->messageQuit("Failed to select the database '" . $dbase . "'!");
exit;
}
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);
$tend = $modx->getMicroTime();
Итак, мы готовы к установке этой замечательной безо всякого преувеличения CMS
Собственно, дальше установка, настройка и заполнение информацией.
ВАЖНО: Сразу после установки системы вы попадаете в раздел настроек, где необходимо выбрать кодировку, которую будете использовать в системе. Выбирайте Unicode (UTF8) - utf-8.
Ну и в завершение, я долго бился над тем, что при переносе дампа базы данных с локального компьютера на хостинг, на последнем постоянно появлялись проблемы, хотя дамп казалось был исправен.
Так вот, проблема заключалась опять же в необходимости принудительно заставлять базу данных на хостинге работать с кодировкой UTF8. На данный момент я нашел пока единственное решение - это полученный дамп базы из phpMyAdmin редактировать вручную и проделывать то же самое, как я описывал в пункте 1:
перед каждым TYPE=MyISAM добавляем DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Хотя возможно, что есть более универсальный подход, даже почти уверен, что есть, поскольку базу данных объемом в несколько мегабайт мне просто страшно представить, как редактировать
Вот если у кого есть дельные мысли на этот счет, буду очень рад
Надеюсь, что все это я описал не зря и кому-то смог тоже помочь
.
P.S.: Сохраняя вложенность, приложил измененные файлы, о которых говорил выше по тексту. По идее, все, что требуется, перед установкой просто заменить ими имеющиеся директории. Прошу принять во внимание, что приложенные к сообщению файлы относятся к MODx версии
0.9.2.1. Поэтому в более новых версиях возможны какие-либо изменения в файловой структуре.