$sBasketAmount wird gecacht?

Hi,

ich habe ein Plugin “Navigation” (basierend zum Teil auf dem AdvancedMenu.

Dort wird sBasketAmount dem View assigned.

 

$menu = $this->getAdvancedMenu($parent, $categoryId, $depth);

        $session = Shopware()->Session();


        $view->assign([
            'snMainCategories' => $snMainCategories,
            'snMenu' => $menu,
            'sBasketQuantity' => isset($session->sBasketQuantity) ? $session->sBasketQuantity : 0,
            'sBasketAmount' => isset($session->sBasketAmount) ? $session->sBasketAmount : 0,
            'sNotesQuantity' => isset($session->sNotesQuantity) ? $session->sNotesQuantity : 0,
            'sUserLoggedIn' => !empty($session->sUserId),
        ]);

Im Template dann entsprechend ausgegeben:
 

{* Warenkorb *}
{block name="frontend_index_checkout_actions_cart"}
.
.
.

  {*$sBasketAmount|currency*} {*s name="Star" namespace="frontend/listing/box_article"*}{*/s*}

.
.
.{/block}

Das funktioniert soweit ordentlich, wie der Shop im Bearbeitungsmodus verwendet wird. Sobald er im Produktivmodus ist, scheint der Wert allerdings gecacht zu werden?!

Für jeden Tip dankbar!
Christian

Hallo Christian,

ich habe dies über ein eigenes Plugin mit Widget-Controller geregelt und diesen Controller in den Cache-Einstellungen exkludiert.
Gerne lasse ich mich auch über eine Alternative belehren :slight_smile:

In etwa so (ungetestet)…

Plugin.php

 'register_Widgets_MyBasketAmount',
        ];
    }

    /**
     * @return string
     */
    public function register_Widgets_MyBasketAmount()
    {
        $this->addTemplateDir();
        return $this->getPath() . '/Controllers/Widgets/MyBasketAmount.php';
    }

    /**
     *
     */
    public function addTemplateDir()
    {
        $this->container->get('template')->addTemplateDir(
            $this->getPath() . '/Views/'
        );
    }

    // ...

/**... */
?>

 

Controllers/Widget/MyBasketAmount.php

View()->assign('basketAmount', 999);
        }
    }

 

Views/widgets/my_basket_amount/index.tpl:

Warenkorb-Wert: {$basketAmount|currency}

 

//Edit: Ach, das wichtigste habe ich natürlich vergessen. Dieses fügst du dann in deinem Template an, um den Warenkorb-Wert einzubinden:

{action module=widgets controller=MyBasketAmount action=index}

Viele Grüße
Alex