# Globale Variablen

**URL:** <https://forum.oxid-esales.com/t/globale-variablen/37732>\
**Category:** Deutsches Forum\
**Created:** [June 17, 2009, 3:12pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732 "2009-06-17T15:12:52Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 17, 2009, 3:12pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/1 "2009-06-17T15:12:52Z")

</div>

Moin,

gibt es eine Möglichkeit Variablen so anzulegen, dass sie in allen Teilen einer Seite gelesen werden?

Spezifisch, ich möchte in \_header.tpl eine Variable setzen, die details.tpl später auswertet. Parm Übergabe via include geht nicht, da der Body nicht includet wird.

😕

Der View müsste doch persistent sein, oder? Variable $oView-\>sColour in \_header.tpl setzen und in details.tpl wieder auslesen?

---

<div class="post-metadata">

**Author:** ![avenger](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/a/9de0a6/32.png) [@avenger](https://forum.oxid-esales.com/u/avenger)\
**Post date:** [June 18, 2009, 6:20am UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/2 "2009-06-18T06:20:04Z")

</div>

[QUOTE=obsidian;8951]Moin,

gibt es eine Möglichkeit Variablen so anzulegen, dass sie in allen Teilen einer Seite gelesen werden?

Spezifisch, ich möchte in \_header.tpl eine Variable setzen, die details.tpl später auswertet. Parm Übergabe via include geht nicht, da der Body nicht includet wird.

😕

Der View müsste doch persistent sein, oder? Variable $oView-\>sColour in \_header.tpl setzen und in details.tpl wieder auslesen?[/QUOTE]  
Oder Smarty bemühen…  
[{assign var=“sColour” value="???"}] in \_header.tpl setzen

Und dann mit [{$sColour}] verwenden.

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 11:45am UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/3 "2009-06-18T11:45:44Z")

</div>

Ist die Variable dann auch in einem anderen Skript definiert? Das ist ja das Problem.

---

<div class="post-metadata">

**Author:** ![avenger](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/a/9de0a6/32.png) [@avenger](https://forum.oxid-esales.com/u/avenger)\
**Post date:** [June 18, 2009, 11:49am UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/4 "2009-06-18T11:49:00Z")

</div>

> [@obsidian;8998](#):
>
> Ist die Variable dann auch in einem anderen Skript definiert? Das ist ja das Problem.

In anderen Template-Dateien…

> Spezifisch, ich möchte in \_header.tpl eine Variable setzen, die details.tpl später auswertet.

Das sollte also funktionieren…

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 12:58pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/5 "2009-06-18T12:58:15Z")

</div>

Schön wärs.  
In Templates die indirekt von header includet werden ist die Variable definiert, aber nicht im Body.

Wie bekomme ich den am einfachsten die Variable in den view gesetzt? assign hustet mir was.

---

<div class="post-metadata">

**Author:** ![avenger](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/a/9de0a6/32.png) [@avenger](https://forum.oxid-esales.com/u/avenger)\
**Post date:** [June 18, 2009, 1:36pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/6 "2009-06-18T13:36:32Z")

</div>

[QUOTE=obsidian;9011]Schön wärs.  
In Templates die indirekt von header includet werden ist die Variable definiert, aber nicht im Body.

Wie bekomme ich den am einfachsten die Variable in den view gesetzt? assign hustet mir was.[/QUOTE]  
Dann mach es auf die harte Tour…

in \_header.tpl:

[{php}]  
$GLOBALS[‘sColor’]=’???’;  
[{/php}]

Wo es verwendet werden soll:

[{php}]  
$this-\>\_tpl\_vars[‘sColor’]=$GLOBALS[‘sColor’];  
[{/php}]

Und dann mit [{$scolor}] verwenden.

Oder:

in \_header.tpl:

[{php}]  
define(‘SCOLOR’,’???’);  
[{/php}]

Wo es verwendet werden soll:

Mit [{$smarty.const.SCOLOR}] verwenden.

---

<div class="post-metadata">

**Author:** ![tobi73de](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/t/46a35a/32.png) [@tobi73de](https://forum.oxid-esales.com/u/tobi73de)\
**Post date:** [June 18, 2009, 1:54pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/7 "2009-06-18T13:54:51Z")

</div>

Problem ist das die \_header.tpl von der details.tpl geladen wird. Umgekehrt funktionierts.

details.tpl: [{assign var=“sColour” value="???"}]

\_header.tpl: [{$sColour}]

Ist zwar keine Lösung des Problems, aber zumindest die wahrscheinliche Ursache.

Mit den php-Varianten gehts.

mfg

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 2:00pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/8 "2009-06-18T14:00:46Z")

</div>

ok, danke. Der Inhalt der Variable wird allerdings von smarty generiert…ist also keine Konstante.  
@tobi73de OIC

Mein Problem ist eigentlich auch nur, dass ich das Farbschema abhängig von der gerade expanded Topkategorie abhängig machen muss. Kann ich die einfach - und vor allem testbar gegen Konstanten- direkt abfragen?

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 2:27pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/9 "2009-06-18T14:27:05Z")

</div>

Heißt das $smarty objekt im oshop anders?  
$smarty-\>get\_template\_vars(‘iActRoot’);  
hustet mir: Call to a member function get\_template\_vars() on a non-object.

---

<div class="post-metadata">

**Author:** ![tobi73de](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/t/46a35a/32.png) [@tobi73de](https://forum.oxid-esales.com/u/tobi73de)\
**Post date:** [June 18, 2009, 2:29pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/10 "2009-06-18T14:29:12Z")

</div>

Wenn ich dich richtig verstehe hatte ich sowas auch mal vor ner Weile probiert. Siehe: [http://www.oxid-esales.com/forum/showthread.php?p=7242](http://www.oxid-esales.com/forum/showthread.php?p=7242)

Ich hab das dann so gelöst:

in der \_header.tpl einfach die id der rootkategorie abgefragt und abhängig davon eine best. CSS-datei geladen

[{if $actCategory-\>oxcategories\_\_oxrootid-\>value == ‘ad5a78decffdfd59f334ba9f356c19bf’}]  
…

das hat funktioniert , Problem war nur das dann in Contentseiten und Wrenkorb das Design wieder auf Default zurückfiel. War im Grunde ne Sackgasse für uns, aber vielleicht ist es das was Du brauchst?

Probieren geht über studieren.

---

<div class="post-metadata">

**Author:** ![m.weinreich](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@m.weinreich](https://forum.oxid-esales.com/u/m.weinreich)\
**Post date:** [June 18, 2009, 2:30pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/11 "2009-06-18T14:30:52Z")

</div>

Spricht denn etwas dagegen, die Variable in der details.tpl vor dem include der \_header.tpl mit leerem Wert zu initialisieren und dann in der \_header.tpl den korrekten Wert zuzuweisen?

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 2:35pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/12 "2009-06-18T14:35:05Z")

</div>

[QUOTE=m.weinreich;9021]Spricht denn etwas dagegen, die Variable in der details.tpl vor dem include der \_header.tpl mit leerem Wert zu initialisieren und dann in der \_header.tpl den korrekten Wert zuzuweisen?[/QUOTE]  
Dann verändert sich der Wert nach dem includen von \_header.tpl trotzdem nicht. Vermutlich ist die Variable dann lokal.

@tobi73de sehr ermutigend…

Was ist mit dem oview? das Objekt ist doch für alle Tpls auf einer Seite das Selbe, wie setze und lese ich da eine Variable aus dem tpl, vorzugsweise ohne den View-Sourcecode zu ändern?

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 2:49pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/13 "2009-06-18T14:49:53Z")

</div>

Danke, Leute!  
Folgende Kombi funktioniert:  
Sender:  
[{php}]  
$GLOBALS[‘iActRoot’] = $this-\>\_tpl\_vars[‘iActRoot’];  
[{/php}]

Empänger:  
[{php}]  
$this-\>\_tpl\_vars[‘iActRoot’]= $GLOBALS[‘iActRoot’];  
[{/php}]

😃

---

<div class="post-metadata">

**Author:** ![tobi73de](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/t/46a35a/32.png) [@tobi73de](https://forum.oxid-esales.com/u/tobi73de)\
**Post date:** [June 18, 2009, 3:02pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/14 "2009-06-18T15:02:50Z")

</div>

schön wenn was funktioniert 🙂 , weiss zwar nich was das macht, aber wenns geht.

was is iActRoot ?

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 3:11pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/15 "2009-06-18T15:11:32Z")

</div>

[QUOTE=tobi73de;9029]schön wenn was funktioniert 🙂 , weiss zwar nich was das macht, aber wenns geht.

was is iActRoot ?

[/QUOTE]

der Name der Variable

---

<div class="post-metadata">

**Author:** ![tobi73de](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/t/46a35a/32.png) [@tobi73de](https://forum.oxid-esales.com/u/tobi73de)\
**Post date:** [June 18, 2009, 3:35pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/16 "2009-06-18T15:35:02Z")

</div>

und was beinhaltet der? einen Integer-Wert ?! 😉

nee im ernst was für ein Wert wird da gesetzt ?

---

<div class="post-metadata">

**Author:** ![obsidian](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/o/51bf81/32.png) [@obsidian](https://forum.oxid-esales.com/u/obsidian)\
**Post date:** [June 18, 2009, 3:43pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/17 "2009-06-18T15:43:19Z")

</div>

i (integer) Act (Aktuelle) Root Kategorie.

Ein Index, der angibt welche der fest auf 5 beschränkten Root-Kategorien gerade aktiv ist. Der wird dann modulo 3 genommen um festzulegen welches Farbschema verwendet wird.

Ist aber eigentlich egal - ich wollte bloss kurz den funktionierenden Code zusammenfassen, falls mal jemand das Problem auch hat und das Forum durchsucht.

---

<div class="post-metadata">

**Author:** ![Schumc](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/s/51bf81/32.png) [@Schumc](https://forum.oxid-esales.com/u/Schumc)\
**Post date:** [January 8, 2014, 3:20pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/18 "2014-01-08T15:20:44Z")

</div>

Hallo,

ich habe OXID 4.5 und wenn ich eine Variable in smarty definiere ( [{assign var=foo value=“hallo”}] ) und in den [{php}] Bereich danach :  
$this-\>getTemplateVars(‘foo’);  
eingebe, um die Variable in php nutzen zu können, gibt der mir folgenden Fehler aus:  
Fatal error: Call to a member function get\_template\_vars() on a non-object  
WIESO ?

Viele Danke für eure Hilfe!

---

<div class="post-metadata">

**Author:** ![Schumc](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/s/51bf81/32.png) [@Schumc](https://forum.oxid-esales.com/u/Schumc)\
**Post date:** [January 8, 2014, 4:05pm UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/19 "2014-01-08T16:05:48Z")

</div>

Hat sich erledigt.  
Danke!

---

<div class="post-metadata">

**Author:** ![eShop\_Source](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/eshop_source/32/359_2.png) [@eShop\_Source](https://forum.oxid-esales.com/u/eShop_Source)\
**Post date:** [January 9, 2014, 9:46am UTC](https://forum.oxid-esales.com/t/globale-variablen/37732/20 "2014-01-09T09:46:24Z")

</div>

[QUOTE=Schumc;137600]Hat sich erledigt.  
Danke![/QUOTE]

lass uns doch bitte alle schlau werden und poste Deine Lösung … ist ja der SInn des Forums.

[Next page](https://forum.oxid-esales.com/t/globale-variablen/37732.md?page=2)
