# neues smarty-Plugin erstellen

**URL:** https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604
**Category:** Programmierung
**Created:** [8. Mai 2016 um 06:14 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604 "2016-05-08T06:14:27Z")
**Posts on this page:** 19
**Page:** 1

<div class="post-metadata">

### Author: ![Gesundwuerzen](https://avatars.discourse-cdn.com/v4/letter/g/8c91f0/32.png) [@Gesundwuerzen](https://forum.shopware.com/u/Gesundwuerzen)
#### Post date: [8. Mai 2016 um 06:14 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/1 "2016-05-08T06:14:27Z")

</div>

Hallo,

&nbsp;

ich möchte gern ein eigenes smarty erstellen, mit dieser Anleitung:  
[https://developers.shopware.com/designers-guide/smarty/?\_ga=1.3934256.1483405301.1423301853#register-custom-smarty-plugins](https://developers.shopware.com/designers-guide/smarty/?_ga=1.3934256.1483405301.1423301853#register-custom-smarty-plugins)  
&nbsp;

Zur Verständnis: Ich erstelle einen neunen Block in einer neuen Datei. Aber wo muss diese dann liegen?  
In der Beschreibung heißt auch, dass es einen Pfad gibt:  
&nbsp;

**Example:** &nbsp;_Path to custom Smarty plugins_

```
/_private/smarty/function.markdown.php
/_private/smarty/modifier.picture.php

```

Ist das der Pfad, wo ich meine Datei ablegen muss?  
Und wie rufe ich das smarty dann auf?&nbsp;

---

<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: [8. Mai 2016 um 07:31 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/2 "2016-05-08T07:31:32Z")

</div>

> [@Gesundwürzen schrieb:](https://forum.shopware.com/profile/19890/Gesundw%C3%BCrzen "Gesundw%C3%BCrzen")
> 
> Hallo,
> 
> &nbsp;
> 
> ich möchte gern ein eigenes smarty erstellen, mit dieser Anleitung:  
> [https://developers.shopware.com/designers-guide/smarty/?\_ga=1.3934256.1483405301.1423301853#register-custom-smarty-plugins](https://developers.shopware.com/designers-guide/smarty/?_ga=1.3934256.1483405301.1423301853#register-custom-smarty-plugins)  
> &nbsp;
> 
> Zur Verständnis: Ich erstelle einen neunen Block in einer neuen Datei. Aber wo muss diese dann liegen?  
> In der Beschreibung heißt auch, dass es einen Pfad gibt:  
> &nbsp;
> 
> **Example:** &nbsp;_Path to custom Smarty plugins_
> 
> /\_private/smarty/function.markdown.php  
> /\_private/smarty/modifier.picture.php
> 
> Ist das der Pfad, wo ich meine Datei ablegen muss?  
> Und wie rufe ich das smarty dann auf?&nbsp;

&nbsp;Hallo,

der Pfad der Datei, dessen Block du anpassen möchtest, richtet sich natürlich danach, welchen Block du anpassen möchtest. Es kommt hier also drauf an, wo oder was du anpassen möchtest, um dir evtl. einen Pfad sagen zu können. Meist kann man den Pfad auch anhand von CSS-Klassen ungefähr ableiten.

Den Pfad für die Smart-Datei muss folgendermaßen sein: themes/Frontend/DEIN\_THEME/\_private/smarty/deine\_smarty\_datei.php .

Wenn deine Smarty-Funktion bspw. smarty\_function\_selection heisst, rufst du diese dann über {selection} in deiner Template-Datei auf.

Alle weiteren Informationen dazu findest du hier: [Chapter&nbsp;18.&nbsp;Extending Smarty With Plugins | Smarty](http://www.smarty.net/docs/en/plugins.tpl) .

Beste Grüße

Sebastian

---

<div class="post-metadata">

### Author: ![Gesundwuerzen](https://avatars.discourse-cdn.com/v4/letter/g/8c91f0/32.png) [@Gesundwuerzen](https://forum.shopware.com/u/Gesundwuerzen)
#### Post date: [8. Mai 2016 um 07:44 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/3 "2016-05-08T07:44:14Z")

</div>

Hallo Sebastian,

ich möchte eine eigene smarty\_function erstellen. Ausgeben möchte ich ein array aus einer SQL-Abfrage.  
Siehe anderen thread:&nbsp;[Neue SQL-Abfrage in array - Programmierung - Shopware Community Forum](http://forum.shopware.com/discussion/37122/neue-sql-abfrage-in-array#latest)  
Diese möchte ich dann in einer landingpage oder EW aufrufen, falls das möglich ist.

Grüße

Gerd

---

<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: [8. Mai 2016 um 07:57 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/4 "2016-05-08T07:57:21Z")

</div>

> [@Gesundwürzen schrieb:](https://forum.shopware.com/profile/19890/Gesundw%C3%BCrzen "Gesundw%C3%BCrzen")
> 
> Hallo Sebastian,
> 
> ich möchte eine eigene smarty\_function erstellen. Ausgeben möchte ich ein array aus einer SQL-Abfrage.  
> Siehe anderen thread:&nbsp;[http://forum.shopware.com/discussion/37122/neue-sql-abfrage-in-array#latest](http://forum.shopware.com/discussion/37122/neue-sql-abfrage-in-array#latest)  
> Diese möchte ich dann in einer landingpage oder EW aufrufen, falls das möglich ist.
> 
> Grüße
> 
> Gerd

Hallo,

da dieses Array wahrscheinlich bei den Einkaufswelten oder den Landingpages gar nicht standardmäßig verfügbar sein wird, musst du da sicherlich erstmal eher ran und mit dem entsprechenden Event das Array mit ausgeben lassen. In Smarty-Funktionen selbst ist soweit ich weiss glaub ich ein Datenbankzugriff eher schwer umsetzbar.

Ein Beispiel eines Smarty-Plugins für die Artikel-Detailseite findet man bspw. hier: [Eigenen Finanzierungsrechner erstellen - #24 von derkosta - Programmierung - Shopware Community Forum](http://forum.shopware.com/discussion/comment/154180/#Comment%5C_154180) .

Beste Grüße

Sebastian

---

<div class="post-metadata">

### Author: ![Gesundwuerzen](https://avatars.discourse-cdn.com/v4/letter/g/8c91f0/32.png) [@Gesundwuerzen](https://forum.shopware.com/u/Gesundwuerzen)
#### Post date: [8. Mai 2016 um 08:09 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/5 "2016-05-08T08:09:32Z")

</div>

Vielleicht bin ich auch auf dem Holzweg. Wäre es dann nicht einfacher, das per php zu lösen?

```
$sql = '
            SELECT
            FROM

```

Nur: Kann man z.B.&nbsp;$this-\>s\_statistics\_search auch includen?

---

<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: [8. Mai 2016 um 08:37 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/6 "2016-05-08T08:37:31Z")

</div>

> [@Gesundwürzen schrieb:](https://forum.shopware.com/profile/19890/Gesundw%C3%BCrzen "Gesundw%C3%BCrzen")
> 
> Vielleicht bin ich auch auf dem Holzweg. Wäre es dann nicht einfacher, das per php zu lösen?
> 
> $sql = ’  
> SELECT  
> FROM
> 
> Nur: Kann man z.B.&nbsp;$this-\>s\_statistics\_search auch includen?

Hallo,

Template-Dateien und php vertragen sich aber nicht.

Wie erwähnt - einfach das entsprechende Event suchen, dort die Abfrage machen und das Ergebnis der Abfrage wie gewünscht als Array an die Template-Datei (mit assign) übergeben lassen.

Beste Grüße

Sebastian

---

<div class="post-metadata">

### Author: ![Gesundwuerzen](https://avatars.discourse-cdn.com/v4/letter/g/8c91f0/32.png) [@Gesundwuerzen](https://forum.shopware.com/u/Gesundwuerzen)
#### Post date: [8. Mai 2016 um 08:56 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/7 "2016-05-08T08:56:50Z")

</div>

Hallo Sebastian,

funktioniert hier also&nbsp;

```
 {literal} auch nicht?

```

Zu deiner Antwort, das Event suchen usw. das übersteigt leider meine Kenntnisse&nbsp; ![Blush](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/blush.png "Blush")

Ich dachte, das wäre einfacher.

---

<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: [8. Mai 2016 um 09:14 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/8 "2016-05-08T09:14:20Z")

</div>

> [@Gesundwürzen schrieb:](https://forum.shopware.com/profile/19890/Gesundw%C3%BCrzen "Gesundw%C3%BCrzen")
> 
> Hallo Sebastian,
> 
> funktioniert hier also&nbsp;
> 
> {literal} auch nicht?
> 
> Zu deiner Antwort, das Event suchen usw. das übersteigt leider meine Kenntnisse&nbsp; ![Blush](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/blush.png "Blush")
> 
> Ich dachte, das wäre einfacher.

Hallo,

nein {literal} ist eher für JavaScript-Code gedacht, der { oder } enthält. Damit kannst du auch keinen PHP-Code in die Template-Datei integrieren.

Beste Grüße

Sebastian

---

<div class="post-metadata">

### Author: ![Gesundwuerzen](https://avatars.discourse-cdn.com/v4/letter/g/8c91f0/32.png) [@Gesundwuerzen](https://forum.shopware.com/u/Gesundwuerzen)
#### Post date: [8. Mai 2016 um 09:28 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/9 "2016-05-08T09:28:28Z")

</div>

Sorry, meinte nicht literal sondern das:

[http://www.smarty.net/docsv2/en/language.function.php.tpl](http://www.smarty.net/docsv2/en/language.function.php.tpl)

&nbsp;

---

<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: [8. Mai 2016 um 09:40 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/10 "2016-05-08T09:40:09Z")

</div>

> [@Gesundwürzen schrieb:](https://forum.shopware.com/profile/19890/Gesundw%C3%BCrzen "Gesundw%C3%BCrzen")
> 
> Sorry, meinte nicht literal sondern das:
> 
> [http://www.smarty.net/docsv2/en/language.function.php.tpl](http://www.smarty.net/docsv2/en/language.function.php.tpl)
> 
> &nbsp;

Hallo,

ich glaube du solltest langsam einfach mal google oder ähnliches benutzen: [{php} | Smarty](http://www.smarty.net/docs/en/language.function.php.tpl) .

{php} darf und soll nicht mehr verwendet werden - ein einfaches hin- und herraten bringt dich aber deiner Lösung auch nicht weiter.

Beste Grüße

Sebastian

&nbsp;

---

<div class="post-metadata">

### Author: ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)
#### Post date: [8. Mai 2016 um 12:59 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/11 "2016-05-08T12:59:31Z")

</div>

Vor allem sollte er auch einfach mal lesen: Dicke fette Headline:

> **IMPORTANT NOTICE**
> 
> `{php}`&nbsp;tags are deprecated from Smarty, and should not be used. Put your PHP logic in PHP scripts or plugin functions instead.

Das hier ist ein ganz gutes Beispiel für ein Smarty Plugin:&nbsp;[Template Functions | Smarty](http://www.smarty.net/docs/en/plugins.functions.tpl)

---

<div class="post-metadata">

### Author: ![vanwittlaer](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/vanwittlaer/32/8499_2.png) [@vanwittlaer](https://forum.shopware.com/u/vanwittlaer)
#### Post date: [24. Januar 2017 um 13:51 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/12 "2017-01-24T13:51:39Z")

</div>

Tja das ist jetzt lustig, dass die ursprüngliche Frage gar nicht beantwortet wurde: Wo müssen eigentlich die eigenen Smarty-Plugins (functions/modifier) abgelegt werden?

So steht’s in der Anleitung:

**Example:** _Path to custom Smarty plugins_

```
/_private/smarty/function.markdown.php
/_private/smarty/modifier.picture.php

```

&nbsp;

Bleibt die große Frage, unter welchem Verzeichnis dieser Pfad liegen muss?

```
 shopware/themes/Frontend/myTheme/\_private/smarty/

```

ist auf jeden Fall schon mal nicht richtig, zumindest ich habe da keinen Erfolg. Im Moment kann ich mir nur mit dem leider nicht update-sicheren Pfad

```
showpware/engine/Library/Smarty/plugins

```

helfen.

&nbsp;

Hat jemand einen besseren Tipp?

Danke & Gruß

Geert

&nbsp;

&nbsp;

---

<div class="post-metadata">

### Author: ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)
#### Post date: [24. Januar 2017 um 13:57 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/13 "2017-01-24T13:57:15Z")

</div>

Doch der Pfad ist richtig.

```
shopware/themes/Frontend/myTheme/_private/smarty/

```

Das [Smarty Beispiel Plugin](http://www.smarty.net/docs/en/plugins.functions.tpl) funtkioniert auch ohne Probleme. Wie sieht denn dein Smarty Plugin aus?

---

<div class="post-metadata">

### Author: ![Kerstin83](https://avatars.discourse-cdn.com/v4/letter/k/49beb7/32.png) [@Kerstin83](https://forum.shopware.com/u/Kerstin83)
#### Post date: [26. Januar 2017 um 11:29 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/14 "2017-01-26T11:29:16Z")

</div>

Ja, genau da muss es hin.

Du musst aber genau auf den Namen achten. Wenn du zum Beispiel einen modifier in Smarty mit {…mymodifier…} aufrufen willst, dann muss die php-Datei

&nbsp;modifier.mymodifier.php

heißen und in dieser Datei muss die Funktion

…

function smarty\_modifier\_mymodifier(…) {

sein.

Liebe Grüße

Kerstin

---

<div class="post-metadata">

### Author: ![vanwittlaer](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/vanwittlaer/32/8499_2.png) [@vanwittlaer](https://forum.shopware.com/u/vanwittlaer)
#### Post date: [9. Februar 2017 um 15:13 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/15 "2017-02-09T15:13:23Z")

</div>

Hey Shopwareinar und Kerstin,

nach einigem Probieren - ihr habt natürlich recht, das Verzeichnis ist grundsätzlich richtig. Also, die Modifier werden in den ‘normalen’ Frontend-Templates richtig angezogen,

**nur nicht in den Produktexport-Templates !**

Siehe auch den Thread: [https://forum.shopware.com/discussion/44241/textbausteine-nicht-in-produktexport-templates-verfuegbar/p1](https://forum.shopware.com/discussion/44241/textbausteine-nicht-in-produktexport-templates-verfuegbar/p1)

Ist das jetzt ein Denkfehler von mir oder lohnt sich dafür ein Ticket?

Gruß

Geert

---

<div class="post-metadata">

### Author: ![Kerstin83](https://avatars.discourse-cdn.com/v4/letter/k/49beb7/32.png) [@Kerstin83](https://forum.shopware.com/u/Kerstin83)
#### Post date: [10. Februar 2017 um 10:09 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/16 "2017-02-10T10:09:18Z")

</div>

Kann gut sein. Ich hatte auch folgendes Problem, das ich hier einmal posten möchte:

Die Datei …\plugins\index\delivery\_informations.tpl wird von

…\checkout\items\product.tpl und von

…\detail\data.tpl

eingebunden. Wenn man nun in delivery\_informations.tpl einen privaten modifier verwendet, funktioniert dieser&nbsp;im ersten Fall (…product.tpl) einwandfrei. Beim Aufruf durch …product.tpl gibt es einen bösen Error.

Sind die privaten modifier im checkout nicht bekannt ?

Weiß darüber jemand etwas ?

---

<div class="post-metadata">

### Author: ![daHormess](https://avatars.discourse-cdn.com/v4/letter/d/41988e/32.png) [@daHormess](https://forum.shopware.com/u/daHormess)
#### Post date: [30. November 2017 um 09:16 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/17 "2017-11-30T09:16:05Z")

</div>

Beispiel 1:

{$var|yeah}

Beispiel 2:

{$var|woop:‘hello’:‘world’}

&nbsp;

```
 'onFrontendPostDispatch'
    ];
}

public function onFrontendPostDispatch(\Enlight_Controller_ActionEventArgs $args)
{
    $this->template->smarty->registerPlugin('modifier', 'yeah', [&$this, 'myModifier']);
    $this->template->smarty->registerPlugin('modifier', 'woop', [&$this, 'myModifier2']);
}

public function myModifier($string)
{
    // do your stuff with string

    return $string;
}

public function myModifier2($string, $param1, $param2)
{
    // do your stuff with string
    
    // param1 = hello
    // param2 = world

    return $string;
}

?>

```

&nbsp;

---

<div class="post-metadata">

### Author: ![morty](https://avatars.discourse-cdn.com/v4/letter/m/65b543/32.png) [@morty](https://forum.shopware.com/u/morty)
#### Post date: [10. Dezember 2018 um 13:14 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/18 "2018-12-10T13:14:56Z")

</div>

Hallo zusammen,

ich hatte das Problem, dass mein Smarty-Modifier nicht in der Bestellbestätigung funktionierte.  
Mir hat letztendlich eine Lösung durch einen » **CompilerPass** « geholfen um einen [Smarty-Modiefier in allen Bereichen verwenden](https://forum.shopware.com/discussion/comment/238021) zu können.

Vielleicht hilft es auch hier jemandem.

Viele Grüße,  
Morty

---

<div class="post-metadata">

### Author: ![ajay.maurya](https://avatars.discourse-cdn.com/v4/letter/a/73ab20/32.png) [@ajay.maurya](https://forum.shopware.com/u/ajay.maurya)
#### Post date: [10. Februar 2022 um 17:20 UTC](https://forum.shopware.com/t/neues-smarty-plugin-erstellen/36604/19 "2022-02-10T17:20:07Z")

</div>

Hallo Morty

Ich habe ein Smarty-Plugin geschrieben, um die Kundenbewertungen abzurufen, und ich möchte diese Funktion im Artikelexport-Backend-Modul verwenden.  
Nach dem Verständnis dieses Threads kann „CompilerPass“ meinen Zweck lösen.  
Soll ich also ein benutzerdefiniertes Shopware-Plugin schreiben, um CompilerPass für mein Smarty-Plugin zu implementieren? oder wo es umgesetzt werden soll.

Sie können mein Problem hier überprüfen [Smarty-Funktion funktioniert nicht für das Backend-Modul](https://forum.shopware.com/t/smarty-funktion-funktioniert-nicht-fuer-das-backend-modul/92876)
