# Smarty function in Plugin

**URL:** <https://forum.shopware.com/t/smarty-function-in-plugin/43860>\
**Category:** Programmierung\
**Created:** [20. Februar 2017 um 09:06 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860 "2017-02-20T09:06:00Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![brettvormkopp](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/brettvormkopp/32/7788_2.png) [@brettvormkopp](https://forum.shopware.com/u/brettvormkopp)\
**Post date:** [20. Februar 2017 um 09:06 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/1 "2017-02-20T09:06:00Z")

</div>

Hi, ich {extende} im Plugin die footer-navigation.tpl mit einer {function name=xy}Textbausteine{/function} und rufe sie danach mit {call name=xy} auf. Die in der Funktion enthaltenen Textbausteine werden angelegt, aber im gesammten wird die Funktion und deren Inhalt und alles was danach kommen sollte&nbsp;nicht im Frontend ausgegeben, stattdessen ein 503 unavailable. Hat jemand eine Idee?

Danke und Gruss

---

<div class="post-metadata">

**Author:** ![t2oh4e](https://avatars.discourse-cdn.com/v4/letter/t/a5b964/32.png) [@t2oh4e](https://forum.shopware.com/u/t2oh4e)\
**Post date:** [20. Februar 2017 um 09:08 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/2 "2017-02-20T09:08:05Z")

</div>

> [@brettvormkopp schrieb:](https://forum.shopware.com/profile/6611/brettvormkopp "brettvormkopp")
> 
> Hat jemand eine Idee?

Fehlermeldungen anschalten/nachschauen wäre eine Idee. Meistens verraten die einem was kaputt ist.

&nbsp;[http://community.shopware.com/Fehlermeldungen-in-Shopware-debuggen\_detail\_1880.html?\_ga=1.13577143.1686113021.1427122641#Frontend\_Error\_Reporter](http://community.shopware.com/Fehlermeldungen-in-Shopware-debuggen%5C_detail%5C_1880.html?%5C_ga=1.13577143.1686113021.1427122641#Frontend%5C_Error%5C_Reporter)

---

<div class="post-metadata">

**Author:** ![brettvormkopp](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/brettvormkopp/32/7788_2.png) [@brettvormkopp](https://forum.shopware.com/u/brettvormkopp)\
**Post date:** [20. Februar 2017 um 09:18 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/3 "2017-02-20T09:18:41Z")

</div>

Danke für den Tip. Folgenden Fehler wirft das System.&nbsp;

```
Fatal error: Uncaught Error: Call to undefined function smarty_template_function_beispielFunktion() in /var/www/example.com/public_html/shop/var/cache/production_201702141330/templates/frontend_Example_de_DE_1_secure/b9/21/c5/b921c5f07ce1b5735d3375bc2ca4976ea6a900b1.snippet.index.tpl.php:2176 Stack trace: #0 /var/www/example.com/public_html/shop/var/cache/production_201702141330/templates/frontend_Example_de_DE_1_secure/b9/21/c5/b921c5f07ce1b5735d3375bc2ca4976ea6a900b1.snippet.index.tpl.php(2086): content_58aab2e7cf6011_86180853(Object(Enlight_Template_Default)) #1 /var/www/example.com/public_html/shop/var/cache/production_201702141330/templates/frontend_Example_de_DE_1_secure/b9/21/c5/b921c5f07ce1b5735d3375bc2ca4976ea6a900b1.snippet.index.tpl.php(553): content_58aab2e7cf3615_08806096(Object(Enlight_Template_Default)) #2 /var/www/example.com/public_html/shop/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(180): content_58aab2e7d777e4_77970896(Object(Enlight_Template_Defaul in /var/www/example.com/public_html/shop/var/cache/production_201702141330/templates/frontend_Example_de_DE_1_secure/b9/21/c5/b921c5f07ce1b5735d3375bc2ca4976ea6a900b1.snippet.index.tpl.php on line 2176
503 Service Unavailable

```

Mein Aufruf der Funktion war bisher so:

```
{function name=beispielFunktion}
 {s name="beispielTextbaustein"}jo{/s}
{/function}

{call name=beispielFunktion}

```

Kurios ist ja, dass die Textbausteine sich automatisch im Backend einpflegen, aber trotzdem ein Fehler kommt?

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [20. Februar 2017 um 10:07 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/4 "2017-02-20T10:07:32Z")

</div>

> [@brettvormkopp schrieb:](https://forum.shopware.com/profile/6611/brettvormkopp "brettvormkopp")
> 
> Kurios ist ja, dass die Textbausteine sich automatisch im Backend einpflegen, aber trotzdem ein Fehler kommt?

Die Textbausteine werden (glaube ich) beim parsen bzw. „kompilieren“ der Template Dateien angelegt. Werfe doch mal einen Blick ins Cache Verzeichnis. Dort sind ja die .php Dateien, die aus den Smarty .tpl Dateien entstanden sind. Ich denke dort wurden die Textbausteine schon durch die Texte ersetzt.&nbsp;

Zeig uns am besten mal deine komplette&nbsp;footer-navigation.tpl. Ich kann mir vorstellen, dass du die Funktion außerhalb eines Blocks definierst (Das ist - wenn man extends benutzt - nicht erlaubt). Alles was außerhalb eines Blocks liegt wird bei „extends“ verworfen. =\> Smarty kennt deine Funktion nicht mehr. ![Wink](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wink.png "Wink")

Ist allerdings nur eine Vermutung.&nbsp;  
Viele Grüße

---

<div class="post-metadata">

**Author:** ![brettvormkopp](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/brettvormkopp/32/7788_2.png) [@brettvormkopp](https://forum.shopware.com/u/brettvormkopp)\
**Post date:** [20. Februar 2017 um 10:16 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/5 "2017-02-20T10:16:43Z")

</div>

So sieht die komplette Datei aus.&nbsp;

```
{extends file="parent:frontend/index/footer-navigation.tpl"}

{function name=beispielFunktion}
  {s name="beispielTextbaustein"}jo{/s}
{/function}

{block name="frontend_index_footer_column_service_hotline"}
  {call name=beispielFunktion}
{/block}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [20. Februar 2017 um 10:18 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/6 "2017-02-20T10:18:39Z")

</div>

Ja und jetzt lese dir meine Vermutung aus meinem vorherigen Post durch&nbsp; ![Sticking-out-tongue](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/ac0c93e2160fb9e91c30767775d64444ad0f06c4.png "Sticking-out-tongue")

Den Teil ab “Ich kann mit vorstellen…”

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [20. Februar 2017 um 10:29 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/7 "2017-02-20T10:29:39Z")

</div>

Hallo,

wie simkli schon sagt: da du die Vererbung anwendest und die Funktion außerhalb eines Blocks implementierst, ignoriert er die Funktion und kennt Sie somit nicht, da er ja die Bare - Datei nutzen und nur bei dieser den Block mit deinem Inhalt überschreiben soll (und gibt deshalb die Fehlermeldung oben aus, da die Funktion ja außerhalb des Blocks ist und somit nicht bekannt).

Beste Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![brettvormkopp](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/brettvormkopp/32/7788_2.png) [@brettvormkopp](https://forum.shopware.com/u/brettvormkopp)\
**Post date:** [21. Februar 2017 um 10:32 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/8 "2017-02-21T10:32:15Z")

</div>

Hi, @sschreier‍ . Wie könnte ich es dann Elegant lösen, da ich 4 Blöcke habe und jedes mal die function innerhalb der Blöcke aufgerufen werden soll?&nbsp;Danke euch.

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [21. Februar 2017 um 11:16 UTC](https://forum.shopware.com/t/smarty-function-in-plugin/43860/9 "2017-02-21T11:16:55Z")

</div>

Eigentlich müsste es reichen, die Funktion im ersten Block, den du überschreibst, zu definieren. Danach solltest du das nicht nochmal tun müssen.  
Wichtig ist nur, dass die Funktion vor dem Aufruf definiert wird.

Viele Grüße
