Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Style über Bilder ändern
#1
Hallo,

Statt dem typischen Style Changer würde ich in meinem Forum gerne einbauen, dass die User die Styles ändern können, indem sie auf entsprechende Bilder klicken. Ich würde also im Footer ein blaues Bild einbauen und sobald darauf geklickt wird, sollte sie sich die Ansicht auf den blauen Style umstellen.

Meine Frage dazu wäre jetzt, ob das so überhaupt möglich ist, da der Style Changer ja über das folgende definiert ist. 

Code:
<select name="{$name}" onchange="MyBB.changeTheme();">
<optgroup label="{$lang->select_theme}">
{$themeselect_option}
</optgroup>
</select>

Mir geht es eben darum, dass ich ganz bewusst einstellen möchte, dass wenn man auf Bild A klickt, eben Option 2 aus dem Style Changer ausgegeben wird. Ist sowas möglich und wenn ja, wie? 

Vielen Dank!
Zitieren
#2
Ja, das ist möglich.
Man kann die entsprechenden Templates so umbauen, dass keine <select>-Box mit Optionen mehr generiert wird - stattdessen eine separate Schaltfläche für jedes Theme, die mittels CSS beliebig formatiert werden kann.

Ändere folgende Templates...

- footer_themeselect # Das übergeordnete Formularfeld
- footer_themeselector # Die select-Box
- usercp_themeselector_option # Die einzelnen Optionen der select-Box, dieses Template wird rekursiv für jede Option (jedes einzelne Theme) benutzt

... wie folgt:

footer_themeselect:
Code:
<div class="theme">
{$theme_options}
</div>
Das übergeordnete Form muss hier entfernt werden, sowie alles unnötige.

footer_themeselector:
Code:
<span>{$lang->select_theme}"></span>
{$themeselect_option}
Das <select> kommt gänzlich weg. Stattdessn gibt es nur die modifizierten Optionen.

usercp_themeselector_option:
Code:
<form method="POST" action="{$theme_redirect_url['location']}" id="theme_select">
{$theme_redirect_url['form_html']}
<input type="hidden" value="{$theme['tid']}" />
<input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
<input type="submit" name="{$theme['name']}" class="{$theme['tid']}" />
</form>
Hier werden anstelle von select-Optionen unabhängige Formulare für jedes Theme mit einer eigenen submit-Schaltfläche versehen.
Die einzelnen Buttons können beispielsweise mittels CSS und der Klasse ".mytheme_2 { ... }" separat formatiert werden.2 entspricht hier der Theme ID ({$theme['tid']}).

Das ganze würde auch mit Radio-Buttons funktionieren, dann wäre nur ein übergeordnetes Form nötig. Radio-Buttons ließen sich ebenfalls individuell formatieren.

Alles nicht getestet - aber prinzipiell so zu realisieren. Für die Inspiration zur Umsetzung reicht's Wink
Würde mich über eine Rückmeldung freuen...

[ExiTuS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#3
Hallo, 

vielen Dank für die Hilfe. Ich habe das soweit in meinem Board eingebaut, allerdings wird, sobald ich auf Submit drücke, der Style nicht gewechselt, sondern der aktuelle Style neu geladen... 
Ebenso wird mir dann über die Untersuchen-Funktion auch angezeigt, dass eben dieser Style neu geladen werden soll  Sad

Hättest du da vielleicht nochmal einen Tipp?

Viele Grüße,
Eule
Zitieren
#4
Oups! Dann wird es sicher nötig sein, sich weiterhin der originalen JavaScript-Funktion zu bedienen:
Original in footer_themeselector: <select name="{$name}" onchange="MyBB.changeTheme();">

Baue in deinen Button, folgendes ein:
<input ... onclick="MyBB.changeTheme();">

Eventuell könnte das schon die Lösung sein.

[ExiTuS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#5
Hallo nochmal, 

leider hat das so auch nicht funktioniert. Wieso weiß ich auch nicht so recht. Letztlich wurde das Problem nun aber über ein Plugin gelöst. Trotzdem vielen Dank für die Hilfe!
Zitieren