Print the array to see if the data is there:
<pre>{$products|@print_r}</pre>
Make sure you are using .value and not .field_value (as in one of your loops). You could try removing some of the extra code and experiment with the raw loop. Here is a sample I have used:
Code:
{foreach from=$products item=product name=products}
{if $product.extra_fields ne ''}
{foreach from=$product.extra_fields item=extra_field}
{if $extra_field.service_name eq "ISBN" and $extra_field.value}
{assign var="isbn_val" value=$extra_field.value}