Probleme mit Theme

Begonnen von milhouse76, 18 Februar 2007, 11:21:03

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

milhouse76

Hallo,

wenn ich als Admin angemeldet bin, dann sieht das Theme so aus, wie es sein soll. Wenn ich aber nur normaler User oder Gast bin, dann scheint er die style.css nicht zu laden (siehe Fotos). Ich habe mich jetzt schon dumm und albern gesucht.

Manuel

Foto 1
Foto 2

firstlevel

Hast du mal im Theme vom Forum nachgeschaut ob die Pfade stimmen ?
PragmaMX noch im Einsatz:  Echsen.de

PragmaMX nicht mehr im Einsatz: Dailynet Presseportal * ProCannabis.de * Sport-Tauchen.de *
Gleichgewicht.com

milhouse76

#2
Zitat von: firstlevel am 18 Februar 2007, 23:23:49
Hast du mal im Theme vom Forum nachgeschaut ob die Pfade stimmen ?

Ja, das passt alles. Wie gesagt... als Admin ist alles wie Gold. Nur als User oder Gast geht es nicht.
Jetzt habe ich noch rausgefunden, daß es einmal richtig angezeigt wird, wenn ich die .css-Datei im Verzeichnis dynastyles lösche. Aber sobald die Datei neu angelegt wurde, funktioniert es wieder nicht.

Manuel

milhouse76

Langsam komme ich etwas weiter...
In der Datei Forum/mx_functions.php gibt es eine Funktion "mxSmfPrepareStylesheet".
function mxSmfPrepareStylesheet($smfContent)
{
    global $mxsmf;
    // $smfContent = mxSmfPrepareOutput($smfContent, FALSE);
    preg_match('#(<link[^>]*)' . $mxsmf['path_themes'] . '/([^/]*)/style\.css(?:\?[^"\']*)?([^>]*>)#si', $smfContent, $matches);
    // mxDebugFuncVars($matches);
    if (empty($matches[0])) {
        return $smfContent;
    }
    $themxtheme = mxGetTheme();
    // Pfad/Dateiname für die dynamische style.css
    $dynastyle = 'modules/' . $mxsmf['module_name'] . '/dynastyles/dyna__' . $matches[2] . '__' . $themxtheme . '.css';
    if (MX_IS_ADMIN || isset($_GET['smfstylereset']) || (!is_file($dynastyle))) {
        // den Aufruf von style.css durch den Aufruf von style.php ersetzen
        $dynastyle = 'modules.php?name=' . $mxsmf['module_name'] . '&amp;file=style&amp;cstyle=' . $matches[2] . '&amp;style=' . $themxtheme . '' . ((isset($_GET['smfstylereset'])) ? '&amp;smfstylereset' : '');
    }
    // /// print(MX_BASE_URL.$dynastyle);
    // den Aufruf von style.css durch den Aufruf von style.php ersetzen
    $smfContent = str_replace($matches[0], $matches[1] . $dynastyle . $matches[3], $smfContent);
    return $smfContent;
}


Wenn ich da vor das MX_IS_ADMIN ein Ausrufezeichen setze, dann ist das Verhalten genau umgekehrt. Also alle Gäste und normalen User bekommen das Forum richtig angezeigt, und bei den Admins ist alles im Ärmel.

Leider verstehe ich nicht so ganz, was diese Funktion macht.

Manuel

Roberturix

Wenn ich das richtig verstehe ersetzt diese Funktion das statische style.css durch eine dynamisch generierte - woher auch immer er die werte betieht.
Hast Du schon mal daran gedacht diese Funktion komplett raus zu nehmen und die Werte fest zuzuweisen? :quest

milhouse76

Ich bin jetzt wieder ein stückchen weiter. Ich lasse php4 mit suphp als cgi laufen. Und das ist wohl das Problem. denn wenn ich php4 als Modul laufen lasse, funktioniert alles einwandfrei. Jetzt muß ich nur noch rausfinden warum  :puzzled:

milhouse76

Oh mann... was für eine schwere Geburt :)
Es funktioniert alles, wenn die .css-Datei unter /dynastyles für alle lesbar ist. Warum das bei suPHP so sein muß, weiß ich nicht. Vielleicht weiß ja einer der Admins da besser bescheid.
Ich habe mir nun damit beholfen, daß ich am Ende der Datei style.php nach
    mxChangeFilePerms($dynastyle, "unlock");
    $file = fopen($dynastyle, "w");
    $ok = fwrite($file, $out);
    fclose($file);

noch ein
chmod($dynastyle, 0644);
eingefügt habe.