Achtung - die gezeigte Änderung funktioniert radikal aber nicht so wie es erwünscht war. Ursache dieser Falschmeldung war wohl Cache - Informationen.
Wishy hat das auch nicht gemerkt und die Änderung in die Daily aufgenommen, mit dem Effekt, dass Anwender der Daily prompt ein Problem hatten.
Der Vorschlag konnte nicht funktionieren, weil die Funktion ContentPreRender den PHPLayer - Tag bereits entfernt und somit in ContentPostRender die Information fehlte.
Dennoch kann es nicht sein, dass PHPLayers Informationen in den Inhalt schreibt, auch wenn es nicht eingesetzt wird.
Die Lösung - Einfügung einer Signatur in die Funktion ContentPreRender, wenn das Modul verwendet wird und Entfernung der Signatur mit ContentPostRender.
Und so funktioniert es :
1. Änderung
Code: Select all
class PHPLayers extends CMSModule
{ var $sample='i8qvyz';
2. Änderung
Code: Select all
function ContentPreRender(&$content)
{
global $gCms;
if (eregi('\{cms_module module=[\"\']?phplayers[\"\']?', $content))
{
$config = $this->cms->config;
$text = '<__script__ language="JavaScript" type="text/javascript" src="'.$config['root_url'].'/modules/PHPLayers/phplayers/libjs/layersmenu-browser_detection.js"></__script>' . "\n" .
'<__script__ language="JavaScript" type="text/javascript" src="'.$config['root_url'].'/modules/PHPLayers/phplayers/libjs/layersmenu-library.js"></__script>' . "\n".
'<__script__ language="JavaScript" type="text/javascript" src="'.$config['root_url'].'/modules/PHPLayers/phplayers/libjs/layerstreemenu-cookies.js"></__script>' . "\n".
'<__script__ language="JavaScript" type="text/javascript" src="'.$config['root_url'].'/modules/PHPLayers/phplayers/libjs/layersmenu.js"></__script>' . "\n";
$content =$this->sample. ereg_replace("<\/head>", $text."</head>", $content);
}
}
function ContentPostRender(&$content)
{
global $gCms;
if (ereg($this->sample, $content))
{
$content = ereg_replace('</__body>', '</__body>' . $_SESSION['layersmenuobj']->getHeader(), $content);
$content = ereg_replace('<__body>', $_SESSION['layersmenuobj']->getFooter() . '<__body>' , $content);
$content = ereg_replace($this->sample,'',$content);
}
}
Damit sind sicher alle unnützen Eintragungen von PHPLayers verschwunden, wenn man PHPLayers installiert hat aber nicht einsetzt.
Nachsatz: In der Daily vom 19.6. hat Wishy das Problem erledigt.