Eigene IF Satements festlegen?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Trash-Master
Mitglied
Beiträge: 211
Registriert: 13.11.2008 21:13

Eigene IF Satements festlegen?

Beitrag von Trash-Master »

Hallo,

ich wollte meinen Usern ermöglichen, das sie über die Einstellungen im UCP gewisse Template-Teile praktisch "ausschalten" können.

Ich dachte dabei an IF Statements im Template ungefähr so:

Code: Alles auswählen

<!-- IF S_VIEW_BLABLA --->CODE<!-- ENDIF -->
Ich hoffe ihr habt einigermaßen verstanden, was ich will. Wie kann ich das realisieren?
phpBB Version: 3.0.5
Style: Prosilver, Prosilver SE
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Eigene IF Satements festlegen?

Beitrag von tas2580 »

Code: Alles auswählen

$template->assign_vars(array(
    'S_VIEW_BLABLA'    => $s_view_blabla,
)); 
Der Variable $s_view_blabla musst du dann eben irgendwo weiter oben in deinem Script einen Wert zuordnen.

Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Trash-Master
Mitglied
Beiträge: 211
Registriert: 13.11.2008 21:13

Re: Eigene IF Satements festlegen?

Beitrag von Trash-Master »

Danke für die Antwort. Das hat mir auf jedenfall schonmal weiter geholfen, aber eine Frage bleibt:

Wie mach ich das denn mit der Wertezuordnung (1 und 0), wenn ich will, dass jeder User das für sich selber in seinem UCP einstellen kann?
phpBB Version: 3.0.5
Style: Prosilver, Prosilver SE
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Eigene IF Satements festlegen?

Beitrag von tas2580 »

Erstmal musst du den Wert in der Datenbank speichern, in deinem Fall würde sich dazu wahrscheinlich die User Tabelle am besten einigen, also lege erstmal in deiner User Tabelle eine neue Spalte "view_blabla" an

Code: Alles auswählen

ALTER TABLE `phpbb_users` ADD `view_blabla` TINYINT( 1 ) NOT NULL DEFAULT '0'
Zugreifen darauf kannst du dann schon mal ganz einfach mit $user->data['view_blabla']

Code: Alles auswählen

$template->assign_vars(array(
    'S_VIEW_BLABLA'    => $user->data['view_blabla'],
)); 
gibt also die Variable ans Template aus.


So und jetzt kommt die Arbeit. Um dem User noch die Einstellung zu ermöglichen erweiterst du am besten die includes/ucp/ucp_prefs.php
suche

Code: Alles auswählen

                    'wordcensor'    => request_var('wordcensor', (bool) $user->optionget('viewcensors')), 
danach einfügen

Code: Alles auswählen

'view_blabla'    => request_var('view_blabla', (int) $user->data['view_blabla']), 
suche

Code: Alles auswählen

                            'user_post_show_days'    => $data['post_st'], 
danach einfügen

Code: Alles auswählen

'view_blabla'    => $data['view_blabla'], 
suche

Code: Alles auswählen

'S_DISABLE_CENSORS'    => $data['wordcensor'], 
danach einfügen

Code: Alles auswählen

'S_VIEW_BLABLA'    => $data['view_blabla'], 

öffne styles/default/template/ucp_prefs_view.html

suche

Code: Alles auswählen

		<!-- IF S_CHANGE_CENSORS -->
			<dl>
				<dt><label for="wordcensor1">{L_DISABLE_CENSORS}:</label></dt>
				<dd>
					<label for="wordcensor1"><input type="radio" name="wordcensor" id="wordcensor1" value="1"<!-- IF S_DISABLE_CENSORS --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> 
					<label for="wordcensor0"><input type="radio" name="wordcensor" id="wordcensor0" value="0"<!-- IF not S_DISABLE_CENSORS --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
				</dd>
			</dl>
		<!-- ENDIF -->
danach einfügen

Code: Alles auswählen

		<dl>
			<dt><label for="view_blabla">{L_VIEW_BLABLA}:</label></dt>
			<dd>
				<label for="view_blabla"><input type="radio" name="view_blabla" id="view_blabla" value="1"<!-- IF S_VIEW_BLABLA --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> 
				<label for="view_blabla"><input type="radio" name="view_blabla" id="view_blabla" value="0"<!-- IF not S_VIEW_BLABLA --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
			</dd>
		</dl>
Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Trash-Master
Mitglied
Beiträge: 211
Registriert: 13.11.2008 21:13

Re: Eigene IF Satements festlegen?

Beitrag von Trash-Master »

Genau das ist es, was ich wollte. Ich werde das gleich mal nachbauen.

Vielen, vielen Dank! Du hast mir wirklich weitergeholfen! :)

Hast du noch eine Idee, wie ich das mit Werten (Zahlen) mache?
Beispiel: Der User soll die Größe von JS Popups selber bestimmen können. Dann müsste es ja im Template Variablen geben, wie z.B.

Code: Alles auswählen

{U_POPUP_WIDTH}
Kannst du mit da noch weiterhelfen?

Beste Grüß
phpBB Version: 3.0.5
Style: Prosilver, Prosilver SE
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Eigene IF Satements festlegen?

Beitrag von tas2580 »

Das ist genau das selbe nur das du

Code: Alles auswählen

<input type="radio" name="view_blabla" id="view_blabla" value="0"<!-- IF not S_VIEW_BLABLA --> checked="checked"<!-- ENDIF --> />
mit

Code: Alles auswählen

<input name="view_blabla" value="{S_VIEW_BLABLA}" class="inputbox autowidth" type="text" />
austauschen muss.


P.S.
Variablen die mit U_ anfangen sind eigentlich immer Links.

Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Trash-Master
Mitglied
Beiträge: 211
Registriert: 13.11.2008 21:13

Re: Eigene IF Satements festlegen?

Beitrag von Trash-Master »

Super, vielen Dank!

Das erste hab ich schon ausprobiert, und es funktioniert einwandfrei. :)

Nur musste ich

Code: Alles auswählen

    'view_blabla'    => request_var('view_blabla', (int) $user->data['view_blabla']), 
abändern auf

Code: Alles auswählen

    'view_blabla'    => request_var('view_blabla', (bool) $user->data['view_blabla']), 
Echt schneller Support hier, du hast mir super weitergeholfen! *daumenhoch*
phpBB Version: 3.0.5
Style: Prosilver, Prosilver SE
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Eigene IF Satements festlegen?

Beitrag von gn#36 »

Als Hinweis: Wenn Zahlen gespeichert werden sollen die mehr als eine Stelle haben solltest du den Datentyp des Tabellenfelds ändern. Nicht:

Code: Alles auswählen

ALTER TABLE `phpbb_users` ADD `view_blabla` TINYINT( 1 ) NOT NULL DEFAULT '0' 
Sondern

Code: Alles auswählen

ALTER TABLE `phpbb_users` ADD `view_blabla` INT( 11 ) NOT NULL DEFAULT '0' 
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Trash-Master
Mitglied
Beiträge: 211
Registriert: 13.11.2008 21:13

Re: Eigene IF Satements festlegen?

Beitrag von Trash-Master »

OK, danke für den Hinweis, das werde ich beachten.

Nochmal besten Dank an alle!
phpBB Version: 3.0.5
Style: Prosilver, Prosilver SE
Benutzeravatar
chris1278
Mitglied
Beiträge: 3848
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Eigene IF Satements festlegen?

Beitrag von chris1278 »

evtl. hilft auch dies hier weiter:

If variablenb selber erstellen
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“