De:MODx für den Betrieb unter UTF-8 einrichten

From MODx Wiki

Jump to: navigation, search

Contents

Vor der Installation

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.

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);

Installation

  • ModX per FTP uploaden
  • Installscript laufen lassen

Nach der installation

ModX auf UTF-8 einstellen

  • Werkzeuge -> Konfiguration -> Tab "Seiten" -> Zeichenkodierung: "Unicode (UTF-8) - utf-8" einstellen

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" />

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"

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.

Personal tools