# Freitextfeld Media

**URL:** <https://forum.shopware.com/t/freitextfeld-media/46928>\
**Category:** Themes & Design\
**Created:** [14. Juli 2017 um 13:53 UTC](https://forum.shopware.com/t/freitextfeld-media/46928 "2017-07-14T13:53:24Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_Sebastian](https://avatars.discourse-cdn.com/v4/letter/_/f6c823/32.png) [@\_Sebastian](https://forum.shopware.com/u/_Sebastian)\
**Post date:** [14. Juli 2017 um 13:53 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/1 "2017-07-14T13:53:24Z")

</div>

Hi,

ich möchte im Frontend ein zusätzliches Bild ausgeben, dazu habe ich ein Freitextfeld vom Type Media angelegt. Jedoch wird mir über die Variable&nbsp;

```
$sArticle.attr5

```

nur die ID des Bildes ausgegeben, gibt es eine Möglichkeit die Source von diesem Bild zu erhalten?

---

<div class="post-metadata">

**Author:** ![templeturtle](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/templeturtle/32/22686_2.png) [@templeturtle](https://forum.shopware.com/u/templeturtle)\
**Post date:** [18. Juli 2017 um 06:58 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/2 "2017-07-18T06:58:09Z")

</div>

Einfach die Smarty-Debug-Konsole im Template aufrufen und die entsprechende Variable raussuchen. Wird sich hier sicher um ein Array handeln.

Aufruf erfolgt durch

```
{debug}

```

direkt im Template.

---

<div class="post-metadata">

**Author:** ![\_Sebastian](https://avatars.discourse-cdn.com/v4/letter/_/f6c823/32.png) [@\_Sebastian](https://forum.shopware.com/u/_Sebastian)\
**Post date:** [18. Juli 2017 um 09:37 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/3 "2017-07-18T09:37:13Z")

</div>

Das hab ich bereits gemacht, so wie es aussieht wird im Frontend nur die ID ausgegeben. Um den Pfad zu bekommen wird man wohl ein Plugin ähnlich wie dieses&nbsp;[GitHub - Kevinschmid86/KSchmidSupplierImage](https://github.com/Kevinschmid86/KSchmidSupplierImage) einsetzen müssen.

---

<div class="post-metadata">

**Author:** ![medienagenturmadco](https://avatars.discourse-cdn.com/v4/letter/m/848f3c/32.png) [@medienagenturmadco](https://forum.shopware.com/u/medienagenturmadco)\
**Post date:** [18. Juli 2017 um 10:32 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/4 "2017-07-18T10:32:05Z")

</div>

erstell dir einfach ein smarty modifier mit folgendem Inhalt

deinTemplate\_private\smarty\modifier.mediaurl.php

```
Models()->getRepository('Shopware\Models\Media\Media')->findOneBy(['id' => $id]);
        if ($media) {
            $path = $media->getPath();

            $mediaUrl = Shopware()->Container()->get('shopware_media.media_service')->getUrl($path);

            return $mediaUrl;
        }
    }

}

```

Aufruf im Template dann mit

```
{$sArticle.attr5|mediaurl}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![quebag](https://avatars.discourse-cdn.com/v4/letter/q/c67d28/32.png) [@quebag](https://forum.shopware.com/u/quebag)\
**Post date:** [31. Januar 2018 um 10:03 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/5 "2018-01-31T10:03:28Z")

</div>

Bei mir funktioniert der Modifier nur bedingt.

Habe in der Freitextfeld-Verwaltung folgendes Attribut konfiguriert.

attr11  
Spaltentyp:&nbsp;Merhfachauswahl  
Entity: Media - Shopware\Models\Media\Media

Im Backend sowie im Frontend werden die Werte jedoch wie folgt ausgegeben:&nbsp;

```
|107|8|

```

Somit habe ich zwei Probleme:

a) die „|“ müssen weg  
b) bei mehreren Bildern scheitere ich an der Ausgabe der Einzelbilder im frontend

themes/Frontend/mytheme/frontend/detail/index.tpl

```
{* Product attribute 11 *}
{block name='frontend_detail_data_attributes_attr11'}
  {if $sArticle.attr11}
    
      
    
   {/if}
{/block}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![GabrielBV](https://avatars.discourse-cdn.com/v4/letter/g/dc4da7/32.png) [@GabrielBV](https://forum.shopware.com/u/GabrielBV)\
**Post date:** [24. Januar 2019 um 07:15 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/6 "2019-01-24T07:15:19Z")

</div>

Bist Du hier weiter gekommen? Habe ein ähnliches Problem bei der Ausgabe von Media Pfaden in emails. Das Media Freitextfeld lässt sich so gar nicht sinnvoll nutzen, wozu Shopware sich das ausgedacht hat!?

&nbsp;

---

<div class="post-metadata">

**Author:** ![Smaug](https://avatars.discourse-cdn.com/v4/letter/s/ecc23a/32.png) [@Smaug](https://forum.shopware.com/u/Smaug)\
**Post date:** [30. Januar 2019 um 13:00 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/7 "2019-01-30T13:00:14Z")

</div>

Juhu endlich weis ich mal was! Giving back… und sooo…

&nbsp;

nutze den Smarty modifier „explode“ damit wandelst du den String anhand der „|“ trennzeichen in ein array um:

{assign var=„arraybilderid“ value=";"|explode:$string}

foreach schleifen durch das array und du hast sie einzeln.

&nbsp;

tada.

&nbsp;

---

<div class="post-metadata">

**Author:** ![quebag](https://avatars.discourse-cdn.com/v4/letter/q/c67d28/32.png) [@quebag](https://forum.shopware.com/u/quebag)\
**Post date:** [30. Januar 2019 um 14:20 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/8 "2019-01-30T14:20:41Z")

</div>

Super. Jedoch weiß ich jetzt nicht wie und wo ich deinen Code jetzt einbauen muss&nbsp; ![Undecided](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/undecided.png "Undecided")

---

<div class="post-metadata">

**Author:** ![quebag](https://avatars.discourse-cdn.com/v4/letter/q/c67d28/32.png) [@quebag](https://forum.shopware.com/u/quebag)\
**Post date:** [4. Juli 2019 um 12:11 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/9 "2019-07-04T12:11:51Z")

</div>

> [@Smaug schrieb:](https://forum.shopware.com/profile/30785/Smaug "Smaug")
> 
> Juhu endlich weis ich mal was! Giving back… und sooo…
> 
> &nbsp;
> 
> nutze den Smarty modifier „explode“ damit wandelst du den String anhand der „|“ trennzeichen in ein array um:
> 
> {assign var=„arraybilderid“ value=„;“|explode:$string}
> 
> foreach schleifen durch das array und du hast sie einzeln.
> 
> &nbsp;
> 
> tada.

&nbsp;

Aber wie baue ich deine Anweisung in meine modifier.mediaurl.php ein

&nbsp;

\<?php   
 function smarty\_modifier\_mediaurl($value, $format = array()) { &nbsp; &nbsp; if (is\_numeric($value)) { &nbsp; &nbsp; &nbsp; &nbsp; $id = (int)$value; &nbsp; &nbsp; &nbsp; &nbsp; $media = Shopware()-\\>Models()-\\>getRepository('Shopware\Models\Media\Media')-\\>findOneBy(['id' =\\> $id]); &nbsp; &nbsp; &nbsp; &nbsp; if ($media) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $path = $media-\\>getPath(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $mediaUrl = Shopware()-\\>Container()-\\>get('shopware\_media.media\_service')-\\>getUrl($path); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $mediaUrl; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; } } &nbsp;

---

<div class="post-metadata">

**Author:** ![Dwza](https://avatars.discourse-cdn.com/v4/letter/d/c57346/32.png) [@Dwza](https://forum.shopware.com/u/Dwza)\
**Post date:** [9. September 2019 um 11:39 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/10 "2019-09-09T11:39:08Z")

</div>

Nochmal zusammen gefasst inkl. Behebung der Array-Problematik bzw. der |1|2|3| strings.

Template&nbsp;

```
{* Product attribute 11 *}

{block name='frontend_detail_data_attributes_attr11'} 
    {if $sArticle.attr11}

        {assign var="mediaUrls" value=$sArticle.attr11|mediaurl}

        {foreach from=$mediaUrls item=$mediaUrl}
            
        {/foreach}

    {/if}
{/block}

```

modifier.mediaurl.php

```
Models()->getRepository('Shopware\Models\Media\Media')->findOneBy(['id' => $id]);
        if ($media) {
            $path = $media->getPath();
            $mediaUrl = Shopware()->Container()->get('shopware_media.media_service')->getUrl($path);
            return $mediaUrl;
        }
    }
    return null;
}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![design-und-media](https://avatars.discourse-cdn.com/v4/letter/d/3bc359/32.png) [@design-und-media](https://forum.shopware.com/u/design-und-media)\
**Post date:** [18. September 2019 um 20:31 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/11 "2019-09-18T20:31:16Z")

</div>

&nbsp;

> [@Dwza schrieb:](https://forum.shopware.com/profile/19799/Dwza "Dwza")
> 
> Nochmal zusammen gefasst inkl. Behebung der Array-Problematik bzw. der |1|2|3| strings.
> 
> Template&nbsp;
> 
> {\* Product attribute 11 \*}
> 
> {block name=‚frontend\_detail\_data\_attributes\_attr11‘}  
> {if $sArticle.attr11}
> 
> {assign var=„mediaUrls“ value=$sArticle.attr11|mediaurl}
> 
> {foreach from=$mediaUrls item=$mediaUrl}
> 
> {/foreach}
> 
> {/if}  
> {/block}
> 
> modifier.mediaurl.php
> 
> Models()-\>getRepository(‚Shopware\Models\Media\Media‘)-\>findOneBy([‚id‘ =\> $id]);  
> if ($media) {  
> $path = $media-\>getPath();  
> $mediaUrl = Shopware()-\>Container()-\>get(‚shopware\_media.media\_service‘)-\>getUrl($path);  
> return $mediaUrl;  
> }  
> }  
> return null;  
> }
> 
> &nbsp;

Der Code ist wunderbar, vielen Dank dafür!  
irgendwo scheint da aber noch ein Fehler drin zu sein.  
ausgegeben wir nur ![]() ohne URL.

der Code von [medienagenturmadco](https://forum.shopware.com/profile/14749/medienagenturmadco) hingegen funktioniert einwandfrei bei Einzelbildern.

---

<div class="post-metadata">

**Author:** ![SieGeL](https://avatars.discourse-cdn.com/v4/letter/s/50afbb/32.png) [@SieGeL](https://forum.shopware.com/u/SieGeL)\
**Post date:** [26. Januar 2020 um 10:28 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/12 "2020-01-26T10:28:00Z")

</div>

Falls es noch jemanden interessiert, hier die korrigierten Varianten für das Bilderausgabe Problem:

Template Ausgabe:

```
 {\* Product attribute 11 \*} {block name='frontend\_detail\_data\_attributes\_attr11'} {if $sArticle.attr11} {assign var="mediaUrls" value=$sArticle.attr11|mediaurl} {foreach from=$mediaUrls item=mediaUrl} ![]({$mediaUrl}) {/foreach} {/if} {/block} 

```

Hier war der Fehler, das in der foreach Anweisung die item Angabe falsch war, es muss lauten:

item=mediaUrl

anstatt

item=$mediaUrl

&nbsp;

Bei dem modifier habe ich die Aufrufe für die

```
 getMediaUrlById()

```

Funktion angepasst, damit lief das dann bei mir problemlos:

&nbsp;

```
<?php function smarty_modifier_mediaurl($value, $format = array())
  {
  $mediaUrls = [];
  $seperator = "|";
  $str = trim($value, $seperator);
  if(is_numeric($str)) {
    $url = getMediaUrlById($str);
    if($url !== null)
    {
      $mediaUrls[] = $url;
    }
  }else if(strpos($str, $seperator)) {
    $ids = explode($seperator, $str);
    foreach($ids as $id){
      $url = getMediaUrlById($id);
      if($url !== null) {
        $mediaUrls[] = $url;
      }
    }
  }
  return $mediaUrls;
}

function getMediaUrlById($value) {
  if (is_numeric($value)) {
    $id = (int)$value;
    $media = Shopware()->Models()-\>getRepository('Shopware\Models\Media\Media')-\>findOneBy(['id' =\> $id]); if ($media) { $path = $media-\>getPath(); return Shopware()-\>Container()-\>get('shopware\_media.media\_service')-\>getUrl($path); } } return null; } 

```

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![danischpur](https://avatars.discourse-cdn.com/v4/letter/d/e47774/32.png) [@danischpur](https://forum.shopware.com/u/danischpur)\
**Post date:** [8. Juni 2020 um 20:07 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/13 "2020-06-08T20:07:23Z")

</div>

> [@SieGeL schrieb:](https://forum.shopware.com/profile/26002/SieGeL "SieGeL")

&nbsp;

GROSSARTIG!!! Danke!!!&nbsp; ![Smile](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/bac5f5766b6a20565a8fb995345b4e41d24daac0.png "Smile")

---

<div class="post-metadata">

**Author:** ![mediengestalter](https://avatars.discourse-cdn.com/v4/letter/m/c4cdca/32.png) [@mediengestalter](https://forum.shopware.com/u/mediengestalter)\
**Post date:** [23. März 2021 um 12:54 UTC](https://forum.shopware.com/t/freitextfeld-media/46928/14 "2021-03-23T12:54:11Z")

</div>

Und wie bekommt man jetzt noch das src-set zu den Thumbnails statt einfach den Links zur Original-Datei?
