is_start_compatible auf neue Version umstellen
Verfasst: Fr 7. Dez 2012, 12:28
Hallo zusammen,
es gibt einige CONTENIDO Installationen, die immer noch mit folgender Einstellung (in der Datei "contenido/includes/config.php") laufen:
In früheren CONTENIDO Versionen wurden Startartikel von Kategoien in der Tabelle "con_cat_art.is_start" gespeichert. Seit CONTENIDO 4.6 oder 4.8 ist das nicht mehr der Fall, hier werden die Startartikel in con_cat_lang.startidartlang gespeichert. ist aber die Einstellung "is_start_compatible" auf true gesetzt, läuft CONTENIDO im Abwärtskompatiblen-Modus für Startartikel.
In CONTENIDO 4.9 wurde dies entfernt, das Setup kümmert sich um den Wechsel. Es gibt aber Plugins, die den alten Modus nicht unterstützen. Das AMR-Plugin z. B. läuft nicht richtig im Modus "$cfg["is_start_compatible"] = true;", URLs in Navigationen können nicht korrekt generiert werden.
Man kann das aber einfach umstellen, im Folgenden werden die einzelnen Schritte dazu erklärt:
Die Datei "contenido/includes/config.php" öffnen und die Konfiguration "is_start_compatible" ändern in
Dann folgenden Code z. B. in ein Modul einfügen und einmal den Artikel im Frontend oder im Backend (Editor/Vorschau) aufrufen, damit die Funktion zum Konvertieren ausgeführt wird.
Danach sind alte Startartikel Einträge umgestellt auf die neue Version.
Macht aber sicherheitshalber vorher eine Sicherung der Datenbank.
Grüße
xmurrix
es gibt einige CONTENIDO Installationen, die immer noch mit folgender Einstellung (in der Datei "contenido/includes/config.php") laufen:
Code: Alles auswählen
$cfg["is_start_compatible"] = true;
In CONTENIDO 4.9 wurde dies entfernt, das Setup kümmert sich um den Wechsel. Es gibt aber Plugins, die den alten Modus nicht unterstützen. Das AMR-Plugin z. B. läuft nicht richtig im Modus "$cfg["is_start_compatible"] = true;", URLs in Navigationen können nicht korrekt generiert werden.
Man kann das aber einfach umstellen, im Folgenden werden die einzelnen Schritte dazu erklärt:
Die Datei "contenido/includes/config.php" öffnen und die Konfiguration "is_start_compatible" ändern in
Code: Alles auswählen
$cfg["is_start_compatible"] = false;
Code: Alles auswählen
/**
* Function to convert old start article configuration to new style.
*
* In former CONTENIDO versions (4.6 or earlier) start articles were
* stored in table con_cat_art.is_start.
* Since 4.6 start articles are stored con_cat_lang.startidartlang.
*
* This function takes the start articles from con_cat_art.is_start and
* sets them in con_cat_lang.startidartlang for all available languages.
*/
function conAdminRemoveIsStartCompatibility() {
global $cfg;
$db = new DB_Contenido();
$db2 = new DB_Contenido();
// Get all languages
$aLang = array();
$sql = "SELECT idlang FROM " . $cfg["tab"]["lang"];
$db->query($sql);
while ($db->next_record()) {
$aLang[] = (int) $db->f("idlang");
}
// Get all old start article configurations
$sql = "SELECT idart, idcat FROM " . $cfg["tab"]["cat_art"] . " WHERE is_start = 1";
$db->query($sql);
while ($db->next_record()) {
$startidart = (int) $db->f("idart");
$idcat = (int) $db->f("idcat");
foreach ($aLang as $pos => $vlang) {
$vlang = (int) $vlang;
// Convert old start article to entry new configuration
$sql = "SELECT idartlang FROM " . $cfg["tab"]["art_lang"] . " WHERE idart = " . $startidart . " AND idlang = " . $vlang;
$db2->query($sql);
if ($db2->next_record()) {
$idartlang = (int) $db2->f("idartlang");
$sql = "UPDATE " . $cfg["tab"]["cat_lang"] . " SET startidartlang = " . $idartlang . " WHERE idcat = " . $idcat . " AND idlang= " . $vlang;
$db2->query($sql);
}
}
}
// Delete old start article configurations
$sql = "UPDATE " . $cfg["tab"]["cat_art"] . " SET is_start = 0";
$db->query($sql);
}
// Now invoke the function to run the conversion
conAdminRemoveIsStartCompatibility();
Macht aber sicherheitshalber vorher eine Sicherung der Datenbank.
Grüße
xmurrix