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.

Code: Alles auswählen

{L_LOGIN_LOGOUT}
Gebe ich den gleichen Wortlaut aber in ein ACP-Feld ein und pumpe ihn dann durch eine anders lautende Variable zb.

Code: Alles auswählen

{FELD_1}
in das Template, wird es im Klartext dargestellt

also

Code: Alles auswählen

{L_LOGIN_LOGOUT}
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

Code: Alles auswählen

{SLIDE_LOGIN_LOGOUT}
ausgabe > {L_LOGIN_LOGOUT} (leider)

trage ich es manuell an der stelle ein, gehts (logo) :wink:

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) :wink:
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 :P

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) :wink:
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 :P
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

Code: Alles auswählen

'SLIDE_LOGIN_LOGOUT'     =>   '{L_LOGIN_LOGOUT}',
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 :P

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 :oops:

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