CustomFields Media Ausgabe

Hallo, 

Die Medien aus customFields kann ich irgendwie nicht ausgeben?! 

Mein Versuch : 

{{ page.product.translated.customFields.download_1 }} Ausgabe -> aebd542d56084b6ea9f1ee72701e3580

{{ dump(page.product.translated.customFields) }} gibt mir auch alle Custom Felder aber nicht die Url der Datei. 

 

Mit freundlichen Grüßen

Amin Nayerhabibi

Hallo Amin,

schau mal hier: Shopware 6: Use custom fields with media type 
So kannst du dir eine MediaCollection holen, die die Medien enthält, die du per ID reinreichst.

Viele Grüße aus Schöppingen

cool Michael Telgmann

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍ Danke für die Antwort, also muss man für die Ausgabe von Medien ein Plugin schreiben? oder kann man die Funktion auch in Template Plugin reinmachen? 

Hallo Amin,

nein, wie man am Beispiel sehen kann, wird der Code einfach in ein Twig Template eingefügt. D.h. du kannst das auch in deinem Theme Plugin so nutzen und brauchst keinen weiteren Code im Plugin.

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

Hallo Amin,

nein, wie man am Beispiel sehen kann, wird der Code einfach in ein Twig Template eingefügt. D.h. du kannst das auch in deinem Theme Plugin so nutzen und brauchst keinen weiteren Code im Plugin.

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo [@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann „Michael Telgmann“)‍ ,

Ich habe noch ein Problem. Wenn ich diese Funktion benutze bekommen ich folgende Fehlermeldung: 

Uncaught PHP Exception Twig\Error\SyntaxError: „Unknown „searchMedia“ function.“

{% set id = page.product.translated.customFields.download_1 %}
			{% set media = searchMedia([id], context.context) %}
			   {% set downloadurl = media.get(id) %}
				 {{ dump (downloadurl) }}

und MediaExtension.php gibt es bei mir nur unter vendor/shopware/storefront/Theme/Extension/ und hat folgende Inhalt: 

add(
            (new OneToManyAssociationField('themes', ThemeDefinition::class, 'preview_media_id'))->addFlags(new ReadProtected(SalesChannelApiSource::class))
        );

        $collection->add(
            (new ManyToManyAssociationField('themeMedia', ThemeDefinition::class, ThemeMediaDefinition::class, 'media_id', 'theme_id'))->addFlags(new ReadProtected(SalesChannelApiSource::class))
        );
    }

    public function getDefinitionClass(): string
    {
        return MediaDefinition::class;
    }
	
}

folgende Code finde ich gar nicht bei mir, trotz Update: 

public function searchMedia(array $ids, Context $context): MediaCollection
    {
        if (empty($ids)) {
            return new MediaCollection();
        }

        $criteria = new Criteria($ids);

        /** @var MediaCollection $media */
        $media = $this->mediaRepository
            ->search($criteria, $context)
            ->getEntities();

        return $media;
    }

Unter /vendor/shopware/core/Framework/Adapter/Twig/Extension/ gibt es nur eine Datei : SeoUrlFunctionExtension.php

fehlte vielleicht irgendwas bei der Composer Update? 

Meine Shopware Version = v6.1.0 Stable Version

Hallo,

ich habe genau das selbe Problem mit der selben Fehlermeldung. Gibt es dazu schon Infos?

Mit freundlichen Grüßen

Tom

Hallo ihr beiden,

entschuldigt die Umstände. Das Feature ist erst mit der Version 6.1.1 rein gekommen. Diese wurde gestern veröffentlicht. Wenn ihr also ein Update durchführt, sollte das wie dokumentiert funktionieren. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

2 „Gefällt mir“

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann „Michael Telgmann“)‍ Vielen Dank hat geklappt.  Thumb-Up Shopware

Hi

What I did is, inside:

MyPluginRoot/src/Resources/views/storefront/page/product-detail/index.html.twig

I placed this code:

I have also tried with : page.product.translated.customFields.custom_test_test (custom_test_test is my custom field of type media).

Should I add something else or where can be the problem?

Thanks in advance

Hi @mdoroci‍

what is the problem on your site? Do you get some error message?

Best regards from Schöppingen

cool Michael Telgmann

Hi [@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann „Michael Telgmann“)‍,

It shows the products, but not the media from the custom field. 

 

Best regards

 

are you sure, that you are on version 6.1.1 ?

@mdoroci‍ Try the following code:  download_1 is my Custom Field and this code is for Article Detail Page (page.product.translated.customFields.Custom-Field-Name)

{% set download = page.product.translated.customFields.download_1 %}

  {% if download != '' %}

    {% set media = searchMedia([download], context.context) %}
    {% set downloadurl = media.get(download) %}
	
      {{ (downloadurl.url) }}
      {{ (downloadurl.fileName) }}
      {{ (downloadurl.fileExtension) }}
				 

  {% endif %}

 

4 „Gefällt mir“

Ich habe den Code leicht angepasst, er erzeugt jetzt einen Link pro angehangenem Media-Element:

{% for file in page.product.translated.customFields %}
	{% if file != '' %}
		{% set media = searchMedia([file], context.context) %}
		{% set downloadurl = media.get(file) %}
		{{ (downloadurl.fileName) }} herunterladen [{{ (downloadurl.fileExtension) }}]
	{% endif %}
{% endfor %}

 

Hallo,

Leider erhalten ich auch den Fehler. Verwende aktuell

https://docs.shopware.com/en/shopware-6-en/tutorials-and-faq/virtual-box-setup?category=shopware-6-en%2Ftutorials-and-faq

=> shopware.ova // Shopware Version - “v9999999 Developer Version” wird bei mir angezeigt? Die Versionsnummer scheint mir aber fehlerhaft?

Ist die ova Datei veraltet? Wenn ich die anderen Kommentare richtig verstehe, sollte es doch eigentlich seit ein paar Monaten funktionieren?

 

basierend auf Doku https://docs.shopware.com/en/shopware-platform-dev-en/how-to/custom-fields-media-type

“Uncaught PHP Exception Twig\Error\SyntaxError: " Unknown “searchMedia”  function.” at"

{{ page.product.translated.customFields.custom_test_image_one }} => zeigt mir die ID an

 

die searchMedia funktion funktioniert aber nicht

            {# simplify ID access #}
            {% set sportsMediaId = page.product.translated.customFields.custom_test_image_one %}

            {# fetch media as batch - optimized for performance #}
            {% set mediaCollection = searchMedia([sportsMediaId], context.context) %}

            {# extract single media object #}
            {% set sportsMedia = mediaCollection.get(sportsMediaId) %}

            {{ dump (sportsMedia) }}

Grüße

Martin

Does not work for me…
With custom field name is meant the name of the set?![code|515x312]

No not the Attribute Group Set Name.
I mean the Name of Custom Attribute.

Das hat funktioniert.
Danke!

Hallo,
die Ausgabe des Custom Media Fields geht bei mir auf der Produktdetailseite einwandfrei.

Wenn ich das aber in der Listenansicht z.B. unter /component/product/card/box-standard.html.twig verwenden möchte, bricht das Template an der Stelle ab und wird nicht weiter ausgeführt. Ohne Fehlermeldung auf der Seite oder im Log.

Gibt es auf dieser Seite eine andere Möglichkeit ein Custom Media Field im Template auszugeben?

VG Björn

Moin Björn,

wenn das noch relevant sein sollte, ja, das geht.
Bei der Referenzierung bei Listen einfach auf das „page“ verzichten. Also statt page.product.translated.customFields.eigenes_feld einfach product.translated.customFields.eigenes_feld verwenden. „page“ wird scheinbar nur auf Produktdetailseiten verwendet.

Beste Grüße