getMediaFiles() in liste

Hallo zusammen,

ich habe eine Frage. Und zwar würde ich gerne in der Listenansicht, also z.B. eine Kategorie, bei allen Produkten die eine Mediendatei (Youtube-Video) haben ein kleines Youtube-Icon einblenden.
In der detail.tpl ist das ja mittels

[{if $oView->getMediaFiles()}].. icon ...[{/if}]

kein Problem nur weiß ich nicht wie ich das in die product.tpl eingebaut bekomme.

Vielleicht kann mir da jemand helfen?!

Keiner eine Idee?

Du suchst das Template?

Welche Shopversion?

Nein, das Template such ich nicht.

Normalerweise wird

$oView->getMediaFiles()

in der details.tpl verwendet. ich möchte das ganze aber auch in der product.tpl verwenden, damit ich in der Artikelübersicht ein youtube-icon einblenden kann sofern ein Produkt ein Youtube-Video enthält.

ah - ok

Du willst den Aufruf auch in der product.tpl verwenden und dort geht das nicht, richtig?
Sorry - das muss ich an die Coder im Forum verweisen…

Genau so ist es :slight_smile:

Versuche mal [{$product->getMediaUrls()}].

Funktioniert ansich schon, nur wird jetzt bei jedem Produkt das Icon angezeigt, egal ob das Produkt ein Medium/Video enthält oder nicht :slight_smile:

Bekommst so wie ich das lese auch ein Object, welches iterierbar (von oxList geerbt) ist.

Dies kannst Du dann mittels foreach auswerten.

Mach mal
[{$product->getMediaUrls()|@print_r}]
dann sollte es klarer sein.

So ganz steig ich bei dem Objekt noch nicht durch. Hatte es jetzt mal so probiert:


[{assign var='media' value=$product->getMediaUrls()}]
[{if $media->oxmediaurls__oxurl->value}] ...

bzw. wenn ich versuche $media->oxmediaurls__oxurl->value auszugeben kommt immer 1. Klappt also auch nicht so ganz.

Versuche mal:


    [{foreach from=$product->getMediaUrls() item=oMedia}]
	[{if $oMedia->oxmediaurls__oxurl->rawValue|@substr:-4=='.pdf'}]
	    <a href="[{$oMedia->oxmediaurls__oxurl->rawValue}]" target="_blank" title="[{$oMedia->oxmediaurls__oxdesc->rawValue}]"><img src="pathToPdfIcon" /></a>
	[{else}]
	    <a href="[{$oMedia->oxmediaurls__oxurl->rawValue}]" target="_blank">[{$oMedia->oxmediaurls__oxdesc->rawValue}]</a>
	[{/if}]
    [{/foreach}]

Dies entsheidet sogar, was mit untersch. Dateiendungen gemacht werden soll.

  • pdf => ein Icon wird angezeigt
  • der Rest => der Titel für das Media-File wird angezeigt

Ist natürlich erweiterbar - ich habe dies zB. mit .mp3 mal so gemacht, dass ein entsprechender Flashplayer erzeugt wird.

BTW:

[QUOTE=patricks;57532]So ganz steig ich bei dem Objekt noch nicht durch. Hatte es jetzt mal so probiert:


[{assign var='media' value=$product->getMediaUrls()}]
[{if $media->oxmediaurls__oxurl->value}] ...

bzw. wenn ich versuche $media->oxmediaurls__oxurl->value auszugeben kommt immer 1. Klappt also auch nicht so ganz.[/QUOTE]

$media ist so ein object (container) von media-Objekten. Jeden Artikel können beliebig viele Media-Objekte zugeordnet werden. ZB: eine komplette MP3-Playlist eines Albums.

Mittels

[{assign var='media' value=$product->getMediaUrls()}]
<textarea>[{$media|@print_r}]</textarea>

sollte es ein wenig klarer sein. Es gibt dort ein “[_aArray : protected] => Array…” - dort sind die einzelnen Objekte drinn.
Doku: http://docu.oxid-esales.com/CE/sourcecodedocumentation/4.4.8.34028/classox_list.html

Ah ok, so langsam steig ich dahinter :slight_smile:

Jetzt klappts wie gewünscht.

Super! Vielen Dank!