Seite 2 von 3

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 01:12
von piero
nochmal was vergessen^^ (naja ist frühmorgens...)

die funktion wird natürlich so aufgerufen:

Code: Alles auswählen

$template->get_assigned_var($var)
folglich:

Code: Alles auswählen

'SLIDE_LOGIN_LOGOUT'     => $template->get_assigned_var($config['slide_login_logout']), 

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 01:34
von 4seven
Jetzt wird es zwar nicht mehr im Klartext ausgeworfen, aber dafür leer.

includes/template.php

Code: Alles auswählen

		    function get_assigned_var($varname) 
        {
            $varname = trim($varname, '{}');
            
            if(isset($this->_rootref[$varname])) {
                return $this->_rootref[$varname];
            }
            
            return false;
        }  		
}
?>
Muss da noch was extra includiert werden?

habe es jetzt so in meine datei includes/functions_slide.php rein

Code: Alles auswählen

<?php

if (!defined('IN_PHPBB'))
{
    exit;
}

global $config, $user, $auth, $template;

include_once($phpbb_root_path . 'includes/template.' . $phpEx); 
weiter unten dann

Code: Alles auswählen

'SLIDE_LOGIN_LOGOUT'      =>  $template->get_assigned_var($config['slide_login_logout']), 
ACP-Feld > {L_LOGIN_LOGOUT}

Testresultat:

Code: Alles auswählen

echo $template->get_assigned_var($config['slide_login_logout']); > LEER
echo $config['slide_login_logout']; > KLARTEXT
echo html_entity_decode($config['slide_login_logout']); > KLARTEXT

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 02:22
von piero
hmm....

grrr... -.-
ich sehe gerade, dass die variable {U_LOGIN_LOGOUT} in der funktion page_header() steckt...
folglich darf diese funktion erst nach dem aufruf von page_header() ausgeführt werden :/
es sein denn du würdest das system ein wenig umbauen^^ (variablen schon beim script start setzen)


bevor ich jetzt weiter blödsinn laber geh ich mal ins bettchen...

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 02:29
von 4seven
Habe es jetztmal mit einer ganz normalen Sprachvariable getestet

common.php

Code: Alles auswählen

	'1_DAY'			=> '1 Tag',
also eintrag ins acp-feld > {1_DAY}, alternativ {L_1_DAY}

gleiches resultat > im template > leer

der weg scheint mir aber der richtige ansatz zu sein...

dann guts nächtle

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 03:08
von piero
bei mir funktionierts wenn ichs testweise zuunterst in der common.php platzier... (wirft zwar einen haufen fehlermeldungen, aber egal^^)

Code: Alles auswählen

$template->assign_vars(array(
    'EXAMPLE_VAR'    => "testest<br />",
));
page_header();
echo $template->get_assigned_var('{EXAMPLE_VAR}');
echo $template->get_assigned_var('{U_LOGIN_LOGOUT}');
 
ausgabe:

Code: Alles auswählen

(fehlermeldungen)
testest
./ucp.php?mode=logout 
(rest der seite)
4seven hat geschrieben:gleiches resultat > im template > leer
prüf mal, ob die variable wirklich leer ist oder false (in php sieht ein leerer string gleich aus wie false ;) )

Code: Alles auswählen

echo ($template->get_assigned_var($config['slide_login_logout'])===false) ? 'false' : 'leer'; 
wenn false:
- (sehr wahrscheinlich) die language variablen werden auch erst nach aufruf von page_header() gesetzt...
- die variable wurde nicht eingetragen
- irgendwo ein schreibfehler
- du führst die abfrage vor dem eintragen der variable durch



thx, aber ich kanns irgendwie nicht lassen -_-

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 03:25
von 4seven
danke für dein mit-fiebern^^
prüf mal, ob die variable wirklich leer ist oder false (in php sieht ein leerer string gleich aus wie false ;) )
die prüfung ergab > false
- (sehr wahrscheinlich) die language variablen werden auch erst nach aufruf von page_header() gesetzt...
was wäre dann die lösung?
- die variable wurde nicht eingetragen
ist ausgeschlossen..
- irgendwo ein schreibfehler
ebenso..
- du führst die abfrage vor dem eintragen der variable durch
abfragen tu ich in dem sinne ja nichts, ich trage nur etwas ein (in dem falle in die config-tabelle via acp) und lese aus (und das jeweils 250 fach überprüft *g). in dem falle halt testweise (um fehlerquellen auszuschließen) aus der boardweit verfügbaren language/de/common.php > {1_DAY}, alternativ {L_1_DAY} (also eine völlig simple sprachvariable.)

Code: Alles auswählen

   '1_DAY'         => '1 Tag',
kurz nochmal der "versuchsaufbau":

template.php

Code: Alles auswählen

          function get_assigned_var($varname)
        {
            $varname = trim($varname, '{}');
           
            if(isset($this->_rootref[$varname])) {
                return $this->_rootref[$varname];
            }
           
            return false;
        }        
}
?>

function_slide.php

Code: Alles auswählen

<?php

if (!defined('IN_PHPBB'))
{
    exit;
}

global $config, $template;

include_once($phpbb_root_path . 'includes/template.' . $phpEx);

$template->assign_vars(array(    
'SLIDE_LOGIN_LOGOUT'      =>  $template->get_assigned_var($config['slide_login_logout'])
    ));
?>
diese includiert in die functions.php (damit boardweit verfügbar)

Code: Alles auswählen

        include_once($phpbb_root_path . 'includes/functions_slide.' . $phpEx);

    // The following assigns all _common_ variables that may be used at any point in a template.
    $template->assign_vars(array( 
dann im template (overall_header.html) so eingesetzt:
{SLIDE_LOGIN_LOGOUT} .. mit dem bekannten derzeitigem ergebnis > leer (aber false im code-sinne)

----------------------

der ansatz: function_slide.php ohne vorher genannten template.php - eintrag und ohne deren include_once:

Code: Alles auswählen

<?php

if (!defined('IN_PHPBB'))
{
    exit;
}

global $config, $template;

$template->assign_vars(array(    
'SLIDE_LOGIN_LOGOUT'      =>  html_entity_decode($config['slide_login_logout'])
    ));
?>
führt im im template (overall_header.html) so eingesetzt:
{SLIDE_LOGIN_LOGOUT} zu einer ausgabe im klartext, also {1_DAY}, bzw. {L_1_DAY}

Re: ACP > Spachvariable > Template

Verfasst: 08.01.2009 23:11
von piero
so, nun bin ich in einem einigermassen brauchbaren zustand...^^

mittlerweile hab ich rausgefunden, dass die sprachvariablen nur eingebunden werden, wenn sie auch benötigt werden im template... jetzt müssen wir nur noch den codeschnipsel finden, der dafür verantwortlich ist, die sprachvariablen einzubinden... dann haben wir die sprachvariablen in unserer gewalt :P

4seven hat geschrieben:diese includiert in die functions.php (damit boardweit verfügbar)

Code: Alles auswählen

        include_once($phpbb_root_path . 'includes/functions_slide.' . $phpEx);

    // The following assigns all _common_ variables that may be used at any point in a template.
    $template->assign_vars(array( 
setz dein include eine anweisung weiter runter (zeile ~3758)... damit wäre dann auch das problem mit der variablen {L_LOGIN_LOGOUT} gelöst ^^

4seven hat geschrieben:danke für dein mit-fiebern^^
np... jetzt will ichs auch wissen wies funktioniert :D

Re: ACP > Spachvariable > Template

Verfasst: 09.01.2009 01:04
von 4seven
resultat:
klartext > {L_1_DAY}
ebenso {L_LOGIN_LOGOUT}

so langsam werd ich bleed... :roll:

Re: ACP > Spachvariable > Template

Verfasst: 09.01.2009 19:37
von piero
also wennschon, dann sollte nichts rauskommen... und sonst hast du vllt vergessen, dein script umzuschreiben ;)

Re: ACP > Spachvariable > Template

Verfasst: 09.01.2009 23:02
von 4seven
Hab es jetzt anders gelöst. Bin aber noch am testen und berichte dann.