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

ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

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

Re: ACP > Spachvariable > Template

Beitrag von 4seven »

hatte ich schon bemerkt, vielen dank.
noch beim testen bin :)
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: ACP > Spachvariable > Template

Beitrag 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
Antworten

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