Seite 1 von 3
ACP > Spachvariable > Template
Verfasst: 07.01.2009 11:21
von 4seven
Hallo erstmal,
wenn ich eine Sprachvariable im Template gebrauche, wird sie umgesetzt, zb.
Gebe ich den gleichen Wortlaut aber in ein ACP-Feld ein und pumpe ihn dann durch eine anders lautende Variable zb.
in das Template, wird es im Klartext dargestellt
also
Und das, obgleich via echo genau dasselbe ausgegeben wird, wie das, was man händisch im Template eingeben würde.
Hab mir schonmal die Funktion in der acp_modules.php angeguckt, wo man ja auch Variablen (ohne { }) eingeben kann, die dann zb. als Modulnamen geparst werden. Doch blicke ich da nicht ganz durch. Wie stelle ich es also an, das dem System bekannte Spachvariablen (eingetragen in ein ACP-Feld und dann in eine Variable geschickt) im Template auch als Sprachvariable geparst werden.
greez
4seven
Re: ACP > Spachvariable > Template
Verfasst: 07.01.2009 23:17
von piero
komme jetzt nicht ganz nach...
du möchtest im acp, in einem formular eine variable für templates eingeben (zB: {L_LOGIN_LOGOUT}). das sendest du einem php-script. und im script drin möchtest du dann
den inhalt dieser variable auslesen und einer template-variablen zuweisen (und ausgeben)?
dann, den inhalt dieser variable kannst du auslesen und auch mittels echo ausgeben. nur die übergabe an eine template-variable funktioniert nicht.
richtig?
wenn ja bitte die codestelle verlinken

Re: ACP > Spachvariable > Template
Verfasst: 07.01.2009 23:30
von 4seven
die sache ist so gesehen simpel
acp-feld > eintrag >
{L_LOGIN_LOGOUT} (wird bei ok-klick korrekt in
$config['slide_login_logout'] eingetragen)
> functions_slide.php (includiert an rechter stelle in die functions.php)
Code: Alles auswählen
'SLIDE_LOGIN_LOGOUT' => html_entity_decode($config['slide_login_logout']),
> in overall_header.html
ausgabe >
{L_LOGIN_LOGOUT} (leider)
trage ich es manuell an der stelle ein, gehts (logo)

Re: ACP > Spachvariable > Template
Verfasst: 07.01.2009 23:52
von piero
4seven hat geschrieben:ausgabe > {L_LOGIN_LOGOUT} (leider)
trage ich es manuell an der stelle ein, gehts (logo)

was trägst du denn da ein?^^
4seven hat geschrieben:acp-feld > eintrag > {L_LOGIN_LOGOUT} (wird bei ok-klick korrekt in $config['slide_login_logout'] eingetragen)
kann ja nicht korrekt sein, wenn das falsche rauskommt

Re: ACP > Spachvariable > Template
Verfasst: 08.01.2009 00:04
von 4seven
4seven hat geschrieben:ausgabe >
{L_LOGIN_LOGOUT} (leider)
trage ich es manuell an der stelle ein, gehts (logo)

piero hat geschrieben:was trägst du denn da ein?^^
Na dasselbe >
{L_LOGIN_LOGOUT}
Halt nur direkt im Template eingetragen.
4seven hat geschrieben:acp-feld > eintrag > {L_LOGIN_LOGOUT} (wird bei ok-klick korrekt in $config['slide_login_logout'] eingetragen)
piero hat geschrieben:kann ja nicht korrekt sein, wenn das falsche rauskommt

Es landet ja korrekt in der config-tabelle >
{L_LOGIN_LOGOUT} und wird in der overall_header.html durch die Variable
{SLIDE_LOGIN_LOGOUT} auch "korrekt" als
{L_LOGIN_LOGOUT} ausgegeben. Allerdings wird
nicht die Sprachvariable geparst/übersetzt. Und genau das ist das Problem. Ich kenne mich ganz gut mit php(bb) aus, also du kannst schon voraussetzen, das ich genau weiß, was ich tue, bzw. welchen Ansatz ich da gerade verfolge..
Ich hab auch schon
probiert ... und und und ...
Es wird in der overall_header.html (egal, wie ich die Variable generiere) immer nur der Klartext ausgeworfen,
halt
{L_LOGIN_LOGOUT} und nicht die Sprachvariable ausgegeben.
Re: ACP > Spachvariable > Template
Verfasst: 08.01.2009 00:43
von piero
nun ists ein bisschen klarer
das ganze wird wohl nicht zweimal geparst... d.h. du musst den inhalt dieser variable vor der ausgabe schon zuweisen...
erstell dazu in der template class (/inludes/template.php) eine neue methode, die dir von bereits definierten variablen den inhalt zurückgibt...
Code: Alles auswählen
<?php
class template
{
/* ... */
/**
* Get the content from an assigned var
* @param string $varname the varname to search for
* @return mixed false on error, content from the var on success
* @access public
*/
function get_assigned_var($varname)
{
$varname = trim($varname, '{}')
if(isset($this->_rootref[$varname])) {
return $this->_rootref[$varname];
}
return false;
}
/* ... */
}
?>
im script kannst die funktion so benutzen
Code: Alles auswählen
'SLIDE_LOGIN_LOGOUT' => get_assigned_var($config['slide_login_logout']),
must einfach darauf achten, dass {L_LOGIN_LOGOUT} bereits eingetragen ist

Re: ACP > Spachvariable > Template
Verfasst: 08.01.2009 00:48
von 4seven
klasse, das teste ich gleich..
also hier braucht nichts mehr eingetragen werden oder muss ich dort variablen vordefinieren?
Code: Alles auswählen
function get_assigned_var($varname)
{
$varname = trim($varname, '{}')
if(isset($this->_rootref[$varname])) {
return $this->_rootref[$varname];
}
return false;
}
Re: ACP > Spachvariable > Template
Verfasst: 08.01.2009 00:55
von piero
nein, musst nur das eintragen...
in der variable $_rootref werden alle variablen gespeichert, die im template geparst werden...
und eins noch...
das semikolon noch dazuschreiben
Code: Alles auswählen
function get_assigned_var($varname)
{
$varname = trim($varname, '{}'); // <--
if(isset($this->_rootref[$varname])) {
return $this->_rootref[$varname];
}
return false;
}
Re: ACP > Spachvariable > Template
Verfasst: 08.01.2009 00:58
von 4seven
hatte ich schon bemerkt, vielen dank.
noch beim testen bin

Re: ACP > Spachvariable > Template
Verfasst: 08.01.2009 01:07
von 4seven
Code: Alles auswählen
Call to undefined function get_assigned_var() in /usr/export/www/vhosts/funnetwork/hosting/sekuro/phpbb3/includes/functions_slide.php
hab schon einge include_once versuche gemacht, die template.php in der functions_slide.php und umgekehrt.
includiere ich die datei in die template.php gleich hinter der neuen function, kommt
Code: Alles auswählen
syntax error, unexpected T_INCLUDE_ONCE, expecting T_FUNCTION in /usr/export/www/vhosts/funnetwork/hosting/sekuro/phpbb3/includes/template.php on line 56