ACP > Spachvariable > Template

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.
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: ACP > Spachvariable > Template

Beitrag 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']), 
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: ACP > Spachvariable > Template

Beitrag 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
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: ACP > Spachvariable > Template

Beitrag 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...
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: ACP > Spachvariable > Template

Beitrag 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
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: ACP > Spachvariable > Template

Beitrag 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 -_-
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: ACP > Spachvariable > Template

Beitrag 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}
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: ACP > Spachvariable > Template

Beitrag 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
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: ACP > Spachvariable > Template

Beitrag von 4seven »

resultat:
klartext > {L_1_DAY}
ebenso {L_LOGIN_LOGOUT}

so langsam werd ich bleed... :roll:
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: ACP > Spachvariable > Template

Beitrag von piero »

also wennschon, dann sollte nichts rauskommen... und sonst hast du vllt vergessen, dein script umzuschreiben ;)
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: ACP > Spachvariable > Template

Beitrag von 4seven »

Hab es jetzt anders gelöst. Bin aber noch am testen und berichte dann.
Antworten

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