voici la boucle qui fonctionne (un peu tiré par les cheveux)
<h2>Produits relatifs</h2>
<div id="category-products">
<div class="products-content">
<ul class="list-unstyled row">
{loop type="product" name="product_list" category="1" order="manual"}
{block name='productinit'}
{assign var="product_id" value=$ID}
{/block}
{loop name="content.product.associated" type="associated_content" product="$ID" }
{if {$CONTENT_ID} == $id_content}
{loop type="product" name="product_show" id="$product_id"}
<li class="item {$colClass|default:"col-md-4"}">
<article class="row" itemscope itemtype="http://schema.org/Product">
<a href="{$URL nofilter}" itemprop="url" tabindex="-1" class="product-image product-quickview overlay">
{loop name="product_thumbnail" type="image" product=$ID width="300" height="300" resize_mode="borders" limit="1"}
<img itemprop="image" src="{$IMAGE_URL nofilter}" class="img-responsive" alt="{$TITLE}">
{/loop}
</a>
<div class="product-info">
<h3 class="name" style="text-align: center"><a href="{$URL nofilter}"><span itemprop="name">{$TITLE}</span></a></h3>
<div class="description" style="text-align: center" itemprop="description">
<p>{$CHAPO}</p>
</div>
</div>
</article>
</li>
{/loop}
{/if}
{/loop}
{/loop}
</ul>
</div>
</div><!-- /#category-products -->