Neu Smarty Variablen in cart_dropdown_label.tpl nicht verfügbar

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
Hallo,

ich habe aktuell das Problem, dass ich in der cart_dropdown_label.tpl einige Template-Einstellungen abrufen möchte.
Wenn ich die Seite neu lade, dann sieht auch alles gut aus. Sobald ich aber den Dropdown des Warenkorbs aufrufe, lädt der Bereich neu und in dem Moment gibt es wohl keinen Zugriff mehr auf die Variablen.

Meine tpl sieht wie folgt aus:

Code:
<a href="{get_static_route id='warenkorb.php'}" class="dropdown-toggle" data-toggle="dropdown">
    <span class="fa fa-shopping-cart"></span>
    {if $WarenkorbArtikelPositionenanzahl >= 1}
        <sup class="badge">
            <em>{$WarenkorbArtikelPositionenanzahl}</em>
        </sup>
    {/if}
    {if $Einstellungen.template.headerNavigation.showIconText === 'Y'}<span class="iconText">{lang key="basket" section="global"}</span>{/if}
</a>
<ul class="cart-dropdown dropdown-menu dropdown-menu-right">
    {include file='basket/cart_dropdown.tpl'}
</ul>

Hat jemand von euch einen Rat? Muss ich etwas beachten, wenn Template-Dateien (scheinbar) per Ajax nachgeladen werden?

Die Variablen "$WarenkorbArtikelPositionenanzahl" und "$WarenkorbArtikelPositionenanzahl" bleiben dabei übrigens gefüllt.


Shopversion: 3.2 Community Edition
Server: Lokaler Xampp Server


Vielen Dank!

Tomas
 

Mirko.Schmidt User deaktiviert

Guest
Ich denke mal es handelt sich hier um einen Shop 4 und nicht Shop 3, da die angegebene Datei nur im Shop 4 existiert. Wenn ich mich gerade nicht ganz täusche wird der Mini Warenkorb durch die io_inc.php mit der getBasketItems() Funktion nachträglich bearbeitet. Mit letzterInclude.php wird der Mini Warenkorb aufgebaut. Daran müsste sich dann orientiert werden.
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
Du hast natürlich vollkommen Recht. Ist die Version 4.05. Hatte mich verguckt :/

Das werde ich mir gleich mal anschauen. Ist irgendwie merkwürdig das Verhalten. Ich dachte ich hätte evtl noch Einstellungen vornehmen müssen, damit die $Einstellungen auch in der Ajaxanfrage geladen werden.

Vielen Dank!
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
So, ich habe mir das mal angeschaut. Es scheint so als wären die $Einstellungen in der io_inc.php nicht gefüllt. Ich frage mich nun ob das so Standard ist oder ob auf meinem lokalen Webserver etwas schief läuft.

Hat vielleicht jemand einen Tipp für mich?
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
Vielleicht könnte das jemand für mich testen? Eine Variable aus $Einstellungen in der cart_dropdown_label.tpl einbinden und schauen, ob diese nach auslösen des Dropdowns noch da ist?

Falls die dann noch da sein sollte, stimmt etwas mich meiner Entwicklungsumgebung nicht. Würde die dann einstampfen und einfach einen Shop bei JTL hosten lassen.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
Also wenn ich mich richtig erinnere kannst du da nicht eingreifen da das alles nur per js und nicht über tpls geregelt wird.
Es ist lange her das ich das mal angeschaut habe.
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
@css-umsetzung in der io_inc.php die per Ajax aufgerufen wird, wird die tpl geladen. Es sind auch alle Smarty-Variablen da (Warensumme, WarenkorbText etc.) - nur die $Einstellungen nicht.
Ich habe das jetzt auf einem JTL Server testen können - dort war genau das gleiche Verhalten.

Ich habe mir bereits ein Workaround erarbeitet der mein Problem löst. Ich werde mir das aber trotzdem noch mal im Detail anschauen. Es geht mir weniger darum, dass es nicht geht - sondern eher darum, dass ich nicht verstehe wieso es nicht funktioniert. ;)

Vielen Dank für Eure Beiträge! :)
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
524
Halle
Hallo,
die globale Variable $Einstellungen wird je nach aktuellem Context mal mehr mal weniger gefüllt - jenachdem was gerade an Einstellungsparametern gebraucht wird. Für den Aufruf von getBasketItems über die io.php werden im Core keine weiteren Einstellungsparameter benötigt, sodass die Variable komplett leer bleibt. Wenn man hier eingreifen möchte, so ginge das nur über ein kleines Plugin, das über den Hook
HOOK_IO_HANDLE_REQUEST für den Request {"name":"getBasketItems","params":[null]} die Variabe mit den benötigten Einstellungen füllt. (z.B.
global $Einstellungen = Shop::getSettings([CONF_TEMPLATE]);)
 
  • Gefällt mir
Reaktionen: Tomas

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
69
Lübeck
Der Hammer! Vielen Dank! Werde ich mich die Tage mal ran machen. Ich arbeite mich grad noch in die Templates ein und gehe dann über zu den Plugins. Das hilft mir aber schon sehr weiter.

Ich danke Dir! :D

LG
Tomas