Teoretycznie dałoby radę to zrobić.
Musiałbyś w plikach product-list.tpl i ewentualnie jeżeli masz włączone kategorie produktu to w productscategory.tpl dać warunek dla classy blocku.
W pliku product-list.tpl zamiast.
<li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix">
zrobić:
{if ($product.quantity == 0)}<li class="disable_ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix">{/if}
{if ($product.quantity > 0)}<li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix">{/if}
i dla class z disable dać w css display: none.
Nie sprawdzałem ale powinno działać.
Podobnie zrobić z productscategory.tpl i produkt powinien być niewidoczny dla klientów.
Chyba że masz moduł następny poprzedni produkt na karcie produktów taki jak u mnie
http://budowlany24h.pl/delicate-touch/143-delicate-beige-30x50.html to zawsze ktoś może przewijając zobaczyć produkt.