De:MODx für den Betrieb unter UTF-8 einrichten
From MODx Wiki
Contents |
[edit]
Vor der Installation
[edit]
Das Script zur Erstellung der MySQL-Tabellen auf UTF-8 trimmen
- MODx herunterladen
- Zip-Paket lokal entpacken
- In der Datei /install/setup.sql jeden "Create table"-Block, letzte Zeile, ändern. Z.B. von
) TYPE=MyISAM COMMENT='Contains data about active users.';
zu
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci TYPE=MyISAM COMMENT='Contains data about active users.';
Dadurch werden die Datenbanktabellen gleich mit dem gewünschten Zeichensatz angelegt.
[edit]
Corehacking
In zwei Dateien muß die interne Kommunikation zwischen PHP und MySQL auf UTF-8 getrimmt werden.
- In der Datei /manager/index.php den Datenbankverbindungsblock (in Version 0.9.2 und 0.95 ab Zeile 133) ändern
// 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); }
zu
// 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); }
- In der Datei manager/includes/extenders/dbapi.mysql.class.inc.php (in Version 0.9.2 und 0.95 ab Zeile 90) folgenden Block ändern
if (!@ mysql_select_db($dbase)) { $modx->messageQuit("Failed to select the database '" . $dbase . "'!"); exit; }
zu
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);
[edit]
Installation
- ModX per FTP uploaden
- Installscript laufen lassen
[edit]
Nach der installation
[edit]
ModX auf UTF-8 einstellen
- Werkzeuge -> Konfiguration -> Tab "Seiten" -> Zeichenkodierung: "Unicode (UTF-8) - utf-8" einstellen
[edit]
Template auf UTF-8 einstellen
- Im eigenen Template dann natürlich die Metaangabe zum Zeichensatz nicht vergessen:
<meta http-equiv="Content-Type" content="text/html; charset=[(etomite_charset)]" /> oder direkt <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
[edit]
Texteditor auf UTF-8 einstellen
Entity Encoding in TinyMCE auf "raw" setzen, damit die Sonderzeichen nicht mehr in die entsprechenden HTML-Entitäten umgeschrieben werden:
- Ressourcen -> Ressourcenverwaltung -> Tab "Plugins" -> TinyMCE -> Tab "Konfiguration" -> Entity Encoding -> "raw"
[edit]
Kontrolle
Das war's. Ab sofort rennt die Website ohne Kompromisse unter UTF-8. Kann leicht per PHPMyAdmin und einem Blick in die entsprechenden Tabellen überprüft werden. Alle Umlaute werden jetzt leserlich abgespeichert, und das gilt auch für nichtlateinische Zeichen. Letztere können auch in den diversen Feldern für die Dokumentmetaangaben benutzt werden, das ist wichtig gerade für mehrsprachige Webprojekte.
