Seite 1 von 1

is_start_compatible auf neue Version umstellen

Verfasst: Fr 7. Dez 2012, 12:28
von xmurrix
Hallo zusammen,

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

Code: Alles auswählen

$cfg["is_start_compatible"] = false;
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.

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();
Danach sind alte Startartikel Einträge umgestellt auf die neue Version.

Macht aber sicherheitshalber vorher eine Sicherung der Datenbank.

Grüße
xmurrix

Re: is_start_compatible auf neue Version umstellen

Verfasst: Fr 19. Jul 2013, 11:36
von Faar
Das klappte bei mir nicht richtig, die startidartlang blieb bei einigen Einträgen trotzdem bei 0.
Dafür lief die Seite danach nicht mehr richtig.
Eine Datenbank-Sicherung funktionierte auch nicht mehr richtig, weil ein blödes Google-XML-Sitemap Modul spinnt, das in der Hauptkategorie steht.
Das XML stimmt nicht mehr, folglich geht die Seite nicht mehr.

Re: is_start_compatible auf neue Version umstellen

Verfasst: Fr 19. Jul 2013, 11:49
von xmurrix
Dann schlage ich vor, dass du das manuell machst.

1. Die Einstellung $cfg["is_start_compatible"] = false; umstellen.

2. Im Bakend im Artikelbereich jede Kategorie einzeln anklicken und den Startartikel setzten.

Dass die DB Sicherung nicht geklappt hat, ist Ärgerlich. Die hier beschriebene Funktion eigentlich sauber die Änderungen übernehmen.

Hast du auch die Einstellung $cfg["is_start_compatible"] = false; gesetzt? Wenn die noch den Wert "true" hat, wird das nicht klappen...

Re: is_start_compatible auf neue Version umstellen

Verfasst: Fr 19. Jul 2013, 11:57
von Faar
Ja, ich habe zuerst den Eintrag auf false gesetzt.
Aber ich hatte nicht gesehen, dass in der Hauptkategorie kein Startartikel ist, sondern ein Google-XML-Sitemap Modul.
Jetzt wird beim Aufruf der Domain immer Fehler 404 angezeigt, egal ob ich eine Umleitung auf die Unterkategorie mache oder einen neuen Startartikel plaziere, es bleibt bei Fehler 404.

Re: is_start_compatible auf neue Version umstellen

Verfasst: Fr 19. Jul 2013, 12:36
von Faar
Ich habe die Funktion nochmal eingebaut und die Tabellen überarbeiten lassen.
Weil ich glaube, dass dieses neue Problem mit Fehler 404 nichts mit dieser Funktion zu tun hatte, sondern mit dem Abschalten von is_start_compatible.
Ich denke, ich hatte es nur danach nicht mit der Startseite getestet, sonst wäre das sicher dort schon 404 gewesen.

Jetzt besteht aber noch das Problem, dass statt einer Startseite die Fehlermeldung 404 kommt.
In der .htaccess steht auch keine Umleitung drin, es wird auf die front_content.php verwiesen.
In der Hauptkategorie habe ich eine Startseite eingerichtet, aber diese wird nicht angezeigt beim Aufruf der Domain.
Immer nur 404.

Re: is_start_compatible auf neue Version umstellen

Verfasst: Fr 19. Jul 2013, 12:48
von xmurrix
404 könnte auch ein Hinweis für eine fehlerhafte Umleitung oder Einstellung in der .htaccess sein.

Re: is_start_compatible auf neue Version umstellen

Verfasst: Mo 29. Jul 2013, 11:38
von Faar
Nachtrag: Der 404 Fehler ist behoben, in einer DB-Abfrage im Modul stand noch "is_start_compatible" drin.
Danke Xmurrix!