Prämienartikel ausblenden wenn nur "elektronische" Positionen im Warenkorb?

Hallo,

ich verkaufe im Shop auch PDF-Geschenkgutscheine die per eMail verschickt werden. Wenn jemand nur solche Artikel im Warenkorb hat, die gar keinen postalischen Versand erfordern (auch ESD Artikel wären so ein Fall), würde ich gerne die Prämienartikel ausblenden. Denn diese extra per Post abzuschicken, obwohl es ansonsten gar kein Paket an den Kunden gibt, ist unwirtschaftlich.

Vermutlich kann ich das über einen Eingriff in die premiums.tpl lösen, der (so meine erste Idee) ungefähr so aussehen müsste:

{block name='frontend_checkout_premium_slider_item'}
  {if IDENTIFIKATION_NUR_GUTSCHEINE_IM_KORB = "1"}
  {else}
  {$smarty.block.parent}
  {/if}
{/block}

Zur „IDENTIFIKATION_NUR_GUTSCHEINE_IM_KORB“ der betreffenden Produkte ließe sich das Artikel-Attribut „viison_coupon“ (Geschenkgutschein Plugin von @Pickware‍ ) nutzen, wahlweise auch die in der erweiterten SQL-Abfrage des Versandkosten-Moduls geschaffene Variable „allviisoncoupon“. Beides taucht im Checkout in den Session-Daten bei den „sOrderVariables“ auf. Nur wie kann ich das in der premiums.tpl auslesen an der Stelle „IDENTIFIKATION_NUR_GUTSCHEINE_IM_KORB“? 

Wenn nur solche Gutschein-Positionen im Warenkorb sind, dann soll der Prämien-Slider vollständig ausgeblendet werden. Bei allen anderen Produkten und bei Misch-Warenkörben jedoch muss er regulär angezeigt werden. Kann mir da jemand helfen bitte?

Keiner einer Idee?

Wie handhabt ihr das denn mit Prämienartikeln bei Verkauf von ESD-Artikeln?

Hier ist eine mögliche Lösung ohne Plugin.

Ich hab’s so, dass Gutscheine nur per E-Mail versendet werden, der name lautet „E-Mail“, ist aber auch auf die Versand-ID o.ä. anpassbar.

In der cart.tpl habe ich folgenden Code:

{extends file="parent:frontend/checkout/cart.tpl"}

{* Premium products *}
{block name='frontend_checkout_cart_premium'}
                    
{assign var="sperrePraemien" value="-" scope="global"}
{if !$sDispatches}
	{assign var="sperrePraemien" value="sperrePraemien" scope="global"}
{else}
{foreach $sDispatches as $versandOptionen}
  {if $versandOptionen.name|strstr:"E-Mail"}
	{assign var="sperrePraemien" value="sperrePraemien" scope="global"}
  {/if}
{/foreach}	
{/if}
                    
  {if $sperrePraemien == "sperrePraemien"}
  {else}
  {$smarty.block.parent}
  {/if}

{/block}