Caching für einen div block deaktivieren?

Hallo,

ich möchte gerne abhängig von einem url get Parameter, einen Button einblenden. Wenn im get Parameter „pk_campaign“ das Wort „schultueten“ vorkommt, soll ein erster Button eingeblendet werden. Wenn „geschenke“ vorkommt, soll ein anderer Button eingeblendet werden:

Dazu habe ich im index/index.tpl folgenden Code eingefügt:

{block name='frontend_index_before_page'}

    {* special notification if access is from google shopping *}
    {if $smarty.get.pk_campaign|strstr:"schultueten"}
        <div class="my_topbutton">
            <a href="https://xxx.de" class="btn is--primary is--large is--center">Über 350 süße Schultüten entdecken &nbsp;&nbsp;&nbsp;&nbsp; > </a>
        </div>
    {/if}
    
    {if $smarty.get.pk_campaign|strstr:"geschenke" or $smarty.get.pk_campaign|strstr:"schulsachen"}
        <div class="my_topbutton">
            <a href="https://xxx2.de" class="btn is--primary is--large is--center">Über 1500 Einschulungsgeschenke entdecken &nbsp;&nbsp;&nbsp;&nbsp; > </a>
        </div>
    {/if}

{/block}

Das Problem ist, dass der erste Aufruf der Seite gecached wird und dann immer wieder ausgeliefert wird, egal wie der Inhalt des get Parameters pk_campaign ist.

Kann ich das Caching irgendwie für die div class my_topbutton ausschalten? Oder habt Ihr eine andere Lösung?

Danke und viele Grüsse

Jens

OK, ich konnte das Problem lösen:

Shopware ignoriert per Default das http Parameter „pk_campaign“, so dass nur eine Seite für alle möglichen „pk_campaign“ Werte gecacht wird. Somit wird der erste Aufruf der Seite gecacht.

Man kann diese Verhalten ausschalten, indem man in die Datei config.php folgenden Code kopiert:

'httpcache' => [
        'ignored_url_parameters' => [
        //   'pk_campaign',    // Piwik
           'piwik_campaign',
           'pk_kwd',
           'piwik_kwd',
           'pk_keyword',
           'pixelId',        // Yahoo
           'kwid',
           'kw',
           'adid',
           'chl',
           'dv',
           'nk',
           'pa',
           'camid',
           'adgid',
           'utm_term',       // Google
           'utm_source',
           'utm_medium',
           'utm_campaign',
           'utm_content',
           'gclid',
           'cx',
           'ie',
           'cof',
           'siteurl',
           '_ga',
        ],
    ],

Dann wird der Parameter „pk_campaign“ nicht mehr ignoriert. Jetzt wird zwar für jeden pk_campaign Wert eine komplette Seite in den Cache geschrieben, aber das macht bei uns nichts, weil wir nicht viele Kampagnen pro Seite haben.

Viele Grüsse

Jens