Offcanvas-Warenkorb funktioniert nicht, wenn Warenkorbrabatt der Kundengruppe anwendbar ist

Sobald der Warenkorbwert genug groß ist, um den Warenkorbrabatt anzuwenden, öffnet sich Offcanvas-Warenkorb nicht mehr, stattdessen sehe ich 500-Fehler in Browserkonsole. Es geht dabei um den Rabatt, der man in Einstellungen für Kundengruppen konfigurieren kann. In den Shopware-Logs finde ich keine relevanten Probleme (es gibt einige Probleme, aber sie korrelieren zeitlich gar nicht), ich sehe aber die folgenden Log Einträge in nginx Fehlerlogs:

2021/06/16 19:43:55 [error] 630#630: *1168579 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /var/www/share/www.mydomainname.de/htdocs/testshop/var/cache/production_202105060633/templates/blocks/frontend_MyThemeName_de_DE_1_secure/1c/ea/47/1cea4728d059a468332039b10c70fb9a1224b32b.snippet.index.tpl.php:505
#0 /var/www/share/www.mydomainname.de/htdocs/testshop/var/cache/production_202105060633/templates/blocks/frontend_MyThemeName_de_DE_1_secure/1c/ea/47/1cea4728d059a468332039b10c70fb9a1224b32b.snippet.index.tpl.php(159): content_60ca385bdb7156_06576565(Object(Enlight_Template_Default))
#1 /var/www/share/www.mydomainname.de/htdocs/testshop/custom/plugins/FroshProfiler/Components/Smarty/sysplugins/smarty_internal_templatebase.php(181): content_60ca385be704c9_52922141(Object(Enlight_Template_Default))
#2 /var/www/share/www.mydomainname.de/htdocs/testshop/engine/Library/Enlight/View/Default.php(295): Smarty_Internal_TemplateBase->fetch()
#3 /var/www/share/www.mydomainname.de/htdocs/testsho" while reading response header from upstream, client: [eine.client.ip.addresse], server: _, request: "GET /testshop/checkout/ajaxCart HTTP/2.0", upstream: "fastcgi://unix:/var/run/php7.3-fpm-www.mydomainname.de.sock:", host: "www.mydomainname.de", referrer: "https://www.mydomainname.de/testshop/produktname/a-1133234/"

Was habe ich bereits probiert:

  • Alle Plugins ausschalten
  • Auf Default-Theme umschalten
  • Alle Versandtarten löschen und eine einfache Standart-Versandart erstellen
  • “Erweiterte SQL-Anfrage” in Versandkosten-Modul auf Default zurückgesetzt
  • Alle Risk-Regeln gelöscht

Außerdem habe ich mit Dockware eine frische Installation von Shopware gestartet und dort das Szenario durchgespielt – das Problem gab es nicht.

In welcher Richtung soll ich weiter graben?

Es handelt sich um Showare 5.6.10.

MfG
Roman

Nach weiterer Untersuchung finde ich in 1cea4728d059a468332039b10c70fb9a1224b32b.snippet.index.tpl.php:505 (hier findet der Fehler statt) das folgende:

    <?php echo $_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER]['escapeHtml'][0][0]->escapeHtml($_smarty_tpl->tpl_vars['basketItem']->value['additional_details     ']['attributes']['core']->get("plenty_connector_property_id32"));?>

get() wird also mit „plenty_connector_property_id32“ aufgerufen. Das ist der Name eines Freitext-Feldes, das wir in Verbindung mit Plentymarkets-Connector nutzen. Leider habe ich aktuell nicht viel Verständnis davon, was hier stattfinden, um weiterzumachen.

Die oben erwähnte Zeile 505, entspricht der Zeile in /themes/Frontend/MeinThemeName/frontend/checkout/ajax_cart_item.tpl:

{$basketItem.additional_details.attributes.core->get("plenty_connector_property_id32")|escapeHtml}

Wir haben also, dass

$_smarty_tpl->tpl_vars['basketItem']->value['additional_details     ']['attributes']['core'] == NULL

und daraus leite ich es ab, dass

$basketItem.additional_details.attributes.core == NULL

Hm… $basketItem.additional_details.attributes.core == NULL nur dann, wenn Warenkorbrabatt anwendbar ist? Komisch.

Auch sollte die Stelle etwas anders in Bare aussehen, ich soll noch ein Mal auf Response wechseln und versuchen.

Anscheinend muss dieses Forumthema eigentlich in einem anderen Forum sein. Theme&Design oder Programmierung. Kann man es verschieben?

Wenn ich auf Responsive wieder umstelle, dann bleibt das Problem und es bleibt ähnlich, aber an einer anderen Stelle, nämlich in /var/cache/production_202105060633/templates/frontend_Responsive_de_DE_1_secure/77/c9/e8/77c9e8468c3a4431c3bc31680e055f1e64a80d26.string.php:29

<?php if ($_smarty_tpl->tpl_vars['sBasketItem']->value['additional_details']['attributes']['core']->get("plenty_connector_property_id16")){?>

Es geht wieder darum, dass $_smarty_tpl->tpl_vars[‚sBasketItem‘]->value[‚additional_details‘][‚attributes‘][‚core‘] == NULL.

Was mich wirklich überrascht, ist es, dass die Anpassung am Template wie oben beschrieben mit ‚plenty-connector-idXX‘ – sie dürfte gar nicht auftauchen. Die gibt es weder in Bare noch in Responsive. Wie ist das überhaupt möglich?