# Random Logo - Cache - Smarty Function

**URL:** <https://forum.shopware.com/t/random-logo-cache-smarty-function/46434>\
**Category:** Programmierung\
**Created:** [21. Juni 2017 um 10:19 UTC](https://forum.shopware.com/t/random-logo-cache-smarty-function/46434 "2017-06-21T10:19:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![fisfutta](https://avatars.discourse-cdn.com/v4/letter/f/3ec8ea/32.png) [@fisfutta](https://forum.shopware.com/u/fisfutta)\
**Post date:** [21. Juni 2017 um 10:19 UTC](https://forum.shopware.com/t/random-logo-cache-smarty-function/46434/1 "2017-06-21T10:19:34Z")

</div>

Hallo,

ich möchte im logo-container ein random Logo ausspielen. die Logos haben alle den gleichen Namen nur eine 1-19 am Ende. Diese Zahl möchte ich random generieren und sie soll nicht bei jedem Seitenaufruf neu generiert werden sondern erst beim Browser schließen und wieder öffnen.

Aktuell habe ich eine Smarty function im \_private/smarty erstellt die per PHP die Random Nummer generiert und in die $\_SESSION schreibt und die random nummer zurückgibt. Wenn der hhtp cache deaktiviert ist funktioniert das auch wunderbar allerdings sobald der http cache aktiv ist bekomme ich bei manchen Seiten eine neue random nummer zurück. Das soll ja nicht so sein. Jemand eine Idee wie man das auf schnellsten Wege machen kann?

&nbsp;

grüße und danke

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [21. Juni 2017 um 10:25 UTC](https://forum.shopware.com/t/random-logo-cache-smarty-function/46434/2 "2017-06-21T10:25:59Z")

</div>

Wer zuerst die Seite aufruft, der “cached” zuerst - also können, wenn mehere Leute verschiedene Seiten aufrufen, auch verschiedene “Random” ausgeliefert werden, weil ja schon generiert.  
Da hilft wie immer an dieser Stelle: Das Logo via action-tag einbinden, und die Logic für das Logo in ein Widget auslagern.[Shopware HTTP cache](https://developers.shopware.com/developers-guide/http-cache/#action-tag)

---

<div class="post-metadata">

**Author:** ![fisfutta](https://avatars.discourse-cdn.com/v4/letter/f/3ec8ea/32.png) [@fisfutta](https://forum.shopware.com/u/fisfutta)\
**Post date:** [21. Juni 2017 um 10:31 UTC](https://forum.shopware.com/t/random-logo-cache-smarty-function/46434/3 "2017-06-21T10:31:33Z")

</div>

Aber ich dachte die Smarty functions werden nicht gecached. Ist das falsch? Ich schreibe es ja in die SESSION des users.

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [21. Juni 2017 um 10:51 UTC](https://forum.shopware.com/t/random-logo-cache-smarty-function/46434/4 "2017-06-21T10:51:10Z")

</div>

Wenn eine Seite einmal gerendert wird und nicht vom Cache ausgenommen ist, ist sie gerendert und im Cache - da kommt Smarty erst gar nicht mehr zum Zug.  
So Sachen z.B. wie der „Warenkorbbutton“ im Header werden ja über ein Widget nachgeladen.

Wenn Du eine neue Randomnummer „bekommst“, muss diese ja nicht unbedingt von Smarty/aus der Session kommen, sondern es könnte eine bereits durch einen dritten aufgerufene Seite aus dem Cache sein.

---

<div class="post-metadata">

**Author:** ![fisfutta](https://avatars.discourse-cdn.com/v4/letter/f/3ec8ea/32.png) [@fisfutta](https://forum.shopware.com/u/fisfutta)\
**Post date:** [21. Juni 2017 um 19:04 UTC](https://forum.shopware.com/t/random-logo-cache-smarty-function/46434/5 "2017-06-21T19:04:58Z")

</div>

Ok, ich bin noch nicht wirklich in der Plugin Entwicklung drin bei Shopware. Vielleicht kannst du mir noch weiter helfen. Ich find auch nirgends ein Beispiel wie man ein Frontend Widget Plugin erstellt.

Ist z.b. das das richtige Event zum subscriben?

```
$this->subscribeEvent(
            'Enlight_Controller_Dispatcher_ControllerPath_Widgets_SwagPluginName',
            'getWidgetController'
        );

/**
     * @return string
     */
    public function getWidgetController(Enlight_Event_EventArgs $arguments)
    {
        return $this->Path() . '/Controllers/Widgets/SwagPluginName.php';
    }

```

Danke
