# Kontrollieren ob eine Datei existiert mittels PHP + Smarty

**URL:** <https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494>\
**Category:** Programmierung\
**Created:** [21. Juli 2020 um 10:11 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494 "2020-07-21T10:11:13Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [21. Juli 2020 um 10:11 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/1 "2020-07-21T10:11:13Z")

</div>

Moin zusammen,

ich möchte **über einen Template mittels Smarty kontrollieren ob eine Datei exisitert** und falls ja, diese halt zeigen.

Ich habe dazu eine PHP-Datei erstellt und diese mit einem PHP-checker kontrolliert. Der ist soweit in Ordnung.

Nun include ich diese PHP-Datei mit Smarty aber danach gibt die Seite eine Fehlermeldung, es funktioniert halt nicht (ein echter Fehler wird da nicht angezeigt).

Was mache ich da falsch?

**TEMPLATE - Smarty:**

{include\_php file="/frontend/listing/manufacturecheckimage.php"}

&nbsp;

**PHP - Datei**

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/0/08519dd6e24cbacf26926a193476109add199763.png)  
Vielleicht kann einer weiterhelfen? Danke!

LG, S-D

---

<div class="post-metadata">

**Author:** ![drakon](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/drakon/32/7724_2.png) [@drakon](https://forum.shopware.com/u/drakon)\
**Post date:** [21. Juli 2020 um 10:12 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/2 "2020-07-21T10:12:39Z")

</div>

Man kann kein PHP in Smarty inkludieren.

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [21. Juli 2020 um 12:06 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/3 "2020-07-21T12:06:35Z")

</div>

ok danke für die Info!

Wie bekomme ich das nun hin, also über Smarty in einem Template zu prüfen ob eine Bild-Datei existiert?

Ich bin schon eine Woche am rumtüfteln, habe etliche mögliche Varianten bezüglich Programmierung probiert, klappt aber nicht. ☹

---

<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. Juli 2020 um 12:12 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/4 "2020-07-21T12:12:52Z")

</div>

In **Frontend/MEINTHEME/\_private/smarty/function.MEINEFUNKTION.php** kannst du PHP ausführen. Im Theme rufst du sie auf und kannst auch variablen übergeben ungefähr so:&nbsp; **{MEINEFUNKTION variable=$meineSmartyVariable}**

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [21. Juli 2020 um 12:51 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/5 "2020-07-21T12:51:17Z")

</div>

Danke :)&nbsp;

Ich habe nun die PHP-Datei, Inhalt wie oben, in dem vorgenannten Ordner hochgeladen.

&nbsp;

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/0/08519dd6e24cbacf26926a193476109add199763.png)

Die Datei heist&nbsp; **function.manufacturercheckimage.php**

Im Template schreibe ich dann:  
**{** manufacturercheckimage&nbsp;\*\*variable=$filename001}

aber die Seite gibt wieder die Fehlermeldung. Da fehlt mit Sicherheit noch etwas, sprich das Aufrufen der PHP-Datei?\*\*

---

<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. Juli 2020 um 13:45 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/6 "2020-07-21T13:45:15Z")

</div>

Die PHP-Datei “returned” einen Inhalt. Deshalb kann die php Datei nicht beliebig aussehen.&nbsp;

```
';

}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [22. Juli 2020 um 07:59 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/7 "2020-07-22T07:59:49Z")

</div>

Danke. Da muss ich weitertüfteln, bin kein Programmierer, fuchse mich da selber rein.

---

<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:** [22. Juli 2020 um 09:29 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/8 "2020-07-22T09:29:17Z")

</div>

Im theme/Frontend/MEINTHEME/frontend/…irgendeine…tpl

```
 {manufacturercheckimage variable=$bildpfad}

```

Und die theme/Frontend/MEINTHEME/\_private/smarty/function.manufacturercheckimage.php&nbsp;

```
";

    }

}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [22. Juli 2020 um 09:58 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/9 "2020-07-22T09:58:45Z")

</div>

Ich glaube wir haben es fast?

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/00392bd03016ad6a618c8a015dd82ed1a4fc7e97.png)

&nbsp;

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/309ea731a1aa13b45be81b53d25a6b382074ce88.png)

&nbsp;

aber irgendwo habe ich noch einen Denkfehler…

&nbsp;

---

<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:** [22. Juli 2020 um 13:15 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/10 "2020-07-22T13:15:25Z")

</div>

Probiere mal einen Bild-Pfad aus, wo du weisst, dass er wirklich existiert. z.B.

```
{manufacturercheckimage variable='https://exaample.com/diese/bild/existiert/wirklich.jpg'}

```

Wenn das funktioniert gehst du zum nächsten Schritt und hole dir die richtige Variable an der richtigen Stelle ab.&nbsp;

Wenn du den Artikel-Hersteller-Name suchst, dann kannst du darauf **nur** auf der Detailseite oder im Listing in der Artikel-box drauf zurück greifen. Der Herstellername eines Artikels ist der “supplierName”.

```
{manufacturercheckimage variable=$sArticle.supplierName|escape}

```

Wie gesagt, kann dieser Code auch nicht überall stehen, sondern nur dort wo du Zugriff aus $sArticle.supplierName hast. Zum testen einfach einmal ins Theme schreiben und gucken was bei rauskommt:&nbsp;

```
{$sArticle.supplierName|escape}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [22. Juli 2020 um 13:55 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/11 "2020-07-22T13:55:58Z")

</div>

also, die Zeilen

_{$bildpfad = “/media/image/kategorie/marken/{$manufacturer-\>getName()|escape}/001.jpg”}  
{manufacturercheckimage variable=$bildpfad}_

befinden&nbsp;sich im manufacturer.tpl (/frontend/listing) und geben keine Fehlermeldung.  
**Es wird aber kein Bild im Template angezeigt?!**

Ich denke das im PHP nichts herausgelesen wird (?)

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/57ff846e5498162fbb4454aedcdaccaf28ea5362.png)

---

<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:** [22. Juli 2020 um 16:17 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/12 "2020-07-22T16:17:28Z")

</div>

du kannst die function.manufacturercheckimage.php mal anpassen:

```
";

    }else{
   
       return "kein Bild";

    }

}

```

_Folgendes ist mir unbekannt:&nbsp;_

```
{$bildpfad = "/media/image/kategorie/marken/{$manufacturer->getName()|escape}/001.jpg"}

```

Versuche mal zu Testzwecken&nbsp;ein Bild zu nehmen was es gibt.

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [23. Juli 2020 um 07:06 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/13 "2020-07-23T07:06:22Z")

</div>

Danke. Bei deiner Zeile fehlt das Häckchen schliessen:

&nbsp; &nbsp; if(file\_exists($meineVariable)**)**{

&nbsp;

ich bastle mal weiter.

---

<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:** [23. Juli 2020 um 07:18 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/14 "2020-07-23T07:18:17Z")

</div>

Achso, zum definieren von Variablen in Smarty nutze ich normalerweise folgendes:

```
{assign var="bildpfad" value=$sArticle.supplierName}

```

Auf diese kann ich dann zurückgreifen z.B. so:

```
{$bildpfad}

```

oder so:

```
{manufacturercheckimage variable=$bildpfad}

```

Als Tipp: lass dir die zur Verfügung stehenden Variablen ausgeben mit {debug}

(ps: nur in nicht-repetativen TPLs wie index.tpl oder header.tpl eintragen)

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [23. Juli 2020 um 07:20 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/15 "2020-07-23T07:20:23Z")

</div>

{$bildpfad = „/media/image/kategorie/marken/{$manufacturer-\>getName()|escape}/001.jpg“}

je nachdem welcher Hersteller, wird das betreffende Bild aus dem Ordner dargestellt in manufacturer.tpl  
&nbsp;

---

<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:** [23. Juli 2020 um 07:39 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/16 "2020-07-23T07:39:45Z")

</div>

Ja, das ist so richtig

Es sollten erstmal folgende Fragen beantwortet werden.

- Testen ob es mit einem exisiterendem Bild funktioniert. JA / NEIN
- Woher nimmst du den Pfad&nbsp;media/image/kategorie/marken/{$manufacturer-\>getName()|escape}/001.jpg ? Hast du diesen mal einfach so ausgegeben? also {$bildpfad} ohne function.manufacturercheckimage.php ?

---

<div class="post-metadata">

**Author:** ![MoinZusammen](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@MoinZusammen](https://forum.shopware.com/u/MoinZusammen)\
**Post date:** [23. Juli 2020 um 08:51 UTC](https://forum.shopware.com/t/kontrollieren-ob-eine-datei-existiert-mittels-php-smarty/68494/17 "2020-07-23T08:51:14Z")

</div>

Punkt 1: richtig, das teste ich gerade

Punkt 2: Den Pfad habe ich selber kreiert, damit die Bilder sauber in den jeweiligen Ordner sind.  
Wenn ich die ausgebe&nbsp;wird der Link (als Text) auch gezeigt, er&nbsp;  
{$manufacturer-\>getName()|escape} ist der jeweiliger ausgewählter Hersteller
