Seite 1 von 1

$template->assign_var() übergibt Variable nicht ans Template

Verfasst: 15.09.2012 16:01
von Chrissi007
Hi zusammen,

ich häng gerade an einem total ärgerlichen Problem fest und komm leider nicht weiter...

ich habe in meiner posting.php folgenden Codeabschnitt eingefügt:

Code: Alles auswählen

if (check_topic_as_news($topic_id))
{
	$template->assign_var('S_TOPIC_IS_NEWS', true);
}
... in meiner styles/prosilver/template/posting_editor.html möchte ich überprüfen, ob die Variable S_TOPIC_IS_NEWS true ist, von daher habe ich folgenden Codeabschnitt in meiner Checkbox eingefügt:

Code: Alles auswählen

<!-- IF S_TOPIC_IS_NEWS -->checked="checked"<!-- ENDIF --> />
Leider kommt bei dieser Abfrage grundsätzlich false raus, obwohl ich schon auch via echo-Ausgaben sichergestellt hab, dass der Codeabschnitt $template->assign_var() auch sicher ausgeführt wird!

Auch wenn ich eine willkürrliche Variable wie {HALLO} ohne jegliche Abfrage assigne, kann ich die zu keinem Zeitpunkt in meiner posting_editor.html aufrufen. Ich steh da gerade irgendwie auf dem Schlauch... :( Vielleicht weiß einer von euch Rat?

Re: $template->assign_var() übergibt Variable nicht ans Temp

Verfasst: 15.09.2012 17:05
von Chrissi007
Ahh... okay...

scheinbar darf man die Funktion $template->assign_var() erst nach dem Aufruf von $user->setup aufrufen. Ich hatte einen kurzen Blick auf https://www.phpbb.de/infos/3.0/xref/nav ... html#setup und $user->setup hat scheinbar auch was mit dem Style zu tun... evtl eine Initierung des Templates? :)

EDIT: Erst nach dieser Zeile funktionierts...

Code: Alles auswählen

$user->setup(array('posting', 'mcp', 'viewtopic'), $post_data['forum_style']);

Re: $template->assign_var() übergibt Variable nicht ans Temp

Verfasst: 18.09.2012 14:20
von gn#36
Dass die Variablen die vorher gesetzt werden nicht gespeichert werden macht für mich zwar keinen Sinn, aber gewisse Dinge im Template hängen durchaus vom User ab, z.B. der Style der dargestellt wird, die Sprache, ...

Normalerweise sollte $user->setup aber eine der ersten Dinge sein, die beim Seitenaufruf durchgeführt werden, daher ist das doch normalerweise nicht problematisch?