Hallo derSteffen,
die Ausgabe von Array kommt durch ein Fehlverhalten beim Verarbeiten von registrierten CEC-Funktionen. Wird einer Chain mehr als eine Funktion registriert, in diesem Fall sind es vermutlich das AMR-Plugin sowie das gzip-Plugin, da beide sich in die Ausgabe der Seite "einklinken", kann es zu so einem Fehler kommen.
Du hast folgende Möglichkeiten:
1. Anpassen der front_content.php, in der 4.8.11 er Version
In der cms/front_content.php wird ab Zeile 979 die Seite ausgegeben. Den Code
Code: Alles auswählen
// write html output into output buffer and assign it to an variable
ob_start();
eval ("?>\n".$code."\n<?php\n");
$htmlCode = ob_get_contents();
ob_end_clean();
// process CEC Hook to do some preparations before output
$htmlCode = CEC_Hook::execute('Contenido.Frontend.HTMLCodeOutput', $htmlCode);
// print output
echo $htmlCode;
gegen den Code aus einer 4.8.12 er Version ersetzen mit
Code: Alles auswählen
// write html output into output buffer and assign it to an variable
ob_start();
eval ("?>\n".$code."\n<?php\n");
$htmlCode = ob_get_contents();
ob_end_clean();
// process CEC Hook to do some preparations before output
$htmlCode = CEC_Hook::execute('Contenido.Frontend.HTMLCodeOutput', $htmlCode);
#If chain execution return value is an array
if (is_array($htmlCode)) {
$htmlCode = $htmlCode[0];
}
// print output
echo $htmlCode;
2. Die AMR Einstellung "Zeitpunkt zum Generieren der URLs" auf "Beim Generieren des Codes der Seite" umstellen
Dann musst du aber dafür sorgen, dass sämtliche Module/Plugins die URLs mit der neuen Methode generieren.
3. Umstellen der GZip Komprimierung
Als Alternative zum Plugin kannst du die GZip-Komprimierung auf eine andere Art und Weise realisieren, und zwar mit ein paar Regeln in der .htaccess und einem zusätzlichen Script im Mandantenverzeichnis.
Dafür legst du im cms/ Verzeichnis eine Datei "front_content.gzip.php" an und schreibst folgendes hinein:
Code: Alles auswählen
<?php
/**
* GZip compression of output
*/
// start ouput buffer, either with callback 'ob_gzhandler' or without
if (!ob_start('ob_gzhandler')) {
ob_start();
}
// server variables to modify
foreach (array('PHP_SELF', 'REQUEST_URI', 'SCRIPT_NAME', 'SCRIPT_FILENAME') as $p => $var) {
if (isset($_SERVER[$var]) && strpos($_SERVER[$var], 'front_content.gzip.php') !== false) {
str_replace('front_content.gzip.php', 'front_content.php', $_SERVER[$var]);
}
}
// include front_content.php
include_once('front_content.php');
Nun musst du dafür sorgen, dass Abfragen an die Datei umschrieben werden. Dafür musst du in der .htaccess 2 Regeln angeben:
Code: Alles auswählen
RewriteEngine on
RewriteBase /cms
# anfragen auf front_content.zip.php ignorieren
RewriteRule ^cms/front_content.zip.php.*$ - [L]
# rest an front_content.gzip.php umschreiben
RewriteRule !\.(js|ico|gif|jpg|jpeg|png|css|pdf)$ front_content.gzip.php [NC,QSA,L]
Wenn du eine .htaccess vom AMR-Plugin verwendest, ist die Anpassung einfacher. Das Vorkommen von "front_content.php" gegen "front_content.gzip.php" ersetzen.
Das Ganze funktioniert so:
- Alle Anfragen werden an das neue Script "front_content.gzip.php" umschrieben.
- Der startet, falls möglich, die GZip-Komprimierung, passt ein paar Server-Variablen ab und bindet die eigentliche front_content.php ein.
Einen Nachteil gibt es hierbei natürlich. Das gzip-Plugin ist das Backend konfigurierbar, nicht aber diese Lösung - hierbei muss man an die .htaccess ran...
Gruß
xmurrix