Seite 1 von 1

Update 4.8.15 auf 4.9.8 -> Frontend leer. Mehr Infos inside

Verfasst: Mi 23. Sep 2015, 10:21
von Khuri
Hallo,

ich habe versucht ein Contenido 4.8.15 auf 4.9.8 zu aktualisieren.
Das System selbst ist nicht von mir und ich weiß leider auch nichts über die Vorgeschichte (den alten Programmierer erreicht man nicht mehr...)

Das Update lief erfolgreich, das Backend läuft. Das Frontend leider nicht. Ebenfalls gehen die "Editor"-Seiten bzw. Vorschau von Artikeln im Backend nicht.
Systembereinigung durchgeführt.
Systemintegrität sagt: alles okay.

Ich habe drei Dinge versucht:
Versuch 1:
Zuerst habe ich alle /cms Daten aus dem alten System übernommen, da gibt es eine Fehlermeldung:

Code: Alles auswählen

[23-Sep-2015 10:26:35] PHP Fatal error:  Call to undefined function page_open() in XXXXXXX\cms\front_content.php on line 110
Gut, da fehlt wohl eine alte Funktion.

Versuch 2:
In der Aktualisierungsanleitung stand aber auch die Dateien im /cms Root durch die neuen zu ersetzen, also habe ich das gemacht.

Da gibts dann nur noch weißen Adler im Schneesturm.
Die Logdatei wirft keinen Fehler beim aufrufen des Frontend!

Ruft man den Editor im Backend eines Artikels auf, gibt es folgenden Fehler:

Code: Alles auswählen

[23-Sep-2015 10:15:40] PHP Fatal error:  Class 'Template' not found in XXXXXXX\contenido\includes\include.con_editcontent.php(499) : eval()'d code on line 14

Versuch 3:
Ein neues Contenido 4.9.8 aufsetzen (läuft mit Beispielseite), und dann NUR die Unterordner von /cms der alten Seite dorthin kopiert.
Ergebnis: weißer Adler im Schneesturm.



Zurück zu Versuch 2, dem neuen CMS mit alten /cms Unterordnern aber neuen Root-Dateien:
In der /cms/data/config/production/config.php alle $frontend_debug auf "true" zu setzen bringt leider auch keinen Unterschied.

Im Backend -> Style -> Module gibt es u.a. 150 Module mit dem Namen "Text 1" bis "Text 150", die anscheinend alle nur Text rendern:

Code: Alles auswählen

if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

$tpl->reset();
$tpl->set('s', 'text', "CMS_HTML[17]");
$tpl->generate('templates/text_html.html');
Daneben gibt es noch ein paar wenige andere Module z.B. für Menügenerierung.

Da es keine Fehlermeldungen gibt, was wäre die beste Strategie zur Fehlersuche?
Ich probiere als nächstes bei den Modulen den Code auszukommentieren um die Problemquellen von dieser Seite aus zu minimieren.
Für hilfreife Tipps und Tricks wäre ich allerdings sehr dankbar! :)

Re: Update 4.8.15 auf 4.9.8 -> Frontend leer. Mehr Infos ins

Verfasst: Do 24. Sep 2015, 07:53
von frederic.schneider_4fb
Guten Morgen,

das Problem mit den Fehlermeldungen im Frontend liegt daran, dass einige Funktionen aus Version 4.8 nicht mehr in Version 4.9 verfügbar sind. So heißt es z. B. nicht mehr "Template", sondern "cTemplate". Bitte berücksichtige unsere Aktualisierungsanleitung 4.8 auf 4.9: https://docs.contenido.org/display/COND ... .8+auf+4.9
Eine Aktualisierung von der Version CONTENIDO 4.8 ist nicht innerhalb weniger Minuten durchgeführt!

In der Version 4.9 stehen viele alte Klassen nicht mehr zur Verfügung und somit kann die Funktionalität Ihrer Website beeinträchtigt werden. Eine Übersicht der technischen Änderungen finden Sie in der Änderungsübersicht.
Es müssen vor allem Module und ggf. auch Plugins überprüft und ggf. angepasst werden.

P. S.: Wir empfehlen ausdrücklich das Update von der aktuellsten 4.8-Version auf 4.9. Das heißt von 4.8.15 auf 4.8.20 und von dort auf 4.9.8.

Re: Update 4.8.15 auf 4.9.8 -> Frontend leer. Mehr Infos ins

Verfasst: Do 24. Sep 2015, 13:24
von Khuri
Danke für die generelle Info.
Mit dem cTemplate habe ich die Seite größenteils wieder zum laufen bekommen.

Leider fehlte für die Menügenerierung eine brauchbare Dokumentation (in der Änderungslog steht für alle damals verwendeten Funktionen nur "Use cCategoryHelper instead" für die ich wiederrum keine Dokumentation finden konnte).
Aus der Analyse der Klasse und dessen Funktionen habe ich mir dann das Menü zusammen bauen können, wundere mich da allerdings über die Rückgabe von "getSubCategories". Ist es beabsichtigt das im Array "item" als Ausgabe die komplettes Objekt zurückgegeben wird?

Für Interessierte, über folgenden Code habe ich dann das Menü bauen können (entnommen des "navigation_main" Moduls der neuen Beispielseite):

Code: Alles auswählen

$rootIdcat = getEffectiveSetting('navigation_main', 'idcat', 1);
$depth = getEffectiveSetting('navigation_main', 'depth', 3);

// get category tree
$categoryHelper = cCategoryHelper::getInstance();
$categoryHelper->setAuth(cRegistry::getAuth());
$tree = $categoryHelper->getSubCategories($rootIdcat, $depth);
$filter = create_function('cApiCategoryLanguage $item', 'return $item->get(\'idcat\');');
$path = array_map($filter, $categoryHelper->getCategoryPath(cRegistry::getCategoryId(), 1));
Dann über eine Schleife $tree auslesen lassen.