08.06.2024, 11:30
Hallo zusammen, ich hoffe, ich bin hier richtig. Es geht um kein Plugin sondern eine eigene Modifikation. Da der Fokus hier mMn auf dem PHP-Bereich liegt, habe ich es auch nicht in den Theme-Bereich gepostet. Falls das falsch war, gerne verschieben.
Meine Ausgangssituation:
Ich habe ein mobiles Design erstellt. Wenn das Forum nun mit einem Gerät mit einer Bildschirmbreite X aufgerufen wird (in meinem Beispiel kleiner gleich 500px), möchte ich, dass dieses bevorzugt geladen wird.
Dazu gibt es noch die Bedingung, ob Mitglieder ein bestimmtes Profilfeld angehakt haben, oder nicht und ob es sich um ein Mitglied oder einen Gast handelt.
Folgenden Code habe ich nun fertig gestellt und möchte diesen via Patches einfügen. Ich nehme an, dass ich diesen in die global.php einfügen muss.
Der Code ist vermutlich umständlicher als nötig, aber ich kenne mich noch nicht gut genug aus, daher bitte ich um Verständnis.
Nun habe ich aber folgendes Problem:
Egal ob ich mich ausloggen möchte, einen Beitrag posten möchte oder auch nur ein Thema ansehen möchte, bekomme ich eine weiße Seite und die Aktion wurde nicht durchgeführt.
Ich habe den Code schon gefühlt an alle möglichen Stellen gesetzt, die zumindest für mich Anfänger als sinnvoll schienen (vor und nach "$plugins->run_hooks('global_start');" vor und nach "// Fetch all necessary stylesheets" usw. Auch diverse KI-Tools habe ich bereits bedient, um den Code auf Richtigkeit zu prüfen, aber das Problem bleibt bestehen.
Nun meine Frage: kann mir jemand helfen?
Ist die global.php überhaupt die richtige Datei, oder muss ich den Code oben doch in die headerinclude packen? Oder muss er doch in eine komplett andere Datei? Oder muss ich ihn aufdröseln und kann ihn gar nicht als einen Block einfügen?
An welche Stelle(n) muss ich den Code ansonsten packen?
Ich hatte zwischenzeitlich auch die Vermutung, dass es evtl. an bereits bestehenden Codeänderungen liegt, die damit kollidieren, denn in meinem lokalen Testboard hat alles geklappt (allerdings hat dies eine ältere Version und nicht die gleichen Plugins installiert).
Dazu habe ich euch auch mal meine global.php angehangen.
Zusätzliche Infos:
MyBB Version 1.8.37
PHP Version 7..4.33
Vorab noch zwei Dinge:
1. Das Theme/Plugin GoMobile ist leider nicht kompatibel, daher musste ich eine eigene Lösung finden.
2. Ich habe bereits 2 responsive Designs, es soll also hier nicht um das Thema "Mobiles Design oder doch lieber responsives Design" gehen, sondern darum, was technisch möglich ist.
Ich würde mich über Feedback und Lösungsansätze freuen.
Meine Ausgangssituation:
Ich habe ein mobiles Design erstellt. Wenn das Forum nun mit einem Gerät mit einer Bildschirmbreite X aufgerufen wird (in meinem Beispiel kleiner gleich 500px), möchte ich, dass dieses bevorzugt geladen wird.
Dazu gibt es noch die Bedingung, ob Mitglieder ein bestimmtes Profilfeld angehakt haben, oder nicht und ob es sich um ein Mitglied oder einen Gast handelt.
Folgenden Code habe ich nun fertig gestellt und möchte diesen via Patches einfügen. Ich nehme an, dass ich diesen in die global.php einfügen muss.
Der Code ist vermutlich umständlicher als nötig, aber ich kenne mich noch nicht gut genug aus, daher bitte ich um Verständnis.
PHP-Code:
// Function to set mobile design cookie, weil PHP den Viewport nicht selbst bestimmen kann
function setMobileDesignCookie() {
echo '<script>var mobileDesign = (window.innerWidth <= 500) ? 1 : 0;if (document.cookie.indexOf("mobile_design=" + mobileDesign) == -1) {document.cookie = "mobile_design=" + mobileDesign + "; path=/";location.reload();}</script>';}
setMobileDesignCookie(); // Set the cookie when the page loads, damit die Info gespeichert bleibt
if (isset($_COOKIE['mobile_design']) && $_COOKIE['mobile_design'] == 1) { // Check the set cookie and if the condition is true
if ($mybb->user['uid'] != 0) { // User is logged in
if ($mybb->user['fid25']) { // Profile field is active
$mybb->user['style'] = 29; // Load Mobile Design
} else { // Profile field is not active
$mybb->user['style'] = (int)$mybb->user['style']; // Load Custom Design
}
} else {
if ($mybb->cookies['mybbtheme']) { // User is a guest
$mybb->cookies['mybbtheme'] = 29; // Cookied Design = mobile Design
}
}
} else { // Viewport is larger
if ($mybb->user['uid'] != 0) { // User is logged in
$mybb->user['style'] = (int)$mybb->user['style']; // Load Custom Design
} else { // User is a guest
$mybb->cookies['mybbtheme'] = (int)$mybb->cookies['mybbtheme']; // Load Cookied Design
}
}
Nun habe ich aber folgendes Problem:
Egal ob ich mich ausloggen möchte, einen Beitrag posten möchte oder auch nur ein Thema ansehen möchte, bekomme ich eine weiße Seite und die Aktion wurde nicht durchgeführt.
Ich habe den Code schon gefühlt an alle möglichen Stellen gesetzt, die zumindest für mich Anfänger als sinnvoll schienen (vor und nach "$plugins->run_hooks('global_start');" vor und nach "// Fetch all necessary stylesheets" usw. Auch diverse KI-Tools habe ich bereits bedient, um den Code auf Richtigkeit zu prüfen, aber das Problem bleibt bestehen.
Nun meine Frage: kann mir jemand helfen?
Ist die global.php überhaupt die richtige Datei, oder muss ich den Code oben doch in die headerinclude packen? Oder muss er doch in eine komplett andere Datei? Oder muss ich ihn aufdröseln und kann ihn gar nicht als einen Block einfügen?
An welche Stelle(n) muss ich den Code ansonsten packen?
Ich hatte zwischenzeitlich auch die Vermutung, dass es evtl. an bereits bestehenden Codeänderungen liegt, die damit kollidieren, denn in meinem lokalen Testboard hat alles geklappt (allerdings hat dies eine ältere Version und nicht die gleichen Plugins installiert).
Dazu habe ich euch auch mal meine global.php angehangen.
Zusätzliche Infos:
MyBB Version 1.8.37
PHP Version 7..4.33
Vorab noch zwei Dinge:
1. Das Theme/Plugin GoMobile ist leider nicht kompatibel, daher musste ich eine eigene Lösung finden.
2. Ich habe bereits 2 responsive Designs, es soll also hier nicht um das Thema "Mobiles Design oder doch lieber responsives Design" gehen, sondern darum, was technisch möglich ist.
Ich würde mich über Feedback und Lösungsansätze freuen.