<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[garden of the multiverse - VIP - Lara]]></title>
		<link>https://garden-of-the-multiverse.de/</link>
		<description><![CDATA[garden of the multiverse - https://garden-of-the-multiverse.de]]></description>
		<pubDate>Mon, 27 Apr 2026 09:23:39 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[SG Kram]]></title>
			<link>https://garden-of-the-multiverse.de/showthread.php?tid=106</link>
			<pubDate>Sat, 07 Dec 2024 11:17:48 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://garden-of-the-multiverse.de/member.php?action=profile&uid=1">Juliette Butterfield</a>]]></dc:creator>
			<guid isPermaLink="false">https://garden-of-the-multiverse.de/showthread.php?tid=106</guid>
			<description><![CDATA[<div class="rezept-seite">
        <div class="rezept-headline">verführerische Wintermarmelade</div>
        <div class="rezept-gesamt">
            <div class="rezept-zutaten">
                <div class="zutaten-titel">Zutaten</div>
                <div class="zutaten-bereich">
                    <div class="bereich-titel">für 4 Gläser á 250ml</div>
                    <ul class="zutaten-liste">
                        <li class="zutat-item">900 g Äpfel</li>
                        <li class="zutat-item">Saft von 1 Zitrome</li>
                        <li class="zutat-item">500 g Gelierzucker (2:1)</li>
                        <li class="zutat-item">1 Msp. Zimt</li>
                    </ul>
                </div>
            </div>
            <div class="rezept-schritte">
                <div class="schritte-titel">Zubereitung</div>
                <div class="schritt-text">Die Gläser vorbereiten. Die äpfel schälen, entkernen und in kline Stücke schneiden. Die Apfelstücke mit Zitronensaft und Gielierzucker in einem großen Topf mischen und zum Kochen bringen. Die Rosinen dazugeben und unter Rühren ca. 4 Minuten sprudelnd kochen lassen. Den Topf von der Herdplatte ziehen und den Zimt unterrühren.<br />
<br />
Die Marmelade nach der Gelierprobe zügig in die vorbereiteten Gläser füllen. Sofort verschließen, dann 5 Minuten auf den Kopf stellen. Kühl und dunkel aufbewahren.</div>
            </div>
        </div>
    </div>]]></description>
			<content:encoded><![CDATA[<div class="rezept-seite">
        <div class="rezept-headline">verführerische Wintermarmelade</div>
        <div class="rezept-gesamt">
            <div class="rezept-zutaten">
                <div class="zutaten-titel">Zutaten</div>
                <div class="zutaten-bereich">
                    <div class="bereich-titel">für 4 Gläser á 250ml</div>
                    <ul class="zutaten-liste">
                        <li class="zutat-item">900 g Äpfel</li>
                        <li class="zutat-item">Saft von 1 Zitrome</li>
                        <li class="zutat-item">500 g Gelierzucker (2:1)</li>
                        <li class="zutat-item">1 Msp. Zimt</li>
                    </ul>
                </div>
            </div>
            <div class="rezept-schritte">
                <div class="schritte-titel">Zubereitung</div>
                <div class="schritt-text">Die Gläser vorbereiten. Die äpfel schälen, entkernen und in kline Stücke schneiden. Die Apfelstücke mit Zitronensaft und Gielierzucker in einem großen Topf mischen und zum Kochen bringen. Die Rosinen dazugeben und unter Rühren ca. 4 Minuten sprudelnd kochen lassen. Den Topf von der Herdplatte ziehen und den Zimt unterrühren.<br />
<br />
Die Marmelade nach der Gelierprobe zügig in die vorbereiteten Gläser füllen. Sofort verschließen, dann 5 Minuten auf den Kopf stellen. Kühl und dunkel aufbewahren.</div>
            </div>
        </div>
    </div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Lesbarkeit erhöhen]]></title>
			<link>https://garden-of-the-multiverse.de/showthread.php?tid=89</link>
			<pubDate>Sat, 22 Jun 2024 12:23:47 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://garden-of-the-multiverse.de/member.php?action=profile&uid=1">Juliette Butterfield</a>]]></dc:creator>
			<guid isPermaLink="false">https://garden-of-the-multiverse.de/showthread.php?tid=89</guid>
			<description><![CDATA[In Rollenspielen steht das Lesen und Schreiben von Texten - zumeist in Romanform - im Fokus. Das bedeutet auch, dass diese Texte möglichst lesbar sein sollten. Dazu gehört allem voran die Schriftgröße, aber auch die Textausrichtung kann dem Auge schmeicheln.<br />
<br />
<h1>Schriftgröße</h1><br />
Hier kommt es nicht auf die Größe per se an, sondern auf die Einheit, die man im CSS angibt. Geben wir die Schriftgröße in Pixeln (<span style="font-style: italic;" class="mycode_i">px</span>) an, ist sie fest und für jeden gleich. Wollen wir das? Nur bedingt.<br />
Idealerweise ermöglicht man, dass Leute über ihre <span style="font-weight: bold;" class="mycode_b">Browsereinstellungen die Schriftgröße</span> nach Belieben anpassen können und das geht nicht mit Pixeln. Dafür haben wir die Einheit <span style="font-style: italic;" class="mycode_i">rem</span> - "root-em". Hier wird die Schriftgröße relativ zum root-Element gesetzt.<br />
<span style="font-weight: bold;" class="mycode_b">Browserstandard ist 16px</span>. D.h. <span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">1rem</span> entspricht <span style="font-style: italic;" class="mycode_i">16px</span></span>, wenn wir nichts an unseren Einstellungen geändert haben. Mögen wir es kleiner, können wir das also individuell in unseren Browsereinstellungen anpassen, genauso wie andere sich die Schriftgröße anpassen können.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>font-size: 1rem;</code></div></div><br />
<span style="font-style: italic;" class="mycode_i">1.5rem</span> sind dann <span style="font-style: italic;" class="mycode_i">20px</span>, denn wir nehmen hier die <span style="font-style: italic;" class="mycode_i">16px</span> mal 1,5. <span style="font-style: italic;" class="mycode_i">2rem</span> sind demnach also <span style="font-style: italic;" class="mycode_i">32px</span> usw.<br />
<br />
Haben wir besonders große Schrift, die einen <span style="font-weight: bold;" class="mycode_b">bestimmten Platz ausfüllen</span> soll, können wir ruhig bei der Einheit <span style="font-style: italic;" class="mycode_i">px</span> bleiben. Auch bei anderen Textelementen, die nicht wirklich gelesen werden sollen und nur <span style="font-weight: bold;" class="mycode_b">gestalterische Elemente</span> sind, kann man bei absoluten Angaben bleiben.<br />
<br />
Da es in unserem Hobby nach wie vor etabliert ist, nicht allzu große Schriften zu wählen, kann ich durchaus verstehen, statt der <span style="font-style: italic;" class="mycode_i">1rem</span> vielleicht nur <span style="font-style: italic;" class="mycode_i">0.9rem</span> anzugeben. Ich würde allerdings empfehlen, dafür <span style="font-style: italic;" class="mycode_i">media-queries</span> einzusetzen und die Schrift bei Auflösungen von über <span style="font-style: italic;" class="mycode_i">1920px</span> Breite auf <span style="font-style: italic;" class="mycode_i">1rem</span> zu setzen.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>@media (min-width: 1930px) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; body {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 1rem;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}</code></div></div><br />
<h1>Browsereinstellungen</h1><br />
<br />
Firefox: <span style="font-weight: bold;" class="mycode_b">Allgemein > Sprache und Erscheinung > Schriftarten & Farben ></span> wahlweise rechts auf <span style="font-weight: bold;" class="mycode_b">Erweitert ></span> rechts unter <span style="font-weight: bold;" class="mycode_b">Mindestschriftgröße</span><br />
Chrome: <span style="font-weight: bold;" class="mycode_b">Darstellung > Schriftgröße</span> oder wahlweise <span style="font-weight: bold;" class="mycode_b">Darstellung > Schriftart anpassen > Mindestgröße</span><br />
<br />
Das Gute an dieser Einstellung ist, dass man so nur die Schriftgröße anpasst. Man muss also nicht in die Seite zoomen und dabei auch alle anderen Elemente vergrößern, sondern verändert wirklich nur die Schriftgröße.<br />
<br />
<h1>Textausrichtung</h1><br />
Beliebt ist die Verwendung von <span style="font-weight: bold;" class="mycode_b">Blocksatz</span>, was ich auch persönlich sehr gerne mag und sowohl ästhetisch ansprechender finde, als auch beim Lesen angenehmer, weil es nicht so unruhig wirkt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>text-align: justify;</code></div></div><br />
<h1>Silbentrennung</h1><br />
Ein <span style="font-weight: bold;" class="mycode_b">Nachteil</span> beim Blocksatz ist, dass zwischen den Wörtern <span style="font-weight: bold;" class="mycode_b">größere Abstände</span> entstehen können. Das sieht manchmal nicht nur doof aus, es wirkt auch irgendwie unordentlich. Das lässt sich aber auch mit CSS beheben, denn die meisten gängigen Browser können Worte einem Algorithmus entsprechend korrekt umbrechen, um gleichmäßige Abstände zu behalten.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>hyphens: auto;<br />
-webkit-hyphens: auto;</code></div></div><br />
Auch wenn manche Browser die Sprache korrekt erkennen mögen, würde ich vorsichtshalber immer die Sprache beim <span style="font-style: italic;" class="mycode_i">html</span>-Element setzen:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;html lang="de"&gt;</code></div></div><br />
Ich würde die Silbentrennung übrigens nicht überall einsetzen, denn gerade bei gestalterischen Elementen kann es sein, dass das doof aussieht. Entsprechend würde ich also die Elemente, in denen die Posts und Infotexte sind, mit der Silbentrennung versehen und es nicht beim <span style="font-style: italic;" class="mycode_i">body</span>-Element tun.]]></description>
			<content:encoded><![CDATA[In Rollenspielen steht das Lesen und Schreiben von Texten - zumeist in Romanform - im Fokus. Das bedeutet auch, dass diese Texte möglichst lesbar sein sollten. Dazu gehört allem voran die Schriftgröße, aber auch die Textausrichtung kann dem Auge schmeicheln.<br />
<br />
<h1>Schriftgröße</h1><br />
Hier kommt es nicht auf die Größe per se an, sondern auf die Einheit, die man im CSS angibt. Geben wir die Schriftgröße in Pixeln (<span style="font-style: italic;" class="mycode_i">px</span>) an, ist sie fest und für jeden gleich. Wollen wir das? Nur bedingt.<br />
Idealerweise ermöglicht man, dass Leute über ihre <span style="font-weight: bold;" class="mycode_b">Browsereinstellungen die Schriftgröße</span> nach Belieben anpassen können und das geht nicht mit Pixeln. Dafür haben wir die Einheit <span style="font-style: italic;" class="mycode_i">rem</span> - "root-em". Hier wird die Schriftgröße relativ zum root-Element gesetzt.<br />
<span style="font-weight: bold;" class="mycode_b">Browserstandard ist 16px</span>. D.h. <span style="font-weight: bold;" class="mycode_b"><span style="font-style: italic;" class="mycode_i">1rem</span> entspricht <span style="font-style: italic;" class="mycode_i">16px</span></span>, wenn wir nichts an unseren Einstellungen geändert haben. Mögen wir es kleiner, können wir das also individuell in unseren Browsereinstellungen anpassen, genauso wie andere sich die Schriftgröße anpassen können.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>font-size: 1rem;</code></div></div><br />
<span style="font-style: italic;" class="mycode_i">1.5rem</span> sind dann <span style="font-style: italic;" class="mycode_i">20px</span>, denn wir nehmen hier die <span style="font-style: italic;" class="mycode_i">16px</span> mal 1,5. <span style="font-style: italic;" class="mycode_i">2rem</span> sind demnach also <span style="font-style: italic;" class="mycode_i">32px</span> usw.<br />
<br />
Haben wir besonders große Schrift, die einen <span style="font-weight: bold;" class="mycode_b">bestimmten Platz ausfüllen</span> soll, können wir ruhig bei der Einheit <span style="font-style: italic;" class="mycode_i">px</span> bleiben. Auch bei anderen Textelementen, die nicht wirklich gelesen werden sollen und nur <span style="font-weight: bold;" class="mycode_b">gestalterische Elemente</span> sind, kann man bei absoluten Angaben bleiben.<br />
<br />
Da es in unserem Hobby nach wie vor etabliert ist, nicht allzu große Schriften zu wählen, kann ich durchaus verstehen, statt der <span style="font-style: italic;" class="mycode_i">1rem</span> vielleicht nur <span style="font-style: italic;" class="mycode_i">0.9rem</span> anzugeben. Ich würde allerdings empfehlen, dafür <span style="font-style: italic;" class="mycode_i">media-queries</span> einzusetzen und die Schrift bei Auflösungen von über <span style="font-style: italic;" class="mycode_i">1920px</span> Breite auf <span style="font-style: italic;" class="mycode_i">1rem</span> zu setzen.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>@media (min-width: 1930px) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; body {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 1rem;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}</code></div></div><br />
<h1>Browsereinstellungen</h1><br />
<br />
Firefox: <span style="font-weight: bold;" class="mycode_b">Allgemein > Sprache und Erscheinung > Schriftarten & Farben ></span> wahlweise rechts auf <span style="font-weight: bold;" class="mycode_b">Erweitert ></span> rechts unter <span style="font-weight: bold;" class="mycode_b">Mindestschriftgröße</span><br />
Chrome: <span style="font-weight: bold;" class="mycode_b">Darstellung > Schriftgröße</span> oder wahlweise <span style="font-weight: bold;" class="mycode_b">Darstellung > Schriftart anpassen > Mindestgröße</span><br />
<br />
Das Gute an dieser Einstellung ist, dass man so nur die Schriftgröße anpasst. Man muss also nicht in die Seite zoomen und dabei auch alle anderen Elemente vergrößern, sondern verändert wirklich nur die Schriftgröße.<br />
<br />
<h1>Textausrichtung</h1><br />
Beliebt ist die Verwendung von <span style="font-weight: bold;" class="mycode_b">Blocksatz</span>, was ich auch persönlich sehr gerne mag und sowohl ästhetisch ansprechender finde, als auch beim Lesen angenehmer, weil es nicht so unruhig wirkt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>text-align: justify;</code></div></div><br />
<h1>Silbentrennung</h1><br />
Ein <span style="font-weight: bold;" class="mycode_b">Nachteil</span> beim Blocksatz ist, dass zwischen den Wörtern <span style="font-weight: bold;" class="mycode_b">größere Abstände</span> entstehen können. Das sieht manchmal nicht nur doof aus, es wirkt auch irgendwie unordentlich. Das lässt sich aber auch mit CSS beheben, denn die meisten gängigen Browser können Worte einem Algorithmus entsprechend korrekt umbrechen, um gleichmäßige Abstände zu behalten.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>hyphens: auto;<br />
-webkit-hyphens: auto;</code></div></div><br />
Auch wenn manche Browser die Sprache korrekt erkennen mögen, würde ich vorsichtshalber immer die Sprache beim <span style="font-style: italic;" class="mycode_i">html</span>-Element setzen:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;html lang="de"&gt;</code></div></div><br />
Ich würde die Silbentrennung übrigens nicht überall einsetzen, denn gerade bei gestalterischen Elementen kann es sein, dass das doof aussieht. Entsprechend würde ich also die Elemente, in denen die Posts und Infotexte sind, mit der Silbentrennung versehen und es nicht beim <span style="font-style: italic;" class="mycode_i">body</span>-Element tun.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Responsivität mit media queries]]></title>
			<link>https://garden-of-the-multiverse.de/showthread.php?tid=88</link>
			<pubDate>Sat, 22 Jun 2024 12:22:34 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://garden-of-the-multiverse.de/member.php?action=profile&uid=1">Juliette Butterfield</a>]]></dc:creator>
			<guid isPermaLink="false">https://garden-of-the-multiverse.de/showthread.php?tid=88</guid>
			<description><![CDATA[In Zeiten von unterschiedlich großen Bildschirmen und der Verwendung von Smartphones wird Responsivität immer wichtiger und ist im Webdesign mittlerweile etablierter Standard. In Foren hat sich das leider noch nicht durchgesetzt und ich persönlich finde so extra Themes, die alle gestalterischen Elemente ausblenden, alles andere als schön. Das Volumen von Datenpaketen für Internet unterwegs ist mittlerweile auch ausreichend groß, dass man weder auf Bilder, noch auf anderen Schnickschnack verzichten muss - Leute spielen unterwegs Spiele, die mehr MB aufbrauchen, als eine Website, und haben am Ende des Monat immer noch was übrig.<br />
<br />
<h1>Vorbereitung für MyBB</h1><br />
<br />
Damit dein Forum auch mobil bei korrekter Auflösung angezeigt wird und man nicht überall heranzoomen und herumschieben muss, gibt es eine kleine Änderung in der [inline-code]headerinclude[/inline-code], die vorgenommen werden muss. Folgende Zeile einfach hinzufügen:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"&gt;</code></div></div><br />
Desweiteren solltest du einmal im CSS folgendes hinzufügen.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>* {<br />
&nbsp;&nbsp;&nbsp;&nbsp;box-sizing: border-box;<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin: 0;<br />
}</code></div></div><br />
Das bewirkt, dass wir gut mit Prozenten arbeiten können und [inline-code]padding[/inline-code] sowie [inline-code]border[/inline-code] nicht obendrauf gerechnet werden, sondern in [inline-code]width[/inline-code] und [inline-code]height[/inline-code] immer einberechnet sind.<br />
D.h. habe ich eine [inline-code]width[/inline-code] von [inline-code]100px[/inline-code] und [inline-code]padding[/inline-code] von [inline-code]20px[/inline-code] bleibt die Breite bei [inline-code]100px[/inline-code] und wir haben einen inneren Abstand von [inline-code]20px[/inline-code]. Hätten wir die Änderung nicht, hätten wir insgesamt [inline-code]120px[/inline-code]. Beim Arbeiten mit Prozenten sehr lästig.<br />
<br />
<h1>media queries</h1><br />
<br />
Responsivität lässt sich nicht bloß dadurch erzielen, dass wir für alles %, rem oder em verwenden, man kann auch weiterhin mit px arbeiten und auf sogenannte <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries" target="_blank" rel="noopener" class="mycode_url">media queries</a> zugreifen. D.h. wir wenden für verschiedene Bildschirm- bzw. Browserfenstergrößen unterschiedliches CSS an. Idealerweise haben wir einmal für alles CSS angegeben und überschreiben dann in den media queries ein paar Dinge für andere Größen.<br />
<br />
<h1>Reihenfolge & Vorgehen</h1><br />
<br />
Nun gibt es zwei unterschiedliche Vorgehensweisen. Wir arbeiten uns vom kleinsten zum größten (mobile first) oder vom größten zum kleinsten. Da Foren in der Regel am Desktop aufgerufen werden, würde ich hier erst mal alles genau darauf anpassen und vielleicht sogar einen gemischten Weg gehen. D.h. ich würde das Theme erst mal auf deine Auflösung anpassen (wahrscheinlich 1920px breit mal 1080px hoch). Und dann würde ich mich einmal hoch und einmal runterarbeiten.<br />
<br />
Heranziehen kann man dabei die Größen von <a href="https://getbootstrap.com/docs/5.2/layout/breakpoints/" target="_blank" rel="noopener" class="mycode_url">Bootstrap</a>. Das erwähne ich deshalb, weil ich es selbst nutze und es sich daher anbietet, das einzuhalten. Wenn man keinen Plan hat, welche Größen man nehmen soll, ist es sicherlich auch gut, das einfach als Orientierung zu nehmen.<br />
<br />
Man kann die media queries direkt dort hinzufügen, wo man das Element definiert hat, man kann es aber auch alles in einem Schwung machen. Ich persönlich mach es beruflich so, dass ich ein Element style und direkt auch für kleinere Größen anpasse, also die media queries direkt beim Element hinzufüge (da benutze ich SCSS statt CSS, es ist also übersichtlicher).<br />
Privat hingegen mache ich es so, dass ich mir im ACP an letzter Stelle eine mobile.css erstelle und dort alle media queries drin habe. Hier entwerfe ich Themes für den Desktop und passe diese erst später und nicht direkt an.<br />
<br />
<h1>Werkzeuge</h1><br />
<br />
Im Browser hat man übrigens ein Werkzeug, mit dem man die Größe anpassen kann, ohne jedes mal das ganze Fenster kleinerziehen zu müssen. Einmal mit Strg + Shift + I den Inspektor öffnen (oder Rechtsklick > Untersuchen) und dann wird ein Fenster geöffnet, bei dem du erst mal dein HTML und CSS ansehen kannst. Der Inspektor kommt aber noch mit einem praktischen Tool: <span style="font-style: italic;" class="mycode_i">Bildschirmgrößen testen</span>. Dafür gibt es recht weit oben ein Symbol, das wie ein Smartphone vor einem Tablet aussieht (oder Strg + Shift + M). Damit kannst du dir deinen Screen innerhalb des Browserfenster zurechtziehen oder auch vorgegebene Größen für bestimmte Tablets oder Smartphones auswählen.<br />
<br />
<h1>Beispiel</h1><br />
<br />
Ich würde in jedem Fall immer mit Prozenten arbeiten, dann muss man nämlich nicht so viel anpassen. Also [inline-code]width: 100%;[/inline-code] ist bei mir absoluter Standard und das einzige, was ich anpasse, ist die [inline-code]max-width[/inline-code]. Das kann dann am Ende so aussehen:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>.container {<br />
&nbsp;&nbsp;width: 100%;<br />
&nbsp;&nbsp;max-width: 1400px;<br />
}<br />
<br />
.content {<br />
&nbsp;&nbsp;width: 100%;<br />
&nbsp;&nbsp;padding: 100px;<br />
}<br />
<br />
/* screens &gt;= 1930px */<br />
@media (min-width: 1930px) {<br />
&nbsp;&nbsp;.container {<br />
&nbsp;&nbsp;&nbsp;&nbsp;max-width: 1600px;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;.content {<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 120px;<br />
&nbsp;&nbsp;}<br />
}<br />
<br />
/* screens &lt; 1400px */<br />
@media (max-width: 1399px) {<br />
&nbsp;&nbsp;.container {<br />
&nbsp;&nbsp;&nbsp;&nbsp;max-width: 1000px;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;.content {<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 80px;<br />
&nbsp;&nbsp;}<br />
}<br />
<br />
/* screens &lt; 1200px */<br />
@media (max-width: 1199px) {<br />
&nbsp;&nbsp;.container {<br />
&nbsp;&nbsp;&nbsp;&nbsp;max-width: 800px;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;.content {<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 60px;<br />
&nbsp;&nbsp;}<br />
}</code></div></div><br />
Das ermöglicht auch, die Reihenfolge bei der Anordnung von Elementen zu verändern, ohne die Elemente selbst zu verschieben. Das geht nämlich ganz einfach mit [inline-code]<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/order?retiredLocale=de" target="_blank" rel="noopener" class="mycode_url">order</a>[/inline-code].]]></description>
			<content:encoded><![CDATA[In Zeiten von unterschiedlich großen Bildschirmen und der Verwendung von Smartphones wird Responsivität immer wichtiger und ist im Webdesign mittlerweile etablierter Standard. In Foren hat sich das leider noch nicht durchgesetzt und ich persönlich finde so extra Themes, die alle gestalterischen Elemente ausblenden, alles andere als schön. Das Volumen von Datenpaketen für Internet unterwegs ist mittlerweile auch ausreichend groß, dass man weder auf Bilder, noch auf anderen Schnickschnack verzichten muss - Leute spielen unterwegs Spiele, die mehr MB aufbrauchen, als eine Website, und haben am Ende des Monat immer noch was übrig.<br />
<br />
<h1>Vorbereitung für MyBB</h1><br />
<br />
Damit dein Forum auch mobil bei korrekter Auflösung angezeigt wird und man nicht überall heranzoomen und herumschieben muss, gibt es eine kleine Änderung in der [inline-code]headerinclude[/inline-code], die vorgenommen werden muss. Folgende Zeile einfach hinzufügen:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"&gt;</code></div></div><br />
Desweiteren solltest du einmal im CSS folgendes hinzufügen.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>* {<br />
&nbsp;&nbsp;&nbsp;&nbsp;box-sizing: border-box;<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin: 0;<br />
}</code></div></div><br />
Das bewirkt, dass wir gut mit Prozenten arbeiten können und [inline-code]padding[/inline-code] sowie [inline-code]border[/inline-code] nicht obendrauf gerechnet werden, sondern in [inline-code]width[/inline-code] und [inline-code]height[/inline-code] immer einberechnet sind.<br />
D.h. habe ich eine [inline-code]width[/inline-code] von [inline-code]100px[/inline-code] und [inline-code]padding[/inline-code] von [inline-code]20px[/inline-code] bleibt die Breite bei [inline-code]100px[/inline-code] und wir haben einen inneren Abstand von [inline-code]20px[/inline-code]. Hätten wir die Änderung nicht, hätten wir insgesamt [inline-code]120px[/inline-code]. Beim Arbeiten mit Prozenten sehr lästig.<br />
<br />
<h1>media queries</h1><br />
<br />
Responsivität lässt sich nicht bloß dadurch erzielen, dass wir für alles %, rem oder em verwenden, man kann auch weiterhin mit px arbeiten und auf sogenannte <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries" target="_blank" rel="noopener" class="mycode_url">media queries</a> zugreifen. D.h. wir wenden für verschiedene Bildschirm- bzw. Browserfenstergrößen unterschiedliches CSS an. Idealerweise haben wir einmal für alles CSS angegeben und überschreiben dann in den media queries ein paar Dinge für andere Größen.<br />
<br />
<h1>Reihenfolge & Vorgehen</h1><br />
<br />
Nun gibt es zwei unterschiedliche Vorgehensweisen. Wir arbeiten uns vom kleinsten zum größten (mobile first) oder vom größten zum kleinsten. Da Foren in der Regel am Desktop aufgerufen werden, würde ich hier erst mal alles genau darauf anpassen und vielleicht sogar einen gemischten Weg gehen. D.h. ich würde das Theme erst mal auf deine Auflösung anpassen (wahrscheinlich 1920px breit mal 1080px hoch). Und dann würde ich mich einmal hoch und einmal runterarbeiten.<br />
<br />
Heranziehen kann man dabei die Größen von <a href="https://getbootstrap.com/docs/5.2/layout/breakpoints/" target="_blank" rel="noopener" class="mycode_url">Bootstrap</a>. Das erwähne ich deshalb, weil ich es selbst nutze und es sich daher anbietet, das einzuhalten. Wenn man keinen Plan hat, welche Größen man nehmen soll, ist es sicherlich auch gut, das einfach als Orientierung zu nehmen.<br />
<br />
Man kann die media queries direkt dort hinzufügen, wo man das Element definiert hat, man kann es aber auch alles in einem Schwung machen. Ich persönlich mach es beruflich so, dass ich ein Element style und direkt auch für kleinere Größen anpasse, also die media queries direkt beim Element hinzufüge (da benutze ich SCSS statt CSS, es ist also übersichtlicher).<br />
Privat hingegen mache ich es so, dass ich mir im ACP an letzter Stelle eine mobile.css erstelle und dort alle media queries drin habe. Hier entwerfe ich Themes für den Desktop und passe diese erst später und nicht direkt an.<br />
<br />
<h1>Werkzeuge</h1><br />
<br />
Im Browser hat man übrigens ein Werkzeug, mit dem man die Größe anpassen kann, ohne jedes mal das ganze Fenster kleinerziehen zu müssen. Einmal mit Strg + Shift + I den Inspektor öffnen (oder Rechtsklick > Untersuchen) und dann wird ein Fenster geöffnet, bei dem du erst mal dein HTML und CSS ansehen kannst. Der Inspektor kommt aber noch mit einem praktischen Tool: <span style="font-style: italic;" class="mycode_i">Bildschirmgrößen testen</span>. Dafür gibt es recht weit oben ein Symbol, das wie ein Smartphone vor einem Tablet aussieht (oder Strg + Shift + M). Damit kannst du dir deinen Screen innerhalb des Browserfenster zurechtziehen oder auch vorgegebene Größen für bestimmte Tablets oder Smartphones auswählen.<br />
<br />
<h1>Beispiel</h1><br />
<br />
Ich würde in jedem Fall immer mit Prozenten arbeiten, dann muss man nämlich nicht so viel anpassen. Also [inline-code]width: 100%;[/inline-code] ist bei mir absoluter Standard und das einzige, was ich anpasse, ist die [inline-code]max-width[/inline-code]. Das kann dann am Ende so aussehen:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>.container {<br />
&nbsp;&nbsp;width: 100%;<br />
&nbsp;&nbsp;max-width: 1400px;<br />
}<br />
<br />
.content {<br />
&nbsp;&nbsp;width: 100%;<br />
&nbsp;&nbsp;padding: 100px;<br />
}<br />
<br />
/* screens &gt;= 1930px */<br />
@media (min-width: 1930px) {<br />
&nbsp;&nbsp;.container {<br />
&nbsp;&nbsp;&nbsp;&nbsp;max-width: 1600px;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;.content {<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 120px;<br />
&nbsp;&nbsp;}<br />
}<br />
<br />
/* screens &lt; 1400px */<br />
@media (max-width: 1399px) {<br />
&nbsp;&nbsp;.container {<br />
&nbsp;&nbsp;&nbsp;&nbsp;max-width: 1000px;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;.content {<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 80px;<br />
&nbsp;&nbsp;}<br />
}<br />
<br />
/* screens &lt; 1200px */<br />
@media (max-width: 1199px) {<br />
&nbsp;&nbsp;.container {<br />
&nbsp;&nbsp;&nbsp;&nbsp;max-width: 800px;<br />
&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;.content {<br />
&nbsp;&nbsp;&nbsp;&nbsp;padding: 60px;<br />
&nbsp;&nbsp;}<br />
}</code></div></div><br />
Das ermöglicht auch, die Reihenfolge bei der Anordnung von Elementen zu verändern, ohne die Elemente selbst zu verschieben. Das geht nämlich ganz einfach mit [inline-code]<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/order?retiredLocale=de" target="_blank" rel="noopener" class="mycode_url">order</a>[/inline-code].]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Fehler und Warnungen: php8]]></title>
			<link>https://garden-of-the-multiverse.de/showthread.php?tid=87</link>
			<pubDate>Sat, 22 Jun 2024 12:22:00 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://garden-of-the-multiverse.de/member.php?action=profile&uid=1">Juliette Butterfield</a>]]></dc:creator>
			<guid isPermaLink="false">https://garden-of-the-multiverse.de/showthread.php?tid=87</guid>
			<description><![CDATA[Hallo und herzlich willkommen zu einer kleinen Erklärung und Hilfestellung bei Fehlern und Warnungen durch php8. MyBB ist mindestens seit <span style="font-weight: bold;" class="mycode_b">Version 1.8.33</span> mit <span style="font-weight: bold;" class="mycode_b">php8</span> kompatibel und es werden seitdem mit jedem Update sowohl Fehler, als auch Warnungen behoben. Spätestens seit <span style="font-weight: bold;" class="mycode_b">Version 1.8.37</span> gibt es auch mit <span style="font-weight: bold;" class="mycode_b">php8.2.9</span> keine Probleme.<br />
<br />
Alles, was nicht funktioniert oder zu unerwünschtem Verhalten führt, fällt unter <span style="font-weight: bold;" class="mycode_b">Fehler</span>.<br />
Alles, was funktioniert und lediglich Meldungen (meist oberhalb) des Forums auswirft, fällt unter <span style="font-weight: bold;" class="mycode_b">Warnungen</span>.<br />
<br />
<h2>Wie verhalte ich mich bei Fehlern?</h2><br />
Werden die Fehler nicht durch etwas, das du selbst geschrieben hast, verursacht, gilt es, diese zu dokumentieren und an die Person weiterzuleiten, die die Funktion implementiert hat. Das kann das MyBB selbst, aber auch ein Plugin sein. Beschreibe, was du getan hast, um auf diesen Fehler zu stoßen und welches Verhalten du eigentlich erwartest. Es ist im Interesse der entwickelnden Person, sich solcher Fehler anzunehmen, also trete ruhig an diejenigen heran. Gibt es keinen Support mehr, also wird weder weiterentwickelt, noch Hilfe geleistet, kannst du dich auch immer an die breite Masse wenden.<br />
<br />
<h2>Wie verhalte ich mich bei Warnungen?</h2><br />
Auch die kannst du den verantwortlichen Personen zukommen lassen, aber es hat in der Regel keine Priorität. Es sind Warnungen, keine Fehler. Alles funktioniert wie es soll, es wird lediglich davor gewarnt, dass etwas nicht den gängigen Standards entsprechend implementiert wurde (in der Zukunft zu Fehlern führen <span style="font-style: italic;" class="mycode_i">kann</span>). Für dich als Person, die das nicht entwickelt hat, kann das im Prinzip egal sein.<br />
<br />
Also, um dich zu beruhigen: Siehst du Warnungen, aber funktioniert alles, kannst du das einfach ignorieren und musst niemanden wild machen, du würdest Fehlermeldungen sehen. Es sieht einfach nur unschön aus, daher folgendes:<br />
<br />
<h2>Logging ein oder aus?</h2><br />
Solange du selbst etwas entwickelst, ist es hilfreich, Fehler zu loggen und anzuzeigen. Bist du allerdings nur nutzende Person, also entwickelst du selbst keine Plugins sowie Funktionen und funktioniert alles, solltest du nichts loggen. Ich würde hier alles ausschalten, damit weder die [inline-code]error.log[/inline-code] vollläuft, noch irgendwas angezeigt wird, wenn dann doch mal eine Warnung dabei ist. Das kannst du in einem Spiegel- und Testforum machen, aber nicht dort, wo aktiv geschrieben wird und Leute deine Seite besuchen.<br />
<br />
<h3>Fehlermeldung bei weißer Seite anzeigen</h3><br />
MyBB erfasst nicht alle Fehlermeldungen. So kann es vorkommen, dass dir einfach eine weiße Seite angezeigt wird und auch nichts in der [inline-code]error.log[/inline-code] steht. Um dir den Fehler anzuzeigen, ändere folgendes in der [inline-code]global.php[/inline-code].<br />
<br />
<span style="font-style: italic;" class="mycode_i">Suche:</span><br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;working_dir </span><span style="color: #007700">= </span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">); <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<span style="font-style: italic;" class="mycode_i">Füge darüber ein:</span><br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'display_errors'</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'display_startup_errors'</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">E_ALL</span><span style="color: #007700">); <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<h2>Warnungen selbst fixen</h2><br />
Manche Personen - mich eingeschlossen - mögen Warnungen nicht, auch wenn man sie getrost ignorieren könnte. Sie stören einfach, wenn man selber etwas entwickelt und dann erst mal filtern muss, welche Warnungen jetzt zum eigenen Plugin gehören und welche nicht (auch muss man deswegen manchmal ewig scrollen - ungünstig).<br />
Daher hier eine kleine Erklärung, wie man Warnungen selbst beheben kann, die häufig vorkommen.<br />
<br />
<h3>[inline-code]Undefined array key 'abc'[/inline-code]</h3><br />
Im Code sieht es so aus:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>[inline-code]abc[/inline-code] ist der [inline-code]key[/inline-code] innerhalb des Arrays und enthält einen Wert ([inline-code]value[/inline-code]). Darauf können wir nur zugreifen, wenn er überhaupt existiert.<br />
<br />
Unser [inline-code]Array[/inline-code] muss also mindestens so aussehen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;variable </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'abc' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'value'</span><span style="color: #007700">); <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Wie checken wir also, ob der [inline-code]key[/inline-code] überhaupt vorhanden ist? Da gibt es eine schöne Funktion, nämlich <a href="https://www.php.net/manual/de/function.isset.php" target="_blank" rel="noopener" class="mycode_url">isset</a>. Bevor wir unsere Variable also nutzen, überprüfen wir, ob es sie gibt, sie also nicht gleich [inline-code]null[/inline-code] ist:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>Oder so, wenn wir nicht [inline-code]isset[/inline-code] verwenden wollen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] !== </span><span style="color: #0000BB">null <br />
</code></div></pre></div></div><br />
Wird die Variable in einer [inline-code]if[/inline-code]-Bedingung verwendet, haben wir es einfach:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">if (</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>wird zu:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">if (isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">])) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Verwenden wir die Variable aber an anderer Stelle, müssen wir das gleiche selber einmal machen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;name </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]; <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>wird zu:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;name </span><span style="color: #007700">= isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]) ? </span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] : </span><span style="color: #DD0000">"fallback"</span><span style="color: #007700">; <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>Das [inline-code]"fallback"[/inline-code] ist das, was angezeigt wird, wenn unsere Variable nicht existiert. Bei einem Namen kann das ein [inline-code]String[/inline-code] sein, an anderen Stellen ist [inline-code]null[/inline-code] oder [inline-code]false[/inline-code] sinnvoller.<br />
<br />
Das Fragezeichen und der Doppelpunkt sind übrigens nur eine Kurzschreibweise für das hier:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;name </span><span style="color: #007700">= </span><span style="color: #DD0000">"fallback"</span><span style="color: #007700">;<br />
<br />
if (isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">])) {<br />
  </span><span style="color: #0000BB">&#36;name </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">];<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><span style="font-style: italic;" class="mycode_i">Also übersetzt:</span> wenn [inline-code]&#36;variable['abc'][/inline-code] vorhanden, dann nimm [inline-code]&#36;variable['abc'][/inline-code] ansonsten [inline-code]"fallback"[/inline-code].<br />
<br />
<h3>[inline-code]Undefined variable &#36;abc[/inline-code]</h3><br />
Das bedeutet, dass die Variable [inline-code]&#36;abc[/inline-code] an einer Stelle verwendet wird, an der sie unbekannt ist. Also bspw. haben wir [inline-code]{&#36;abc}[/inline-code] im Template stehen, aber in der php ist sie nur in einem [inline-code]if[/inline-code]-Scope oder einem [inline-code]while[/inline-code]-Loop vorhanden. Wir müssen sie auch außerhalb einmal beschreiben.<br />
Wenn sie leer sein soll, dann machen wir das bspw. mit einem leeren String:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;abc </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">; <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Im Code sieht es dann etwa so aus:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;abc </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />
<br />
while (...) {<br />
  </span><span style="color: #0000BB">&#36;abc </span><span style="color: #007700">= ...;<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Haben wir [inline-code]&#36;abc[/inline-code] als [inline-code]if[/inline-code]-Bedingung, können wir übrigens wieder mit [inline-code]isset[/inline-code] checken, ob die Variable vorhanden ist:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">if (isset(</span><span style="color: #0000BB">&#36;abc</span><span style="color: #007700">)) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Bei MyBB tritt dieser Fall in der Regel mit [inline-code]while[/inline-code]-Loops in folgendem Kontext auf:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">while (</span><span style="color: #0000BB">&#36;character </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;character_query</span><span style="color: #007700">)) {<br />
  eval(</span><span style="color: #DD0000">"&#092;&#36;character_bit = &#092;""</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;templates</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"irgendeintemplate"</span><span style="color: #007700">).</span><span style="color: #DD0000">"&#092;";"</span><span style="color: #007700">);<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Wie beheben wir das? So:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;character_bit </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />
<br />
while (</span><span style="color: #0000BB">&#36;character </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;character_query</span><span style="color: #007700">)) {<br />
  eval(</span><span style="color: #DD0000">"&#092;&#36;character_bit = &#092;""</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;templates</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"irgendeintemplate"</span><span style="color: #007700">).</span><span style="color: #DD0000">"&#092;";"</span><span style="color: #007700">);<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<h3>Inputs</h3><br />
Was immer mal wieder Probleme bereitet, ist die Art und Weise, wie Inputs angesprochen werden. Das sind die Eingabefelder von Formularen, in HTML sehen die so aus:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;input type="text" name="abc" value="ABC" /&gt;</code></div></div><br />
In Plugins werden sie dann oft folgendermaßen angesprochen, was allerdings zu Warnungen führen kann:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;mybb</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Lösen lässt sich das, indem wir es einfach hiermit ersetzen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;mybb</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_input</span><span style="color: #007700">(</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<h2>Nicht in den Dateien herumwurschteln!</h2><br />
Und weil unsere Änderungen mit jedem Update immer wieder überschrieben werden würden, empfehle ich ganz klar, so etwas mit dem Plugin Patches umzusetzen. Sowohl bei MyBB selbst, als auch bei Plugins, die nicht unsere eigenen sind.<br />
<br />
<hr>
<br />
Dieser Thread ist sowohl eine Ergänzung zu <a href="https://storming-gates.de/showthread.php?tid=1020966" target="_blank" rel="noopener" class="mycode_url">diesem hier</a> als auch eine knappe grobe Anleitung zur Selbsthilfe und Beruhigung der Nerven, wenn das Forum plötzlich ganz viele Warnungen auswirft, die man eigentlich ignorieren könnte. Außerdem bezieht es sich explizit auf php8, während nach wie vor noch viele Foren auf einer 7er Version laufen und es Bedenken bei der Umstellung gibt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Es gibt noch viele andere Wege, Warnungen zu fixen und die hier aufgeführten sind nur Beispiele in den gängigsten Fällen und sollen lediglich als Orientierung dienen. Zum Fixen von Fehlern habe ich hier explizit nichts geschrieben, weil das viel komplexer ist und sich da jeweils ein eigener Thread im Supportbereich anbietet.</span></span>]]></description>
			<content:encoded><![CDATA[Hallo und herzlich willkommen zu einer kleinen Erklärung und Hilfestellung bei Fehlern und Warnungen durch php8. MyBB ist mindestens seit <span style="font-weight: bold;" class="mycode_b">Version 1.8.33</span> mit <span style="font-weight: bold;" class="mycode_b">php8</span> kompatibel und es werden seitdem mit jedem Update sowohl Fehler, als auch Warnungen behoben. Spätestens seit <span style="font-weight: bold;" class="mycode_b">Version 1.8.37</span> gibt es auch mit <span style="font-weight: bold;" class="mycode_b">php8.2.9</span> keine Probleme.<br />
<br />
Alles, was nicht funktioniert oder zu unerwünschtem Verhalten führt, fällt unter <span style="font-weight: bold;" class="mycode_b">Fehler</span>.<br />
Alles, was funktioniert und lediglich Meldungen (meist oberhalb) des Forums auswirft, fällt unter <span style="font-weight: bold;" class="mycode_b">Warnungen</span>.<br />
<br />
<h2>Wie verhalte ich mich bei Fehlern?</h2><br />
Werden die Fehler nicht durch etwas, das du selbst geschrieben hast, verursacht, gilt es, diese zu dokumentieren und an die Person weiterzuleiten, die die Funktion implementiert hat. Das kann das MyBB selbst, aber auch ein Plugin sein. Beschreibe, was du getan hast, um auf diesen Fehler zu stoßen und welches Verhalten du eigentlich erwartest. Es ist im Interesse der entwickelnden Person, sich solcher Fehler anzunehmen, also trete ruhig an diejenigen heran. Gibt es keinen Support mehr, also wird weder weiterentwickelt, noch Hilfe geleistet, kannst du dich auch immer an die breite Masse wenden.<br />
<br />
<h2>Wie verhalte ich mich bei Warnungen?</h2><br />
Auch die kannst du den verantwortlichen Personen zukommen lassen, aber es hat in der Regel keine Priorität. Es sind Warnungen, keine Fehler. Alles funktioniert wie es soll, es wird lediglich davor gewarnt, dass etwas nicht den gängigen Standards entsprechend implementiert wurde (in der Zukunft zu Fehlern führen <span style="font-style: italic;" class="mycode_i">kann</span>). Für dich als Person, die das nicht entwickelt hat, kann das im Prinzip egal sein.<br />
<br />
Also, um dich zu beruhigen: Siehst du Warnungen, aber funktioniert alles, kannst du das einfach ignorieren und musst niemanden wild machen, du würdest Fehlermeldungen sehen. Es sieht einfach nur unschön aus, daher folgendes:<br />
<br />
<h2>Logging ein oder aus?</h2><br />
Solange du selbst etwas entwickelst, ist es hilfreich, Fehler zu loggen und anzuzeigen. Bist du allerdings nur nutzende Person, also entwickelst du selbst keine Plugins sowie Funktionen und funktioniert alles, solltest du nichts loggen. Ich würde hier alles ausschalten, damit weder die [inline-code]error.log[/inline-code] vollläuft, noch irgendwas angezeigt wird, wenn dann doch mal eine Warnung dabei ist. Das kannst du in einem Spiegel- und Testforum machen, aber nicht dort, wo aktiv geschrieben wird und Leute deine Seite besuchen.<br />
<br />
<h3>Fehlermeldung bei weißer Seite anzeigen</h3><br />
MyBB erfasst nicht alle Fehlermeldungen. So kann es vorkommen, dass dir einfach eine weiße Seite angezeigt wird und auch nichts in der [inline-code]error.log[/inline-code] steht. Um dir den Fehler anzuzeigen, ändere folgendes in der [inline-code]global.php[/inline-code].<br />
<br />
<span style="font-style: italic;" class="mycode_i">Suche:</span><br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;working_dir </span><span style="color: #007700">= </span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">); <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<span style="font-style: italic;" class="mycode_i">Füge darüber ein:</span><br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'display_errors'</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'display_startup_errors'</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">E_ALL</span><span style="color: #007700">); <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<h2>Warnungen selbst fixen</h2><br />
Manche Personen - mich eingeschlossen - mögen Warnungen nicht, auch wenn man sie getrost ignorieren könnte. Sie stören einfach, wenn man selber etwas entwickelt und dann erst mal filtern muss, welche Warnungen jetzt zum eigenen Plugin gehören und welche nicht (auch muss man deswegen manchmal ewig scrollen - ungünstig).<br />
Daher hier eine kleine Erklärung, wie man Warnungen selbst beheben kann, die häufig vorkommen.<br />
<br />
<h3>[inline-code]Undefined array key 'abc'[/inline-code]</h3><br />
Im Code sieht es so aus:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>[inline-code]abc[/inline-code] ist der [inline-code]key[/inline-code] innerhalb des Arrays und enthält einen Wert ([inline-code]value[/inline-code]). Darauf können wir nur zugreifen, wenn er überhaupt existiert.<br />
<br />
Unser [inline-code]Array[/inline-code] muss also mindestens so aussehen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;variable </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'abc' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'value'</span><span style="color: #007700">); <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Wie checken wir also, ob der [inline-code]key[/inline-code] überhaupt vorhanden ist? Da gibt es eine schöne Funktion, nämlich <a href="https://www.php.net/manual/de/function.isset.php" target="_blank" rel="noopener" class="mycode_url">isset</a>. Bevor wir unsere Variable also nutzen, überprüfen wir, ob es sie gibt, sie also nicht gleich [inline-code]null[/inline-code] ist:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>Oder so, wenn wir nicht [inline-code]isset[/inline-code] verwenden wollen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] !== </span><span style="color: #0000BB">null <br />
</code></div></pre></div></div><br />
Wird die Variable in einer [inline-code]if[/inline-code]-Bedingung verwendet, haben wir es einfach:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">if (</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>wird zu:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">if (isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">])) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Verwenden wir die Variable aber an anderer Stelle, müssen wir das gleiche selber einmal machen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;name </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]; <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>wird zu:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;name </span><span style="color: #007700">= isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">]) ? </span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] : </span><span style="color: #DD0000">"fallback"</span><span style="color: #007700">; <br />
</span><span style="color: #0000BB"></code></div></pre></div></div>Das [inline-code]"fallback"[/inline-code] ist das, was angezeigt wird, wenn unsere Variable nicht existiert. Bei einem Namen kann das ein [inline-code]String[/inline-code] sein, an anderen Stellen ist [inline-code]null[/inline-code] oder [inline-code]false[/inline-code] sinnvoller.<br />
<br />
Das Fragezeichen und der Doppelpunkt sind übrigens nur eine Kurzschreibweise für das hier:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;name </span><span style="color: #007700">= </span><span style="color: #DD0000">"fallback"</span><span style="color: #007700">;<br />
<br />
if (isset(</span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">])) {<br />
  </span><span style="color: #0000BB">&#36;name </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;variable</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">];<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><span style="font-style: italic;" class="mycode_i">Also übersetzt:</span> wenn [inline-code]&#36;variable['abc'][/inline-code] vorhanden, dann nimm [inline-code]&#36;variable['abc'][/inline-code] ansonsten [inline-code]"fallback"[/inline-code].<br />
<br />
<h3>[inline-code]Undefined variable &#36;abc[/inline-code]</h3><br />
Das bedeutet, dass die Variable [inline-code]&#36;abc[/inline-code] an einer Stelle verwendet wird, an der sie unbekannt ist. Also bspw. haben wir [inline-code]{&#36;abc}[/inline-code] im Template stehen, aber in der php ist sie nur in einem [inline-code]if[/inline-code]-Scope oder einem [inline-code]while[/inline-code]-Loop vorhanden. Wir müssen sie auch außerhalb einmal beschreiben.<br />
Wenn sie leer sein soll, dann machen wir das bspw. mit einem leeren String:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;abc </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">; <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Im Code sieht es dann etwa so aus:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;abc </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />
<br />
while (...) {<br />
  </span><span style="color: #0000BB">&#36;abc </span><span style="color: #007700">= ...;<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Haben wir [inline-code]&#36;abc[/inline-code] als [inline-code]if[/inline-code]-Bedingung, können wir übrigens wieder mit [inline-code]isset[/inline-code] checken, ob die Variable vorhanden ist:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">if (isset(</span><span style="color: #0000BB">&#36;abc</span><span style="color: #007700">)) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Bei MyBB tritt dieser Fall in der Regel mit [inline-code]while[/inline-code]-Loops in folgendem Kontext auf:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
</span><span style="color: #007700">while (</span><span style="color: #0000BB">&#36;character </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;character_query</span><span style="color: #007700">)) {<br />
  eval(</span><span style="color: #DD0000">"&#092;&#36;character_bit = &#092;""</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;templates</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"irgendeintemplate"</span><span style="color: #007700">).</span><span style="color: #DD0000">"&#092;";"</span><span style="color: #007700">);<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Wie beheben wir das? So:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;character_bit </span><span style="color: #007700">= </span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />
<br />
while (</span><span style="color: #0000BB">&#36;character </span><span style="color: #007700">= </span><span style="color: #0000BB">&#36;db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;character_query</span><span style="color: #007700">)) {<br />
  eval(</span><span style="color: #DD0000">"&#092;&#36;character_bit = &#092;""</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;templates</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"irgendeintemplate"</span><span style="color: #007700">).</span><span style="color: #DD0000">"&#092;";"</span><span style="color: #007700">);<br />
} <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<h3>Inputs</h3><br />
Was immer mal wieder Probleme bereitet, ist die Art und Weise, wie Inputs angesprochen werden. Das sind die Eingabefelder von Formularen, in HTML sehen die so aus:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;input type="text" name="abc" value="ABC" /&gt;</code></div></div><br />
In Plugins werden sie dann oft folgendermaßen angesprochen, was allerdings zu Warnungen führen kann:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;mybb</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">[</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">] <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
Lösen lässt sich das, indem wir es einfach hiermit ersetzen:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP-Code:</div><div class="body"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php <br />
&#36;mybb</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_input</span><span style="color: #007700">(</span><span style="color: #DD0000">'abc'</span><span style="color: #007700">) <br />
</span><span style="color: #0000BB"></code></div></pre></div></div><br />
<h2>Nicht in den Dateien herumwurschteln!</h2><br />
Und weil unsere Änderungen mit jedem Update immer wieder überschrieben werden würden, empfehle ich ganz klar, so etwas mit dem Plugin Patches umzusetzen. Sowohl bei MyBB selbst, als auch bei Plugins, die nicht unsere eigenen sind.<br />
<br />
<hr>
<br />
Dieser Thread ist sowohl eine Ergänzung zu <a href="https://storming-gates.de/showthread.php?tid=1020966" target="_blank" rel="noopener" class="mycode_url">diesem hier</a> als auch eine knappe grobe Anleitung zur Selbsthilfe und Beruhigung der Nerven, wenn das Forum plötzlich ganz viele Warnungen auswirft, die man eigentlich ignorieren könnte. Außerdem bezieht es sich explizit auf php8, während nach wie vor noch viele Foren auf einer 7er Version laufen und es Bedenken bei der Umstellung gibt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Es gibt noch viele andere Wege, Warnungen zu fixen und die hier aufgeführten sind nur Beispiele in den gängigsten Fällen und sollen lediglich als Orientierung dienen. Zum Fixen von Fehlern habe ich hier explizit nichts geschrieben, weil das viel komplexer ist und sich da jeweils ein eigener Thread im Supportbereich anbietet.</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SG - Oktoberfest]]></title>
			<link>https://garden-of-the-multiverse.de/showthread.php?tid=19</link>
			<pubDate>Fri, 29 Sep 2023 15:06:00 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://garden-of-the-multiverse.de/member.php?action=profile&uid=2">Clarissa Whitemore</a>]]></dc:creator>
			<guid isPermaLink="false">https://garden-of-the-multiverse.de/showthread.php?tid=19</guid>
			<description><![CDATA[<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS</span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 1</span></span><br />
[of contest titel="Craft Your Cool" bild="" deadline="05.10.2024"]<br />
Erstelle einen schnieken Steckbrief für einen deiner Charaktere! Dein Code sollte alle wichtigen Infos enthalten – Name, Alter, Aussehen (Augenfarbe, Haarfarbe, Größe, Statur & besondere Merkmale), die wichtigsten Momente im Leben und vielleicht ein paar lustige Fakten. Jetzt kommt die Challenge: Binde mindestens zwei Bilder mit ein, die optisch gut zum Steckbrief passen. Das kann ein Porträt des Charakters sein oder etwas Ästhetisches, das zu ihm passt. Die Farben sollten die Stimmung deines Charakters widerspiegeln, also experimentiere mit Farben und Texturen, die das Ganze noch cooler machen!<br />
<br />
<b>Shortfacts:</b><br />
- Steckbrief mit allen wichtigen Infos (Name, Alter, etc.)<br />
- Mindestens 2 Bilder einbinden<br />
- Farben und Texturen passend zum Charakter wählen<br />
- Code Tag gern gesehen<br />
[/of contest]<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 2</span></span><br />
[of contest titel="Post It Like It's Hot" bild="" deadline="12.10.2024"]<br />
Du schreibst coole Posts, aber sie sollen auch gut aussehen? Gestalte eine schicke Postvorlage! Integriere ein interaktives Element, wie zum Beispiel eine hover-Effekt oder einen kleinen animierten Teil, der das Design dynamischer macht. Vielleicht lässt sich der Name des Charakters beim Darüberfahren aufleuchten oder der Hintergrund verändert sich.<br />
<br />
<b>Shortfacts:</b><br />
- Postvorlage<br />
- Interaktives Element (z.B. Hover-Effekt) einbauen<br />
- Code Tag gern gesehen<br />
[/of contest]<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 3</span></span><br />
[of contest titel="Relationship Roulette" bild="" deadline="19.10.2024"]<br />
Unsere Charaktere haben jede Menge Beziehungen – Zeit, die mal richtig aufzuzählen! Erstelle ein Relationübersicht für einen deiner Charaktere, die zeigt, mit wem er gut kann und wen er nicht ausstehen kann. Verwende für jede Art von Beziehung einen eigenen Farbcode oder Symbol, um unterschiedliche Beziehungen darzustellen (mindestens 3 z.B. Positiv, Negativ, Neutralität). Füge zusätzlich eine kleine Legende hinzu, die deine Farbcodes oder Symbole erklärt.<br />
<br />
<b>Shortfacts:</b><br />
- Relationübersicht<br />
- Mindestens 3 Beziehungstypen<br />
- Deutliche Unterscheidung der Beziehungstypen<br />
- Legende für Farbcodes/Symbole <br />
- Code Tag gern gesehen<br />
[/of contest]<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 4</span></span><br />
[of contest titel="Chatty Hour" bild="" deadline="19.10.2024"]<br />
Lust auf ein bisschen Plauderei? Gestalte eine stylische Chat-Vorlage, die das Gefühl eines echten Messenger-Dienstes vermittelt! Integriere Bilder oder Icons der einzelnen Charaktere, damit ihre Persönlichkeiten gleich ins Auge springen. Nutze verschiedene Sprechblasen und Farbänderungen, um die Nachrichten der Charaktere klar zu trennen. Denk daran, das Layout ansprechend und kompakt zu gestalten, sodass es aussieht, als hätte man einen echten Chat geöffnet.<br />
<br />
<b>Shortfacts:</b><br />
- Chat-Vorlage für Dialoge<br />
- Farbänderungen für verschiedene Charaktere verwenden<br />
- Code Tag gern gesehen (Vorschaubild/Verlinkung auf Codepen ist Ordnung)<br />
[/of contest]]]></description>
			<content:encoded><![CDATA[<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS</span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 1</span></span><br />
[of contest titel="Craft Your Cool" bild="" deadline="05.10.2024"]<br />
Erstelle einen schnieken Steckbrief für einen deiner Charaktere! Dein Code sollte alle wichtigen Infos enthalten – Name, Alter, Aussehen (Augenfarbe, Haarfarbe, Größe, Statur & besondere Merkmale), die wichtigsten Momente im Leben und vielleicht ein paar lustige Fakten. Jetzt kommt die Challenge: Binde mindestens zwei Bilder mit ein, die optisch gut zum Steckbrief passen. Das kann ein Porträt des Charakters sein oder etwas Ästhetisches, das zu ihm passt. Die Farben sollten die Stimmung deines Charakters widerspiegeln, also experimentiere mit Farben und Texturen, die das Ganze noch cooler machen!<br />
<br />
<b>Shortfacts:</b><br />
- Steckbrief mit allen wichtigen Infos (Name, Alter, etc.)<br />
- Mindestens 2 Bilder einbinden<br />
- Farben und Texturen passend zum Charakter wählen<br />
- Code Tag gern gesehen<br />
[/of contest]<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 2</span></span><br />
[of contest titel="Post It Like It's Hot" bild="" deadline="12.10.2024"]<br />
Du schreibst coole Posts, aber sie sollen auch gut aussehen? Gestalte eine schicke Postvorlage! Integriere ein interaktives Element, wie zum Beispiel eine hover-Effekt oder einen kleinen animierten Teil, der das Design dynamischer macht. Vielleicht lässt sich der Name des Charakters beim Darüberfahren aufleuchten oder der Hintergrund verändert sich.<br />
<br />
<b>Shortfacts:</b><br />
- Postvorlage<br />
- Interaktives Element (z.B. Hover-Effekt) einbauen<br />
- Code Tag gern gesehen<br />
[/of contest]<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 3</span></span><br />
[of contest titel="Relationship Roulette" bild="" deadline="19.10.2024"]<br />
Unsere Charaktere haben jede Menge Beziehungen – Zeit, die mal richtig aufzuzählen! Erstelle ein Relationübersicht für einen deiner Charaktere, die zeigt, mit wem er gut kann und wen er nicht ausstehen kann. Verwende für jede Art von Beziehung einen eigenen Farbcode oder Symbol, um unterschiedliche Beziehungen darzustellen (mindestens 3 z.B. Positiv, Negativ, Neutralität). Füge zusätzlich eine kleine Legende hinzu, die deine Farbcodes oder Symbole erklärt.<br />
<br />
<b>Shortfacts:</b><br />
- Relationübersicht<br />
- Mindestens 3 Beziehungstypen<br />
- Deutliche Unterscheidung der Beziehungstypen<br />
- Legende für Farbcodes/Symbole <br />
- Code Tag gern gesehen<br />
[/of contest]<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">LMS - Runde 4</span></span><br />
[of contest titel="Chatty Hour" bild="" deadline="19.10.2024"]<br />
Lust auf ein bisschen Plauderei? Gestalte eine stylische Chat-Vorlage, die das Gefühl eines echten Messenger-Dienstes vermittelt! Integriere Bilder oder Icons der einzelnen Charaktere, damit ihre Persönlichkeiten gleich ins Auge springen. Nutze verschiedene Sprechblasen und Farbänderungen, um die Nachrichten der Charaktere klar zu trennen. Denk daran, das Layout ansprechend und kompakt zu gestalten, sodass es aussieht, als hätte man einen echten Chat geöffnet.<br />
<br />
<b>Shortfacts:</b><br />
- Chat-Vorlage für Dialoge<br />
- Farbänderungen für verschiedene Charaktere verwenden<br />
- Code Tag gern gesehen (Vorschaubild/Verlinkung auf Codepen ist Ordnung)<br />
[/of contest]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Avatarpersonen-Wünsche]]></title>
			<link>https://garden-of-the-multiverse.de/showthread.php?tid=1</link>
			<pubDate>Wed, 21 Jun 2023 18:40:02 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://garden-of-the-multiverse.de/member.php?action=profile&uid=1">Juliette Butterfield</a>]]></dc:creator>
			<guid isPermaLink="false">https://garden-of-the-multiverse.de/showthread.php?tid=1</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Wünsche</span><ul class="mycode_list"><li><s>Blake Livley</s> - glow (Hexe)<br />
</li>
<li>Phoebe Tonkin<br />
</li>
<li>Troian Bellisario<br />
</li>
<li><s>Lily James</s> - london<br />
</li>
<li>Crystal Reed <br />
</li>
<li><s>Abigail Cowen</s> - glow (Hexe)<br />
</li>
<li><s>Candice Accola</s> - pocketful<br />
</li>
<li><s>Danielle Rose Russell</s> - pocketful<br />
</li>
<li>Ester Expósito<br />
</li>
</ul>
<br />
<span style="font-style: italic;" class="mycode_i">Vielleicht Avatarpersonen</span><ul class="mycode_list"><li>Elizabeth Lail<br />
</li>
<li>Holland Roden<br />
</li>
<li>Lucy Hale<br />
</li>
<li>Ashley Benson<br />
</li>
<li>Sophie Turner<br />
</li>
</ul>
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Avatarpersonen - Pairs</span><ul class="mycode_list"><li>Candice Accola & Jensen Ackles<br />
</li>
<li>Candice Accola &  Joseph Morgan<br />
</li>
<li>Danielle Rose Russell & Daniel Sharman<br />
</li>
<li>Crystal Reed & Ian Somerhalder<br />
</li>
</ul>
]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Wünsche</span><ul class="mycode_list"><li><s>Blake Livley</s> - glow (Hexe)<br />
</li>
<li>Phoebe Tonkin<br />
</li>
<li>Troian Bellisario<br />
</li>
<li><s>Lily James</s> - london<br />
</li>
<li>Crystal Reed <br />
</li>
<li><s>Abigail Cowen</s> - glow (Hexe)<br />
</li>
<li><s>Candice Accola</s> - pocketful<br />
</li>
<li><s>Danielle Rose Russell</s> - pocketful<br />
</li>
<li>Ester Expósito<br />
</li>
</ul>
<br />
<span style="font-style: italic;" class="mycode_i">Vielleicht Avatarpersonen</span><ul class="mycode_list"><li>Elizabeth Lail<br />
</li>
<li>Holland Roden<br />
</li>
<li>Lucy Hale<br />
</li>
<li>Ashley Benson<br />
</li>
<li>Sophie Turner<br />
</li>
</ul>
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Avatarpersonen - Pairs</span><ul class="mycode_list"><li>Candice Accola & Jensen Ackles<br />
</li>
<li>Candice Accola &  Joseph Morgan<br />
</li>
<li>Danielle Rose Russell & Daniel Sharman<br />
</li>
<li>Crystal Reed & Ian Somerhalder<br />
</li>
</ul>
]]></content:encoded>
		</item>
	</channel>
</rss>