Templatevariablen im Widget

Liebes Forum :slight_smile: :slight_smile: ich habe jetzt ein Widget, das einen ungecachten Bereich in mein Template einbettet. Es wird aufgerufen durch {action module=Widgets controller=ExcludeTemplate action=index} und es wird dann der Inhalt der Datei: Plugins\Community\Frontend\ExcludeTemplate\Views\widgets\exclude_template\index.tpl eingebettet. Wie ist das mit Templatevariablen? Ich möchte gerne in dem Widget Variablen aus meinem Template verwenden. Zum Beispiel die Variable {$sCategoryInfo}. Wie kann ich die ins Widget bekommen? Oder geht das gar nicht? Zuerst habe ich versucht, im Template Variablen aus dem Widget verwenden, z.B.: $this->View()->assign(‘templatevariable’, 100); Aber diese Variable kommt nicht im aufrufenden Template nicht an. Geht das vielleicht anders? Und wahrscheinlich würde das eh wieder gecached werden, oder? Liebe Grüße Kerstin

Danke. Bist du sicher, dass da nichts fehlt? Ich habe das gemacht. Im Controller: $sCategoryInfo = Shopware()-\>Config()-\>get('sCategoryInfo'); $this-\>View()-\>assign('sCategoryInfo', $sCategoryInfo); $this-\>View()-\>uncachedTemplateVariable = rand(); und im widget Template: | Kategorie: {$sCategoryInfo.id} | Zufallswert: {$uncachedTemplateVariable} | Der Zufallswert rand() kommt an, $sCategoryInfo.id kommt nicht an. LG Kerstin

Du solltest die Variable über den Smarty Action Tag zuweisen können. Also z.B. {action controller=meinController action=meineAction meineVariable=$sCategoryInfo} Damit sollte diese Variable allerdings auch gecached werden. Wenn Du auch hier einen ungecacheten Wert brauchst, dann musst Du Dir den Wert genauso holen wie es der entsprechende Controller macht.

[quote=“Kerstin83”]$sCategoryInfo.id kommt nicht an.[/quote] $sCategoryInfo ist auch ein string - und du nutzt es als ein Array. Daher gibt smarty einen leeren, nicht existenten Wert aus. Viele Grüße

[quote=“Aquatuning GmbH”][quote=“Kerstin83”]$sCategoryInfo.id kommt nicht an.[/quote] $sCategoryInfo ist auch ein string - und du nutzt es als ein Array. Daher gibt smarty einen leeren, nicht existenten Wert aus. Viele Grüße[/quote] Auf der Detailseite ist es ein String, im Listing ist es ein Array.

auch $sCategoryInfo als string verwendet (also ohne id) kommt nicht an. Und ich habe es auch mit anderen Variablen versucht, zum Beispiel mit $hasEmotion. Kommt alles nicht an. Woran kann das liegen ??? ($sCategoryInfo ist bei mit eigentlich immer ein Objekt/Array. Auch auf der Detailseite. Zumindest wird das in FirePHP (mit Debug) so angezeigt)

nochmal, warum kommt sCategoryInfo nicht an? $sCategoryInfo = Shopware()-\>Config()-\>get('sCategoryInfo'); $this-\>View()-\>assign('sCategoryInfo', $sCategoryInfo); :cry: Wäre schön, wenn jemand das klären könnte LG Kerstin

Hast Du meinen Vorschlag mal probiert?

ja, danke, hat auch geklappt. :slight_smile: Aber ich würde das gerne so allgemein machen (also die Daten von shopware direkt holen). So wie der andere Vorschlag ist (Shopware()->Config()->get(‘sCategoryInfo’)). Wenn das irgendwie geht. LG Kerstin

Wenn das so einfach gehen würde, dann würde der Controller das auch so machen. Hier der relevante Teil aus dem Listing Controller: $requestCategoryId = $this-\>Request()-\>getParam('sCategory'); if ($requestCategoryId && !$this-\>isValidCategoryPath($requestCategoryId)) { throw new Enlight\_Controller\_Exception( 'Listing category missing, non-existent or invalid for the current shop', 404 ); } $categoryContent = Shopware()-\>Modules()-\>Categories()-\>sGetCategoryContent($requestCategoryId); //... $viewAssignments = array( //... 'sCategoryInfo' =\> $categoryContent ); //... $this-\>View()-\>assign($viewAssignments);

1 Like

ok, schau ich mir gleich mal an. Aber was meinte denn benblub mit $var\_xy = Shopware()-\>Config()-\>get('var\_xy'); $this-\>View()-\>assign('var\_xy', $var\_xy); ? oder ist das quatsch? LG Kerstin

Damit kommt man an allgemeinere Einstellungen. Z.B. die Werte aus den Grundeinstellungen. sCategoryInfo gehört da nicht zu.

ah, danke sehr. Ich hatte mich auch schon über das Config() darin gewundert. Das hört sich ja eher nach Konfiguration an als nach Variablen. Dann werde ich mich mal an den Code setzen. Danke nochmal LG Kerstin