Seite 1 von 1

Eigene IF Satements festlegen?

Verfasst: 01.11.2009 15:50
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?

Re: Eigene IF Satements festlegen?

Verfasst: 01.11.2009 17:20
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

Re: Eigene IF Satements festlegen?

Verfasst: 01.11.2009 17:55
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?

Re: Eigene IF Satements festlegen?

Verfasst: 01.11.2009 20:30
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

Re: Eigene IF Satements festlegen?

Verfasst: 01.11.2009 22:04
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üß

Re: Eigene IF Satements festlegen?

Verfasst: 01.11.2009 23:33
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

Re: Eigene IF Satements festlegen?

Verfasst: 02.11.2009 00:17
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*

Re: Eigene IF Satements festlegen?

Verfasst: 02.11.2009 23:52
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' 

Re: Eigene IF Satements festlegen?

Verfasst: 03.11.2009 16:04
von Trash-Master
OK, danke für den Hinweis, das werde ich beachten.

Nochmal besten Dank an alle!

Re: Eigene IF Satements festlegen?

Verfasst: 05.11.2009 18:02
von chris1278
evtl. hilft auch dies hier weiter:

If variablenb selber erstellen